{
  "id": "60a55d5cb552ceb4de56886d56917ab3",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.27",
  "solcLongVersion": "0.8.27+commit.40a35a09",
  "input": {
    "language": "Solidity",
    "sources": {
      "@openzeppelin/contracts/access/Ownable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    /**\n     * @dev The caller account is not authorized to perform an operation.\n     */\n    error OwnableUnauthorizedAccount(address account);\n\n    /**\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\n     */\n    error OwnableInvalidOwner(address owner);\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n     */\n    constructor(address initialOwner) {\n        if (initialOwner == address(0)) {\n            revert OwnableInvalidOwner(address(0));\n        }\n        _transferOwnership(initialOwner);\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        _checkOwner();\n        _;\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if the sender is not the owner.\n     */\n    function _checkOwner() internal view virtual {\n        if (owner() != _msgSender()) {\n            revert OwnableUnauthorizedAccount(_msgSender());\n        }\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby disabling any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        if (newOwner == address(0)) {\n            revert OwnableInvalidOwner(address(0));\n        }\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n"
      },
      "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC6093.sol)\npragma solidity >=0.8.4;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC20InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC20InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC20InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n    /**\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n     * Used in balance queries.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721InvalidOwner(address owner);\n\n    /**\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721NonexistentToken(uint256 tokenId);\n\n    /**\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param tokenId Identifier number of a token.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC721InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC721InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC721InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC1155InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC1155InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC1155MissingApprovalForAll(address operator, address owner);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC1155InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC1155InvalidOperator(address operator);\n\n    /**\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n     * Used in batch transfers.\n     * @param idsLength Length of the array of token identifiers\n     * @param valuesLength Length of the array of token amounts\n     */\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"
      },
      "@openzeppelin/contracts/interfaces/IERC165.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC165.sol)\n\npragma solidity >=0.4.16;\n\nimport {IERC165} from \"../utils/introspection/IERC165.sol\";\n"
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC1155/IERC1155.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC165} from \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC-1155 compliant contract, as defined in the\n * https://eips.ethereum.org/EIPS/eip-1155[ERC].\n */\ninterface IERC1155 is IERC165 {\n    /**\n     * @dev Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`.\n     */\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\n\n    /**\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n     * transfers.\n     */\n    event TransferBatch(\n        address indexed operator,\n        address indexed from,\n        address indexed to,\n        uint256[] ids,\n        uint256[] values\n    );\n\n    /**\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n     * `approved`.\n     */\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\n\n    /**\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n     *\n     * If an {URI} event was emitted for `id`, the standard\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n     * returned by {IERC1155MetadataURI-uri}.\n     */\n    event URI(string value, uint256 indexed id);\n\n    /**\n     * @dev Returns the value of tokens of token type `id` owned by `account`.\n     */\n    function balanceOf(address account, uint256 id) external view returns (uint256);\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n     *\n     * Requirements:\n     *\n     * - `accounts` and `ids` must have the same length.\n     */\n    function balanceOfBatch(\n        address[] calldata accounts,\n        uint256[] calldata ids\n    ) external view returns (uint256[] memory);\n\n    /**\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n     *\n     * Emits an {ApprovalForAll} event.\n     *\n     * Requirements:\n     *\n     * - `operator` cannot be the zero address.\n     */\n    function setApprovalForAll(address operator, bool approved) external;\n\n    /**\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n     *\n     * See {setApprovalForAll}.\n     */\n    function isApprovedForAll(address account, address operator) external view returns (bool);\n\n    /**\n     * @dev Transfers a `value` amount of tokens of type `id` from `from` to `to`.\n     *\n     * WARNING: This function can potentially allow a reentrancy attack when transferring tokens\n     * to an untrusted contract, when invoking {IERC1155Receiver-onERC1155Received} on the receiver.\n     * Ensure to follow the checks-effects-interactions pattern and consider employing\n     * reentrancy guards when interacting with untrusted contracts.\n     *\n     * Emits a {TransferSingle} event.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n     * - `from` must have a balance of tokens of type `id` of at least `value` amount.\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n     * acceptance magic value.\n     */\n    function safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes calldata data) external;\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n     *\n     * WARNING: This function can potentially allow a reentrancy attack when transferring tokens\n     * to an untrusted contract, when invoking {IERC1155Receiver-onERC1155BatchReceived} on the receiver.\n     * Ensure to follow the checks-effects-interactions pattern and consider employing\n     * reentrancy guards when interacting with untrusted contracts.\n     *\n     * Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments.\n     *\n     * Requirements:\n     *\n     * - `ids` and `values` must have the same length.\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n     * acceptance magic value.\n     */\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external;\n}\n"
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC1155/IERC1155Receiver.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC165} from \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Interface that must be implemented by smart contracts in order to receive\n * ERC-1155 token transfers.\n */\ninterface IERC1155Receiver is IERC165 {\n    /**\n     * @dev Handles the receipt of a single ERC-1155 token type. This function is\n     * called at the end of a `safeTransferFrom` after the balance has been updated.\n     *\n     * NOTE: To accept the transfer, this must return\n     * `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n     * (i.e. 0xf23a6e61, or its own function selector).\n     *\n     * @param operator The address which initiated the transfer (i.e. msg.sender)\n     * @param from The address which previously owned the token\n     * @param id The ID of the token being transferred\n     * @param value The amount of tokens being transferred\n     * @param data Additional data with no specified format\n     * @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed\n     */\n    function onERC1155Received(\n        address operator,\n        address from,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external returns (bytes4);\n\n    /**\n     * @dev Handles the receipt of a multiple ERC-1155 token types. This function\n     * is called at the end of a `safeBatchTransferFrom` after the balances have\n     * been updated.\n     *\n     * NOTE: To accept the transfer(s), this must return\n     * `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n     * (i.e. 0xbc197c81, or its own function selector).\n     *\n     * @param operator The address which initiated the batch transfer (i.e. msg.sender)\n     * @param from The address which previously owned the token\n     * @param ids An array containing ids of each token being transferred (order and length must match values array)\n     * @param values An array containing amounts of each token being transferred (order and length must match ids array)\n     * @param data Additional data with no specified format\n     * @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed\n     */\n    function onERC1155BatchReceived(\n        address operator,\n        address from,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"
      },
      "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n    mapping(address account => uint256) private _balances;\n\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n    uint256 private _totalSupply;\n\n    string private _name;\n    string private _symbol;\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * Both values are immutable: they can only be set once during construction.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the default value returned by this function, unless\n     * it's overridden.\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual returns (uint8) {\n        return 18;\n    }\n\n    /// @inheritdoc IERC20\n    function totalSupply() public view virtual returns (uint256) {\n        return _totalSupply;\n    }\n\n    /// @inheritdoc IERC20\n    function balanceOf(address account) public view virtual returns (uint256) {\n        return _balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - the caller must have a balance of at least `value`.\n     */\n    function transfer(address to, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _transfer(owner, to, value);\n        return true;\n    }\n\n    /// @inheritdoc IERC20\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Skips emitting an {Approval} event indicating an allowance update. This is not\n     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n     *\n     * NOTE: Does not update the allowance if the current allowance\n     * is the maximum `uint256`.\n     *\n     * Requirements:\n     *\n     * - `from` and `to` cannot be the zero address.\n     * - `from` must have a balance of at least `value`.\n     * - the caller must have allowance for ``from``'s tokens of at least\n     * `value`.\n     */\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n        address spender = _msgSender();\n        _spendAllowance(from, spender, value);\n        _transfer(from, to, value);\n        return true;\n    }\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\n     *\n     * This internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _transfer(address from, address to, uint256 value) internal {\n        if (from == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        if (to == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(from, to, value);\n    }\n\n    /**\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n     * this function.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _update(address from, address to, uint256 value) internal virtual {\n        if (from == address(0)) {\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\n            _totalSupply += value;\n        } else {\n            uint256 fromBalance = _balances[from];\n            if (fromBalance < value) {\n                revert ERC20InsufficientBalance(from, fromBalance, value);\n            }\n            unchecked {\n                // Overflow not possible: value <= fromBalance <= totalSupply.\n                _balances[from] = fromBalance - value;\n            }\n        }\n\n        if (to == address(0)) {\n            unchecked {\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n                _totalSupply -= value;\n            }\n        } else {\n            unchecked {\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n                _balances[to] += value;\n            }\n        }\n\n        emit Transfer(from, to, value);\n    }\n\n    /**\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n     * Relies on the `_update` mechanism\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _mint(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(address(0), account, value);\n    }\n\n    /**\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n     * Relies on the `_update` mechanism.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead\n     */\n    function _burn(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        _update(account, address(0), value);\n    }\n\n    /**\n     * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     *\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n     */\n    function _approve(address owner, address spender, uint256 value) internal {\n        _approve(owner, spender, value, true);\n    }\n\n    /**\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n     *\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n     * `Approval` event during `transferFrom` operations.\n     *\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n     * true using the following override:\n     *\n     * ```solidity\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     *     super._approve(owner, spender, value, true);\n     * }\n     * ```\n     *\n     * Requirements are the same as {_approve}.\n     */\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n        if (owner == address(0)) {\n            revert ERC20InvalidApprover(address(0));\n        }\n        if (spender == address(0)) {\n            revert ERC20InvalidSpender(address(0));\n        }\n        _allowances[owner][spender] = value;\n        if (emitEvent) {\n            emit Approval(owner, spender, value);\n        }\n    }\n\n    /**\n     * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n     *\n     * Does not update the allowance value in case of infinite allowance.\n     * Revert if not enough allowance is available.\n     *\n     * Does not emit an {Approval} event.\n     */\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance < type(uint256).max) {\n            if (currentAllowance < value) {\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n            }\n            unchecked {\n                _approve(owner, spender, currentAllowance - value, false);\n            }\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/ERC20Burnable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ERC20} from \"../ERC20.sol\";\nimport {Context} from \"../../../utils/Context.sol\";\n\n/**\n * @dev Extension of {ERC20} that allows token holders to destroy both their own\n * tokens and those that they have an allowance for, in a way that can be\n * recognized off-chain (via event analysis).\n */\nabstract contract ERC20Burnable is Context, ERC20 {\n    /**\n     * @dev Destroys a `value` amount of tokens from the caller.\n     *\n     * See {ERC20-_burn}.\n     */\n    function burn(uint256 value) public virtual {\n        _burn(_msgSender(), value);\n    }\n\n    /**\n     * @dev Destroys a `value` amount of tokens from `account`, deducting from\n     * the caller's allowance.\n     *\n     * See {ERC20-_burn} and {ERC20-allowance}.\n     *\n     * Requirements:\n     *\n     * - the caller must have allowance for ``accounts``'s tokens of at least\n     * `value`.\n     */\n    function burnFrom(address account, uint256 value) public virtual {\n        _spendAllowance(account, _msgSender(), value);\n        _burn(account, value);\n    }\n}\n"
      },
      "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/ERC20Pausable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ERC20} from \"../ERC20.sol\";\nimport {Pausable} from \"../../../utils/Pausable.sol\";\n\n/**\n * @dev ERC-20 token with pausable token transfers, minting and burning.\n *\n * Useful for scenarios such as preventing trades until the end of an evaluation\n * period, or having an emergency switch for freezing all token transfers in the\n * event of a large bug.\n *\n * IMPORTANT: This contract does not include public pause and unpause functions. In\n * addition to inheriting this contract, you must define both functions, invoking the\n * {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate\n * access control, e.g. using {AccessControl} or {Ownable}. Not doing so will\n * make the contract pause mechanism of the contract unreachable, and thus unusable.\n */\nabstract contract ERC20Pausable is ERC20, Pausable {\n    /**\n     * @dev See {ERC20-_update}.\n     *\n     * Requirements:\n     *\n     * - the contract must not be paused.\n     */\n    function _update(address from, address to, uint256 value) internal virtual override whenNotPaused {\n        super._update(from, to, value);\n    }\n}\n"
      },
      "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the decimals places of the token.\n     */\n    function decimals() external view returns (uint8);\n}\n"
      },
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n\n    /**\n     * @dev Returns the value of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the value of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\n     * allowance mechanism. `value` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"
      },
      "@openzeppelin/contracts/utils/Address.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\nimport {Errors} from \"./Errors.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev There's no code at `target` (it is not a contract).\n     */\n    error AddressEmptyCode(address target);\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        if (address(this).balance < amount) {\n            revert Errors.InsufficientBalance(address(this).balance, amount);\n        }\n\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\"\");\n        if (!success) {\n            _revert(returndata);\n        }\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason or custom error, it is bubbled\n     * up by this function (like regular Solidity function calls). However, if\n     * the call reverted with no returned reason, this function reverts with a\n     * {Errors.FailedCall} error.\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        if (address(this).balance < value) {\n            revert Errors.InsufficientBalance(address(this).balance, value);\n        }\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResultFromTarget(target, success, returndata);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResultFromTarget(target, success, returndata);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResultFromTarget(target, success, returndata);\n    }\n\n    /**\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n     * was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n     * of an unsuccessful call.\n     */\n    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata\n    ) internal view returns (bytes memory) {\n        if (!success) {\n            _revert(returndata);\n        } else {\n            // only check if target is a contract if the call was successful and the return data is empty\n            // otherwise we already know that it was a contract\n            if (returndata.length == 0 && target.code.length == 0) {\n                revert AddressEmptyCode(target);\n            }\n            return returndata;\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n     * revert reason or with a default {Errors.FailedCall} error.\n     */\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n        if (!success) {\n            _revert(returndata);\n        } else {\n            return returndata;\n        }\n    }\n\n    /**\n     * @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}.\n     */\n    function _revert(bytes memory returndata) private pure {\n        // Look for revert reason and bubble it up if present\n        if (returndata.length > 0) {\n            // The easiest way to bubble the revert reason is using memory via assembly\n            assembly (\"memory-safe\") {\n                revert(add(returndata, 0x20), mload(returndata))\n            }\n        } else {\n            revert Errors.FailedCall();\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/Errors.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of common custom errors used in multiple contracts\n *\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n * It is recommended to avoid relying on the error API for critical functionality.\n *\n * _Available since v5.1._\n */\nlibrary Errors {\n    /**\n     * @dev The ETH balance of the account is not enough to perform the operation.\n     */\n    error InsufficientBalance(uint256 balance, uint256 needed);\n\n    /**\n     * @dev A call to an address target failed. The target may have reverted.\n     */\n    error FailedCall();\n\n    /**\n     * @dev The deployment failed.\n     */\n    error FailedDeployment();\n\n    /**\n     * @dev A necessary precompile is missing.\n     */\n    error MissingPrecompile(address);\n}\n"
      },
      "@openzeppelin/contracts/utils/introspection/ERC165.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165 is IERC165 {\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n        return interfaceId == type(IERC165).interfaceId;\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/introspection/IERC165.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/IERC165.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"
      },
      "@openzeppelin/contracts/utils/math/Math.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.20;\n\nimport {Panic} from \"../Panic.sol\";\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n    enum Rounding {\n        Floor, // Toward negative infinity\n        Ceil, // Toward positive infinity\n        Trunc, // Toward zero\n        Expand // Away from zero\n    }\n\n    /**\n     * @dev Return the 512-bit addition of two uint256.\n     *\n     * The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low.\n     */\n    function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n        assembly (\"memory-safe\") {\n            low := add(a, b)\n            high := lt(low, a)\n        }\n    }\n\n    /**\n     * @dev Return the 512-bit multiplication of two uint256.\n     *\n     * The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low.\n     */\n    function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n        // 512-bit multiply [high low] = x * y. Compute the product mod 2²⁵⁶ and mod 2²⁵⁶ - 1, then use\n        // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n        // variables such that product = high * 2²⁵⁶ + low.\n        assembly (\"memory-safe\") {\n            let mm := mulmod(a, b, not(0))\n            low := mul(a, b)\n            high := sub(sub(mm, low), lt(mm, low))\n        }\n    }\n\n    /**\n     * @dev Returns the addition of two unsigned integers, with a success flag (no overflow).\n     */\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            uint256 c = a + b;\n            success = c >= a;\n            result = c * SafeCast.toUint(success);\n        }\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow).\n     */\n    function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            uint256 c = a - b;\n            success = c <= a;\n            result = c * SafeCast.toUint(success);\n        }\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow).\n     */\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            uint256 c = a * b;\n            assembly (\"memory-safe\") {\n                // Only true when the multiplication doesn't overflow\n                // (c / a == b) || (a == 0)\n                success := or(eq(div(c, a), b), iszero(a))\n            }\n            // equivalent to: success ? c : 0\n            result = c * SafeCast.toUint(success);\n        }\n    }\n\n    /**\n     * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\n     */\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            success = b > 0;\n            assembly (\"memory-safe\") {\n                // The `DIV` opcode returns zero when the denominator is 0.\n                result := div(a, b)\n            }\n        }\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\n     */\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            success = b > 0;\n            assembly (\"memory-safe\") {\n                // The `MOD` opcode returns zero when the denominator is 0.\n                result := mod(a, b)\n            }\n        }\n    }\n\n    /**\n     * @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing.\n     */\n    function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) {\n        (bool success, uint256 result) = tryAdd(a, b);\n        return ternary(success, result, type(uint256).max);\n    }\n\n    /**\n     * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing.\n     */\n    function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) {\n        (, uint256 result) = trySub(a, b);\n        return result;\n    }\n\n    /**\n     * @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing.\n     */\n    function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) {\n        (bool success, uint256 result) = tryMul(a, b);\n        return ternary(success, result, type(uint256).max);\n    }\n\n    /**\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n     *\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n     * one branch when needed, making this function more expensive.\n     */\n    function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\n        unchecked {\n            // branchless ternary works because:\n            // b ^ (a ^ b) == a\n            // b ^ 0 == b\n            return b ^ ((a ^ b) * SafeCast.toUint(condition));\n        }\n    }\n\n    /**\n     * @dev Returns the largest of two numbers.\n     */\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\n        return ternary(a > b, a, b);\n    }\n\n    /**\n     * @dev Returns the smallest of two numbers.\n     */\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\n        return ternary(a < b, a, b);\n    }\n\n    /**\n     * @dev Returns the average of two numbers. The result is rounded towards\n     * zero.\n     */\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\n        // (a + b) / 2 can overflow.\n        return (a & b) + (a ^ b) / 2;\n    }\n\n    /**\n     * @dev Returns the ceiling of the division of two numbers.\n     *\n     * This differs from standard division with `/` in that it rounds towards infinity instead\n     * of rounding towards zero.\n     */\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n        if (b == 0) {\n            // Guarantee the same behavior as in a regular Solidity division.\n            Panic.panic(Panic.DIVISION_BY_ZERO);\n        }\n\n        // The following calculation ensures accurate ceiling division without overflow.\n        // Since a is non-zero, (a - 1) / b will not overflow.\n        // The largest possible result occurs when (a - 1) / b is type(uint256).max,\n        // but the largest value we can obtain is type(uint256).max - 1, which happens\n        // when a = type(uint256).max and b = 1.\n        unchecked {\n            return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\n        }\n    }\n\n    /**\n     * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n     * denominator == 0.\n     *\n     * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n     * Uniswap Labs also under MIT license.\n     */\n    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n        unchecked {\n            (uint256 high, uint256 low) = mul512(x, y);\n\n            // Handle non-overflow cases, 256 by 256 division.\n            if (high == 0) {\n                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n                // The surrounding unchecked block does not change this fact.\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n                return low / denominator;\n            }\n\n            // Make sure the result is less than 2²⁵⁶. Also prevents denominator == 0.\n            if (denominator <= high) {\n                Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\n            }\n\n            ///////////////////////////////////////////////\n            // 512 by 256 division.\n            ///////////////////////////////////////////////\n\n            // Make division exact by subtracting the remainder from [high low].\n            uint256 remainder;\n            assembly (\"memory-safe\") {\n                // Compute remainder using mulmod.\n                remainder := mulmod(x, y, denominator)\n\n                // Subtract 256 bit number from 512 bit number.\n                high := sub(high, gt(remainder, low))\n                low := sub(low, remainder)\n            }\n\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\n            // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\n\n            uint256 twos = denominator & (0 - denominator);\n            assembly (\"memory-safe\") {\n                // Divide denominator by twos.\n                denominator := div(denominator, twos)\n\n                // Divide [high low] by twos.\n                low := div(low, twos)\n\n                // Flip twos such that it is 2²⁵⁶ / twos. If twos is zero, then it becomes one.\n                twos := add(div(sub(0, twos), twos), 1)\n            }\n\n            // Shift in bits from high into low.\n            low |= high * twos;\n\n            // Invert denominator mod 2²⁵⁶. Now that denominator is an odd number, it has an inverse modulo 2²⁵⁶ such\n            // that denominator * inv ≡ 1 mod 2²⁵⁶. Compute the inverse by starting with a seed that is correct for\n            // four bits. That is, denominator * inv ≡ 1 mod 2⁴.\n            uint256 inverse = (3 * denominator) ^ 2;\n\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\n            // works in modular arithmetic, doubling the correct bits in each step.\n            inverse *= 2 - denominator * inverse; // inverse mod 2⁸\n            inverse *= 2 - denominator * inverse; // inverse mod 2¹⁶\n            inverse *= 2 - denominator * inverse; // inverse mod 2³²\n            inverse *= 2 - denominator * inverse; // inverse mod 2⁶⁴\n            inverse *= 2 - denominator * inverse; // inverse mod 2¹²⁸\n            inverse *= 2 - denominator * inverse; // inverse mod 2²⁵⁶\n\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n            // This will give us the correct result modulo 2²⁵⁶. Since the preconditions guarantee that the outcome is\n            // less than 2²⁵⁶, this is the final result. We don't need to compute the high bits of the result and high\n            // is no longer required.\n            result = low * inverse;\n            return result;\n        }\n    }\n\n    /**\n     * @dev Calculates x * y / denominator with full precision, following the selected rounding direction.\n     */\n    function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n        return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\n    }\n\n    /**\n     * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256.\n     */\n    function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) {\n        unchecked {\n            (uint256 high, uint256 low) = mul512(x, y);\n            if (high >= 1 << n) {\n                Panic.panic(Panic.UNDER_OVERFLOW);\n            }\n            return (high << (256 - n)) | (low >> n);\n        }\n    }\n\n    /**\n     * @dev Calculates x * y >> n with full precision, following the selected rounding direction.\n     */\n    function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) {\n        return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0);\n    }\n\n    /**\n     * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n     *\n     * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n     * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n     *\n     * If the input value is not inversible, 0 is returned.\n     *\n     * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n     * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\n     */\n    function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\n        unchecked {\n            if (n == 0) return 0;\n\n            // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\n            // Used to compute integers x and y such that: ax + ny = gcd(a, n).\n            // When the gcd is 1, then the inverse of a modulo n exists and it's x.\n            // ax + ny = 1\n            // ax = 1 + (-y)n\n            // ax ≡ 1 (mod n) # x is the inverse of a modulo n\n\n            // If the remainder is 0 the gcd is n right away.\n            uint256 remainder = a % n;\n            uint256 gcd = n;\n\n            // Therefore the initial coefficients are:\n            // ax + ny = gcd(a, n) = n\n            // 0a + 1n = n\n            int256 x = 0;\n            int256 y = 1;\n\n            while (remainder != 0) {\n                uint256 quotient = gcd / remainder;\n\n                (gcd, remainder) = (\n                    // The old remainder is the next gcd to try.\n                    remainder,\n                    // Compute the next remainder.\n                    // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\n                    // where gcd is at most n (capped to type(uint256).max)\n                    gcd - remainder * quotient\n                );\n\n                (x, y) = (\n                    // Increment the coefficient of a.\n                    y,\n                    // Decrement the coefficient of n.\n                    // Can overflow, but the result is casted to uint256 so that the\n                    // next value of y is \"wrapped around\" to a value between 0 and n - 1.\n                    x - y * int256(quotient)\n                );\n            }\n\n            if (gcd != 1) return 0; // No inverse exists.\n            return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\n        }\n    }\n\n    /**\n     * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n     *\n     * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n     * prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n     * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n     *\n     * NOTE: this function does NOT check that `p` is a prime greater than `2`.\n     */\n    function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\n        unchecked {\n            return Math.modExp(a, p - 2, p);\n        }\n    }\n\n    /**\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n     *\n     * Requirements:\n     * - modulus can't be zero\n     * - underlying staticcall to precompile must succeed\n     *\n     * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n     * sure the chain you're using it on supports the precompiled contract for modular exponentiation\n     * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n     * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n     * interpreted as 0.\n     */\n    function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\n        (bool success, uint256 result) = tryModExp(b, e, m);\n        if (!success) {\n            Panic.panic(Panic.DIVISION_BY_ZERO);\n        }\n        return result;\n    }\n\n    /**\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n     * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n     * to operate modulo 0 or if the underlying precompile reverted.\n     *\n     * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n     * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n     * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n     * of a revert, but the result may be incorrectly interpreted as 0.\n     */\n    function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\n        if (m == 0) return (false, 0);\n        assembly (\"memory-safe\") {\n            let ptr := mload(0x40)\n            // | Offset    | Content    | Content (Hex)                                                      |\n            // |-----------|------------|--------------------------------------------------------------------|\n            // | 0x00:0x1f | size of b  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n            // | 0x20:0x3f | size of e  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n            // | 0x40:0x5f | size of m  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n            // | 0x60:0x7f | value of b | 0x<.............................................................b> |\n            // | 0x80:0x9f | value of e | 0x<.............................................................e> |\n            // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\n            mstore(ptr, 0x20)\n            mstore(add(ptr, 0x20), 0x20)\n            mstore(add(ptr, 0x40), 0x20)\n            mstore(add(ptr, 0x60), b)\n            mstore(add(ptr, 0x80), e)\n            mstore(add(ptr, 0xa0), m)\n\n            // Given the result < m, it's guaranteed to fit in 32 bytes,\n            // so we can use the memory scratch space located at offset 0.\n            success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\n            result := mload(0x00)\n        }\n    }\n\n    /**\n     * @dev Variant of {modExp} that supports inputs of arbitrary length.\n     */\n    function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\n        (bool success, bytes memory result) = tryModExp(b, e, m);\n        if (!success) {\n            Panic.panic(Panic.DIVISION_BY_ZERO);\n        }\n        return result;\n    }\n\n    /**\n     * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\n     */\n    function tryModExp(\n        bytes memory b,\n        bytes memory e,\n        bytes memory m\n    ) internal view returns (bool success, bytes memory result) {\n        if (_zeroBytes(m)) return (false, new bytes(0));\n\n        uint256 mLen = m.length;\n\n        // Encode call args in result and move the free memory pointer\n        result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\n\n        assembly (\"memory-safe\") {\n            let dataPtr := add(result, 0x20)\n            // Write result on top of args to avoid allocating extra memory.\n            success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\n            // Overwrite the length.\n            // result.length > returndatasize() is guaranteed because returndatasize() == m.length\n            mstore(result, mLen)\n            // Set the memory pointer after the returned data.\n            mstore(0x40, add(dataPtr, mLen))\n        }\n    }\n\n    /**\n     * @dev Returns whether the provided byte array is zero.\n     */\n    function _zeroBytes(bytes memory byteArray) private pure returns (bool) {\n        for (uint256 i = 0; i < byteArray.length; ++i) {\n            if (byteArray[i] != 0) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    /**\n     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n     * towards zero.\n     *\n     * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n     * using integer operations.\n     */\n    function sqrt(uint256 a) internal pure returns (uint256) {\n        unchecked {\n            // Take care of easy edge cases when a == 0 or a == 1\n            if (a <= 1) {\n                return a;\n            }\n\n            // In this function, we use Newton's method to get a root of `f(x) := x² - a`. It involves building a\n            // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\n            // the current value as `ε_n = | x_n - sqrt(a) |`.\n            //\n            // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\n            // of the target. (i.e. `2**(e-1) ≤ sqrt(a) < 2**e`). We know that `e ≤ 128` because `(2¹²⁸)² = 2²⁵⁶` is\n            // bigger than any uint256.\n            //\n            // By noticing that\n            // `2**(e-1) ≤ sqrt(a) < 2**e → (2**(e-1))² ≤ a < (2**e)² → 2**(2*e-2) ≤ a < 2**(2*e)`\n            // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\n            // to the msb function.\n            uint256 aa = a;\n            uint256 xn = 1;\n\n            if (aa >= (1 << 128)) {\n                aa >>= 128;\n                xn <<= 64;\n            }\n            if (aa >= (1 << 64)) {\n                aa >>= 64;\n                xn <<= 32;\n            }\n            if (aa >= (1 << 32)) {\n                aa >>= 32;\n                xn <<= 16;\n            }\n            if (aa >= (1 << 16)) {\n                aa >>= 16;\n                xn <<= 8;\n            }\n            if (aa >= (1 << 8)) {\n                aa >>= 8;\n                xn <<= 4;\n            }\n            if (aa >= (1 << 4)) {\n                aa >>= 4;\n                xn <<= 2;\n            }\n            if (aa >= (1 << 2)) {\n                xn <<= 1;\n            }\n\n            // We now have x_n such that `x_n = 2**(e-1) ≤ sqrt(a) < 2**e = 2 * x_n`. This implies ε_n ≤ 2**(e-1).\n            //\n            // We can refine our estimation by noticing that the middle of that interval minimizes the error.\n            // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to ε_n ≤ 2**(e-2).\n            // This is going to be our x_0 (and ε_0)\n            xn = (3 * xn) >> 1; // ε_0 := | x_0 - sqrt(a) | ≤ 2**(e-2)\n\n            // From here, Newton's method give us:\n            // x_{n+1} = (x_n + a / x_n) / 2\n            //\n            // One should note that:\n            // x_{n+1}² - a = ((x_n + a / x_n) / 2)² - a\n            //              = ((x_n² + a) / (2 * x_n))² - a\n            //              = (x_n⁴ + 2 * a * x_n² + a²) / (4 * x_n²) - a\n            //              = (x_n⁴ + 2 * a * x_n² + a² - 4 * a * x_n²) / (4 * x_n²)\n            //              = (x_n⁴ - 2 * a * x_n² + a²) / (4 * x_n²)\n            //              = (x_n² - a)² / (2 * x_n)²\n            //              = ((x_n² - a) / (2 * x_n))²\n            //              ≥ 0\n            // Which proves that for all n ≥ 1, sqrt(a) ≤ x_n\n            //\n            // This gives us the proof of quadratic convergence of the sequence:\n            // ε_{n+1} = | x_{n+1} - sqrt(a) |\n            //         = | (x_n + a / x_n) / 2 - sqrt(a) |\n            //         = | (x_n² + a - 2*x_n*sqrt(a)) / (2 * x_n) |\n            //         = | (x_n - sqrt(a))² / (2 * x_n) |\n            //         = | ε_n² / (2 * x_n) |\n            //         = ε_n² / | (2 * x_n) |\n            //\n            // For the first iteration, we have a special case where x_0 is known:\n            // ε_1 = ε_0² / | (2 * x_0) |\n            //     ≤ (2**(e-2))² / (2 * (2**(e-1) + 2**(e-2)))\n            //     ≤ 2**(2*e-4) / (3 * 2**(e-1))\n            //     ≤ 2**(e-3) / 3\n            //     ≤ 2**(e-3-log2(3))\n            //     ≤ 2**(e-4.5)\n            //\n            // For the following iterations, we use the fact that, 2**(e-1) ≤ sqrt(a) ≤ x_n:\n            // ε_{n+1} = ε_n² / | (2 * x_n) |\n            //         ≤ (2**(e-k))² / (2 * 2**(e-1))\n            //         ≤ 2**(2*e-2*k) / 2**e\n            //         ≤ 2**(e-2*k)\n            xn = (xn + a / xn) >> 1; // ε_1 := | x_1 - sqrt(a) | ≤ 2**(e-4.5)  -- special case, see above\n            xn = (xn + a / xn) >> 1; // ε_2 := | x_2 - sqrt(a) | ≤ 2**(e-9)    -- general case with k = 4.5\n            xn = (xn + a / xn) >> 1; // ε_3 := | x_3 - sqrt(a) | ≤ 2**(e-18)   -- general case with k = 9\n            xn = (xn + a / xn) >> 1; // ε_4 := | x_4 - sqrt(a) | ≤ 2**(e-36)   -- general case with k = 18\n            xn = (xn + a / xn) >> 1; // ε_5 := | x_5 - sqrt(a) | ≤ 2**(e-72)   -- general case with k = 36\n            xn = (xn + a / xn) >> 1; // ε_6 := | x_6 - sqrt(a) | ≤ 2**(e-144)  -- general case with k = 72\n\n            // Because e ≤ 128 (as discussed during the first estimation phase), we know have reached a precision\n            // ε_6 ≤ 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\n            // sqrt(a) or sqrt(a) + 1.\n            return xn - SafeCast.toUint(xn > a / xn);\n        }\n    }\n\n    /**\n     * @dev Calculates sqrt(a), following the selected rounding direction.\n     */\n    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = sqrt(a);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 2 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     */\n    function log2(uint256 x) internal pure returns (uint256 r) {\n        // If value has upper 128 bits set, log2 result is at least 128\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n        // If upper 64 bits of 128-bit half set, add 64 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n        // If upper 32 bits of 64-bit half set, add 32 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n        // If upper 16 bits of 32-bit half set, add 16 to result\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n        // If upper 8 bits of 16-bit half set, add 8 to result\n        r |= SafeCast.toUint((x >> r) > 0xff) << 3;\n        // If upper 4 bits of 8-bit half set, add 4 to result\n        r |= SafeCast.toUint((x >> r) > 0xf) << 2;\n\n        // Shifts value right by the current result and use it as an index into this lookup table:\n        //\n        // | x (4 bits) |  index  | table[index] = MSB position |\n        // |------------|---------|-----------------------------|\n        // |    0000    |    0    |        table[0] = 0         |\n        // |    0001    |    1    |        table[1] = 0         |\n        // |    0010    |    2    |        table[2] = 1         |\n        // |    0011    |    3    |        table[3] = 1         |\n        // |    0100    |    4    |        table[4] = 2         |\n        // |    0101    |    5    |        table[5] = 2         |\n        // |    0110    |    6    |        table[6] = 2         |\n        // |    0111    |    7    |        table[7] = 2         |\n        // |    1000    |    8    |        table[8] = 3         |\n        // |    1001    |    9    |        table[9] = 3         |\n        // |    1010    |   10    |        table[10] = 3        |\n        // |    1011    |   11    |        table[11] = 3        |\n        // |    1100    |   12    |        table[12] = 3        |\n        // |    1101    |   13    |        table[13] = 3        |\n        // |    1110    |   14    |        table[14] = 3        |\n        // |    1111    |   15    |        table[15] = 3        |\n        //\n        // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes.\n        assembly (\"memory-safe\") {\n            r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000))\n        }\n    }\n\n    /**\n     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log2(value);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 10 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     */\n    function log10(uint256 value) internal pure returns (uint256) {\n        uint256 result = 0;\n        unchecked {\n            if (value >= 10 ** 64) {\n                value /= 10 ** 64;\n                result += 64;\n            }\n            if (value >= 10 ** 32) {\n                value /= 10 ** 32;\n                result += 32;\n            }\n            if (value >= 10 ** 16) {\n                value /= 10 ** 16;\n                result += 16;\n            }\n            if (value >= 10 ** 8) {\n                value /= 10 ** 8;\n                result += 8;\n            }\n            if (value >= 10 ** 4) {\n                value /= 10 ** 4;\n                result += 4;\n            }\n            if (value >= 10 ** 2) {\n                value /= 10 ** 2;\n                result += 2;\n            }\n            if (value >= 10 ** 1) {\n                result += 1;\n            }\n        }\n        return result;\n    }\n\n    /**\n     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log10(value);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 256 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     *\n     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n     */\n    function log256(uint256 x) internal pure returns (uint256 r) {\n        // If value has upper 128 bits set, log2 result is at least 128\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n        // If upper 64 bits of 128-bit half set, add 64 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n        // If upper 32 bits of 64-bit half set, add 32 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n        // If upper 16 bits of 32-bit half set, add 16 to result\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n        // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8\n        return (r >> 3) | SafeCast.toUint((x >> r) > 0xff);\n    }\n\n    /**\n     * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log256(value);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\n        }\n    }\n\n    /**\n     * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\n     */\n    function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\n        return uint8(rounding) % 2 == 1;\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/math/SafeCast.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeCast {\n    /**\n     * @dev Value doesn't fit in an uint of `bits` size.\n     */\n    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\n\n    /**\n     * @dev An int value doesn't fit in an uint of `bits` size.\n     */\n    error SafeCastOverflowedIntToUint(int256 value);\n\n    /**\n     * @dev Value doesn't fit in an int of `bits` size.\n     */\n    error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\n\n    /**\n     * @dev An uint value doesn't fit in an int of `bits` size.\n     */\n    error SafeCastOverflowedUintToInt(uint256 value);\n\n    /**\n     * @dev Returns the downcasted uint248 from uint256, reverting on\n     * overflow (when the input is greater than largest uint248).\n     *\n     * Counterpart to Solidity's `uint248` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 248 bits\n     */\n    function toUint248(uint256 value) internal pure returns (uint248) {\n        if (value > type(uint248).max) {\n            revert SafeCastOverflowedUintDowncast(248, value);\n        }\n        return uint248(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint240 from uint256, reverting on\n     * overflow (when the input is greater than largest uint240).\n     *\n     * Counterpart to Solidity's `uint240` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 240 bits\n     */\n    function toUint240(uint256 value) internal pure returns (uint240) {\n        if (value > type(uint240).max) {\n            revert SafeCastOverflowedUintDowncast(240, value);\n        }\n        return uint240(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint232 from uint256, reverting on\n     * overflow (when the input is greater than largest uint232).\n     *\n     * Counterpart to Solidity's `uint232` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 232 bits\n     */\n    function toUint232(uint256 value) internal pure returns (uint232) {\n        if (value > type(uint232).max) {\n            revert SafeCastOverflowedUintDowncast(232, value);\n        }\n        return uint232(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint224 from uint256, reverting on\n     * overflow (when the input is greater than largest uint224).\n     *\n     * Counterpart to Solidity's `uint224` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 224 bits\n     */\n    function toUint224(uint256 value) internal pure returns (uint224) {\n        if (value > type(uint224).max) {\n            revert SafeCastOverflowedUintDowncast(224, value);\n        }\n        return uint224(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint216 from uint256, reverting on\n     * overflow (when the input is greater than largest uint216).\n     *\n     * Counterpart to Solidity's `uint216` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 216 bits\n     */\n    function toUint216(uint256 value) internal pure returns (uint216) {\n        if (value > type(uint216).max) {\n            revert SafeCastOverflowedUintDowncast(216, value);\n        }\n        return uint216(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint208 from uint256, reverting on\n     * overflow (when the input is greater than largest uint208).\n     *\n     * Counterpart to Solidity's `uint208` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 208 bits\n     */\n    function toUint208(uint256 value) internal pure returns (uint208) {\n        if (value > type(uint208).max) {\n            revert SafeCastOverflowedUintDowncast(208, value);\n        }\n        return uint208(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint200 from uint256, reverting on\n     * overflow (when the input is greater than largest uint200).\n     *\n     * Counterpart to Solidity's `uint200` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 200 bits\n     */\n    function toUint200(uint256 value) internal pure returns (uint200) {\n        if (value > type(uint200).max) {\n            revert SafeCastOverflowedUintDowncast(200, value);\n        }\n        return uint200(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint192 from uint256, reverting on\n     * overflow (when the input is greater than largest uint192).\n     *\n     * Counterpart to Solidity's `uint192` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 192 bits\n     */\n    function toUint192(uint256 value) internal pure returns (uint192) {\n        if (value > type(uint192).max) {\n            revert SafeCastOverflowedUintDowncast(192, value);\n        }\n        return uint192(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint184 from uint256, reverting on\n     * overflow (when the input is greater than largest uint184).\n     *\n     * Counterpart to Solidity's `uint184` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 184 bits\n     */\n    function toUint184(uint256 value) internal pure returns (uint184) {\n        if (value > type(uint184).max) {\n            revert SafeCastOverflowedUintDowncast(184, value);\n        }\n        return uint184(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint176 from uint256, reverting on\n     * overflow (when the input is greater than largest uint176).\n     *\n     * Counterpart to Solidity's `uint176` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 176 bits\n     */\n    function toUint176(uint256 value) internal pure returns (uint176) {\n        if (value > type(uint176).max) {\n            revert SafeCastOverflowedUintDowncast(176, value);\n        }\n        return uint176(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint168 from uint256, reverting on\n     * overflow (when the input is greater than largest uint168).\n     *\n     * Counterpart to Solidity's `uint168` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 168 bits\n     */\n    function toUint168(uint256 value) internal pure returns (uint168) {\n        if (value > type(uint168).max) {\n            revert SafeCastOverflowedUintDowncast(168, value);\n        }\n        return uint168(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint160 from uint256, reverting on\n     * overflow (when the input is greater than largest uint160).\n     *\n     * Counterpart to Solidity's `uint160` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 160 bits\n     */\n    function toUint160(uint256 value) internal pure returns (uint160) {\n        if (value > type(uint160).max) {\n            revert SafeCastOverflowedUintDowncast(160, value);\n        }\n        return uint160(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint152 from uint256, reverting on\n     * overflow (when the input is greater than largest uint152).\n     *\n     * Counterpart to Solidity's `uint152` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 152 bits\n     */\n    function toUint152(uint256 value) internal pure returns (uint152) {\n        if (value > type(uint152).max) {\n            revert SafeCastOverflowedUintDowncast(152, value);\n        }\n        return uint152(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint144 from uint256, reverting on\n     * overflow (when the input is greater than largest uint144).\n     *\n     * Counterpart to Solidity's `uint144` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 144 bits\n     */\n    function toUint144(uint256 value) internal pure returns (uint144) {\n        if (value > type(uint144).max) {\n            revert SafeCastOverflowedUintDowncast(144, value);\n        }\n        return uint144(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint136 from uint256, reverting on\n     * overflow (when the input is greater than largest uint136).\n     *\n     * Counterpart to Solidity's `uint136` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 136 bits\n     */\n    function toUint136(uint256 value) internal pure returns (uint136) {\n        if (value > type(uint136).max) {\n            revert SafeCastOverflowedUintDowncast(136, value);\n        }\n        return uint136(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint128 from uint256, reverting on\n     * overflow (when the input is greater than largest uint128).\n     *\n     * Counterpart to Solidity's `uint128` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 128 bits\n     */\n    function toUint128(uint256 value) internal pure returns (uint128) {\n        if (value > type(uint128).max) {\n            revert SafeCastOverflowedUintDowncast(128, value);\n        }\n        return uint128(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint120 from uint256, reverting on\n     * overflow (when the input is greater than largest uint120).\n     *\n     * Counterpart to Solidity's `uint120` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 120 bits\n     */\n    function toUint120(uint256 value) internal pure returns (uint120) {\n        if (value > type(uint120).max) {\n            revert SafeCastOverflowedUintDowncast(120, value);\n        }\n        return uint120(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint112 from uint256, reverting on\n     * overflow (when the input is greater than largest uint112).\n     *\n     * Counterpart to Solidity's `uint112` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 112 bits\n     */\n    function toUint112(uint256 value) internal pure returns (uint112) {\n        if (value > type(uint112).max) {\n            revert SafeCastOverflowedUintDowncast(112, value);\n        }\n        return uint112(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint104 from uint256, reverting on\n     * overflow (when the input is greater than largest uint104).\n     *\n     * Counterpart to Solidity's `uint104` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 104 bits\n     */\n    function toUint104(uint256 value) internal pure returns (uint104) {\n        if (value > type(uint104).max) {\n            revert SafeCastOverflowedUintDowncast(104, value);\n        }\n        return uint104(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint96 from uint256, reverting on\n     * overflow (when the input is greater than largest uint96).\n     *\n     * Counterpart to Solidity's `uint96` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 96 bits\n     */\n    function toUint96(uint256 value) internal pure returns (uint96) {\n        if (value > type(uint96).max) {\n            revert SafeCastOverflowedUintDowncast(96, value);\n        }\n        return uint96(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint88 from uint256, reverting on\n     * overflow (when the input is greater than largest uint88).\n     *\n     * Counterpart to Solidity's `uint88` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 88 bits\n     */\n    function toUint88(uint256 value) internal pure returns (uint88) {\n        if (value > type(uint88).max) {\n            revert SafeCastOverflowedUintDowncast(88, value);\n        }\n        return uint88(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint80 from uint256, reverting on\n     * overflow (when the input is greater than largest uint80).\n     *\n     * Counterpart to Solidity's `uint80` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 80 bits\n     */\n    function toUint80(uint256 value) internal pure returns (uint80) {\n        if (value > type(uint80).max) {\n            revert SafeCastOverflowedUintDowncast(80, value);\n        }\n        return uint80(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint72 from uint256, reverting on\n     * overflow (when the input is greater than largest uint72).\n     *\n     * Counterpart to Solidity's `uint72` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 72 bits\n     */\n    function toUint72(uint256 value) internal pure returns (uint72) {\n        if (value > type(uint72).max) {\n            revert SafeCastOverflowedUintDowncast(72, value);\n        }\n        return uint72(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint64 from uint256, reverting on\n     * overflow (when the input is greater than largest uint64).\n     *\n     * Counterpart to Solidity's `uint64` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 64 bits\n     */\n    function toUint64(uint256 value) internal pure returns (uint64) {\n        if (value > type(uint64).max) {\n            revert SafeCastOverflowedUintDowncast(64, value);\n        }\n        return uint64(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint56 from uint256, reverting on\n     * overflow (when the input is greater than largest uint56).\n     *\n     * Counterpart to Solidity's `uint56` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 56 bits\n     */\n    function toUint56(uint256 value) internal pure returns (uint56) {\n        if (value > type(uint56).max) {\n            revert SafeCastOverflowedUintDowncast(56, value);\n        }\n        return uint56(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint48 from uint256, reverting on\n     * overflow (when the input is greater than largest uint48).\n     *\n     * Counterpart to Solidity's `uint48` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 48 bits\n     */\n    function toUint48(uint256 value) internal pure returns (uint48) {\n        if (value > type(uint48).max) {\n            revert SafeCastOverflowedUintDowncast(48, value);\n        }\n        return uint48(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint40 from uint256, reverting on\n     * overflow (when the input is greater than largest uint40).\n     *\n     * Counterpart to Solidity's `uint40` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 40 bits\n     */\n    function toUint40(uint256 value) internal pure returns (uint40) {\n        if (value > type(uint40).max) {\n            revert SafeCastOverflowedUintDowncast(40, value);\n        }\n        return uint40(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint32 from uint256, reverting on\n     * overflow (when the input is greater than largest uint32).\n     *\n     * Counterpart to Solidity's `uint32` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 32 bits\n     */\n    function toUint32(uint256 value) internal pure returns (uint32) {\n        if (value > type(uint32).max) {\n            revert SafeCastOverflowedUintDowncast(32, value);\n        }\n        return uint32(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint24 from uint256, reverting on\n     * overflow (when the input is greater than largest uint24).\n     *\n     * Counterpart to Solidity's `uint24` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 24 bits\n     */\n    function toUint24(uint256 value) internal pure returns (uint24) {\n        if (value > type(uint24).max) {\n            revert SafeCastOverflowedUintDowncast(24, value);\n        }\n        return uint24(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint16 from uint256, reverting on\n     * overflow (when the input is greater than largest uint16).\n     *\n     * Counterpart to Solidity's `uint16` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 16 bits\n     */\n    function toUint16(uint256 value) internal pure returns (uint16) {\n        if (value > type(uint16).max) {\n            revert SafeCastOverflowedUintDowncast(16, value);\n        }\n        return uint16(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint8 from uint256, reverting on\n     * overflow (when the input is greater than largest uint8).\n     *\n     * Counterpart to Solidity's `uint8` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 8 bits\n     */\n    function toUint8(uint256 value) internal pure returns (uint8) {\n        if (value > type(uint8).max) {\n            revert SafeCastOverflowedUintDowncast(8, value);\n        }\n        return uint8(value);\n    }\n\n    /**\n     * @dev Converts a signed int256 into an unsigned uint256.\n     *\n     * Requirements:\n     *\n     * - input must be greater than or equal to 0.\n     */\n    function toUint256(int256 value) internal pure returns (uint256) {\n        if (value < 0) {\n            revert SafeCastOverflowedIntToUint(value);\n        }\n        return uint256(value);\n    }\n\n    /**\n     * @dev Returns the downcasted int248 from int256, reverting on\n     * overflow (when the input is less than smallest int248 or\n     * greater than largest int248).\n     *\n     * Counterpart to Solidity's `int248` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 248 bits\n     */\n    function toInt248(int256 value) internal pure returns (int248 downcasted) {\n        downcasted = int248(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(248, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int240 from int256, reverting on\n     * overflow (when the input is less than smallest int240 or\n     * greater than largest int240).\n     *\n     * Counterpart to Solidity's `int240` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 240 bits\n     */\n    function toInt240(int256 value) internal pure returns (int240 downcasted) {\n        downcasted = int240(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(240, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int232 from int256, reverting on\n     * overflow (when the input is less than smallest int232 or\n     * greater than largest int232).\n     *\n     * Counterpart to Solidity's `int232` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 232 bits\n     */\n    function toInt232(int256 value) internal pure returns (int232 downcasted) {\n        downcasted = int232(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(232, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int224 from int256, reverting on\n     * overflow (when the input is less than smallest int224 or\n     * greater than largest int224).\n     *\n     * Counterpart to Solidity's `int224` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 224 bits\n     */\n    function toInt224(int256 value) internal pure returns (int224 downcasted) {\n        downcasted = int224(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(224, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int216 from int256, reverting on\n     * overflow (when the input is less than smallest int216 or\n     * greater than largest int216).\n     *\n     * Counterpart to Solidity's `int216` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 216 bits\n     */\n    function toInt216(int256 value) internal pure returns (int216 downcasted) {\n        downcasted = int216(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(216, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int208 from int256, reverting on\n     * overflow (when the input is less than smallest int208 or\n     * greater than largest int208).\n     *\n     * Counterpart to Solidity's `int208` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 208 bits\n     */\n    function toInt208(int256 value) internal pure returns (int208 downcasted) {\n        downcasted = int208(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(208, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int200 from int256, reverting on\n     * overflow (when the input is less than smallest int200 or\n     * greater than largest int200).\n     *\n     * Counterpart to Solidity's `int200` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 200 bits\n     */\n    function toInt200(int256 value) internal pure returns (int200 downcasted) {\n        downcasted = int200(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(200, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int192 from int256, reverting on\n     * overflow (when the input is less than smallest int192 or\n     * greater than largest int192).\n     *\n     * Counterpart to Solidity's `int192` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 192 bits\n     */\n    function toInt192(int256 value) internal pure returns (int192 downcasted) {\n        downcasted = int192(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(192, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int184 from int256, reverting on\n     * overflow (when the input is less than smallest int184 or\n     * greater than largest int184).\n     *\n     * Counterpart to Solidity's `int184` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 184 bits\n     */\n    function toInt184(int256 value) internal pure returns (int184 downcasted) {\n        downcasted = int184(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(184, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int176 from int256, reverting on\n     * overflow (when the input is less than smallest int176 or\n     * greater than largest int176).\n     *\n     * Counterpart to Solidity's `int176` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 176 bits\n     */\n    function toInt176(int256 value) internal pure returns (int176 downcasted) {\n        downcasted = int176(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(176, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int168 from int256, reverting on\n     * overflow (when the input is less than smallest int168 or\n     * greater than largest int168).\n     *\n     * Counterpart to Solidity's `int168` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 168 bits\n     */\n    function toInt168(int256 value) internal pure returns (int168 downcasted) {\n        downcasted = int168(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(168, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int160 from int256, reverting on\n     * overflow (when the input is less than smallest int160 or\n     * greater than largest int160).\n     *\n     * Counterpart to Solidity's `int160` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 160 bits\n     */\n    function toInt160(int256 value) internal pure returns (int160 downcasted) {\n        downcasted = int160(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(160, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int152 from int256, reverting on\n     * overflow (when the input is less than smallest int152 or\n     * greater than largest int152).\n     *\n     * Counterpart to Solidity's `int152` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 152 bits\n     */\n    function toInt152(int256 value) internal pure returns (int152 downcasted) {\n        downcasted = int152(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(152, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int144 from int256, reverting on\n     * overflow (when the input is less than smallest int144 or\n     * greater than largest int144).\n     *\n     * Counterpart to Solidity's `int144` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 144 bits\n     */\n    function toInt144(int256 value) internal pure returns (int144 downcasted) {\n        downcasted = int144(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(144, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int136 from int256, reverting on\n     * overflow (when the input is less than smallest int136 or\n     * greater than largest int136).\n     *\n     * Counterpart to Solidity's `int136` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 136 bits\n     */\n    function toInt136(int256 value) internal pure returns (int136 downcasted) {\n        downcasted = int136(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(136, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int128 from int256, reverting on\n     * overflow (when the input is less than smallest int128 or\n     * greater than largest int128).\n     *\n     * Counterpart to Solidity's `int128` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 128 bits\n     */\n    function toInt128(int256 value) internal pure returns (int128 downcasted) {\n        downcasted = int128(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(128, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int120 from int256, reverting on\n     * overflow (when the input is less than smallest int120 or\n     * greater than largest int120).\n     *\n     * Counterpart to Solidity's `int120` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 120 bits\n     */\n    function toInt120(int256 value) internal pure returns (int120 downcasted) {\n        downcasted = int120(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(120, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int112 from int256, reverting on\n     * overflow (when the input is less than smallest int112 or\n     * greater than largest int112).\n     *\n     * Counterpart to Solidity's `int112` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 112 bits\n     */\n    function toInt112(int256 value) internal pure returns (int112 downcasted) {\n        downcasted = int112(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(112, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int104 from int256, reverting on\n     * overflow (when the input is less than smallest int104 or\n     * greater than largest int104).\n     *\n     * Counterpart to Solidity's `int104` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 104 bits\n     */\n    function toInt104(int256 value) internal pure returns (int104 downcasted) {\n        downcasted = int104(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(104, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int96 from int256, reverting on\n     * overflow (when the input is less than smallest int96 or\n     * greater than largest int96).\n     *\n     * Counterpart to Solidity's `int96` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 96 bits\n     */\n    function toInt96(int256 value) internal pure returns (int96 downcasted) {\n        downcasted = int96(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(96, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int88 from int256, reverting on\n     * overflow (when the input is less than smallest int88 or\n     * greater than largest int88).\n     *\n     * Counterpart to Solidity's `int88` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 88 bits\n     */\n    function toInt88(int256 value) internal pure returns (int88 downcasted) {\n        downcasted = int88(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(88, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int80 from int256, reverting on\n     * overflow (when the input is less than smallest int80 or\n     * greater than largest int80).\n     *\n     * Counterpart to Solidity's `int80` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 80 bits\n     */\n    function toInt80(int256 value) internal pure returns (int80 downcasted) {\n        downcasted = int80(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(80, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int72 from int256, reverting on\n     * overflow (when the input is less than smallest int72 or\n     * greater than largest int72).\n     *\n     * Counterpart to Solidity's `int72` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 72 bits\n     */\n    function toInt72(int256 value) internal pure returns (int72 downcasted) {\n        downcasted = int72(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(72, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int64 from int256, reverting on\n     * overflow (when the input is less than smallest int64 or\n     * greater than largest int64).\n     *\n     * Counterpart to Solidity's `int64` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 64 bits\n     */\n    function toInt64(int256 value) internal pure returns (int64 downcasted) {\n        downcasted = int64(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(64, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int56 from int256, reverting on\n     * overflow (when the input is less than smallest int56 or\n     * greater than largest int56).\n     *\n     * Counterpart to Solidity's `int56` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 56 bits\n     */\n    function toInt56(int256 value) internal pure returns (int56 downcasted) {\n        downcasted = int56(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(56, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int48 from int256, reverting on\n     * overflow (when the input is less than smallest int48 or\n     * greater than largest int48).\n     *\n     * Counterpart to Solidity's `int48` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 48 bits\n     */\n    function toInt48(int256 value) internal pure returns (int48 downcasted) {\n        downcasted = int48(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(48, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int40 from int256, reverting on\n     * overflow (when the input is less than smallest int40 or\n     * greater than largest int40).\n     *\n     * Counterpart to Solidity's `int40` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 40 bits\n     */\n    function toInt40(int256 value) internal pure returns (int40 downcasted) {\n        downcasted = int40(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(40, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int32 from int256, reverting on\n     * overflow (when the input is less than smallest int32 or\n     * greater than largest int32).\n     *\n     * Counterpart to Solidity's `int32` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 32 bits\n     */\n    function toInt32(int256 value) internal pure returns (int32 downcasted) {\n        downcasted = int32(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(32, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int24 from int256, reverting on\n     * overflow (when the input is less than smallest int24 or\n     * greater than largest int24).\n     *\n     * Counterpart to Solidity's `int24` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 24 bits\n     */\n    function toInt24(int256 value) internal pure returns (int24 downcasted) {\n        downcasted = int24(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(24, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int16 from int256, reverting on\n     * overflow (when the input is less than smallest int16 or\n     * greater than largest int16).\n     *\n     * Counterpart to Solidity's `int16` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 16 bits\n     */\n    function toInt16(int256 value) internal pure returns (int16 downcasted) {\n        downcasted = int16(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(16, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int8 from int256, reverting on\n     * overflow (when the input is less than smallest int8 or\n     * greater than largest int8).\n     *\n     * Counterpart to Solidity's `int8` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 8 bits\n     */\n    function toInt8(int256 value) internal pure returns (int8 downcasted) {\n        downcasted = int8(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(8, value);\n        }\n    }\n\n    /**\n     * @dev Converts an unsigned uint256 into a signed int256.\n     *\n     * Requirements:\n     *\n     * - input must be less than or equal to maxInt256.\n     */\n    function toInt256(uint256 value) internal pure returns (int256) {\n        // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\n        if (value > uint256(type(int256).max)) {\n            revert SafeCastOverflowedUintToInt(value);\n        }\n        return int256(value);\n    }\n\n    /**\n     * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\n     */\n    function toUint(bool b) internal pure returns (uint256 u) {\n        assembly (\"memory-safe\") {\n            u := iszero(iszero(b))\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/math/SignedMath.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.20;\n\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n    /**\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n     *\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n     * one branch when needed, making this function more expensive.\n     */\n    function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {\n        unchecked {\n            // branchless ternary works because:\n            // b ^ (a ^ b) == a\n            // b ^ 0 == b\n            return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));\n        }\n    }\n\n    /**\n     * @dev Returns the largest of two signed numbers.\n     */\n    function max(int256 a, int256 b) internal pure returns (int256) {\n        return ternary(a > b, a, b);\n    }\n\n    /**\n     * @dev Returns the smallest of two signed numbers.\n     */\n    function min(int256 a, int256 b) internal pure returns (int256) {\n        return ternary(a < b, a, b);\n    }\n\n    /**\n     * @dev Returns the average of two signed numbers without overflow.\n     * The result is rounded towards zero.\n     */\n    function average(int256 a, int256 b) internal pure returns (int256) {\n        // Formula from the book \"Hacker's Delight\"\n        int256 x = (a & b) + ((a ^ b) >> 1);\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\n    }\n\n    /**\n     * @dev Returns the absolute unsigned value of a signed value.\n     */\n    function abs(int256 n) internal pure returns (uint256) {\n        unchecked {\n            // Formula from the \"Bit Twiddling Hacks\" by Sean Eron Anderson.\n            // Since `n` is a signed integer, the generated bytecode will use the SAR opcode to perform the right shift,\n            // taking advantage of the most significant (or \"sign\" bit) in two's complement representation.\n            // This opcode adds new most significant bits set to the value of the previous most significant bit. As a result,\n            // the mask will either be `bytes32(0)` (if n is positive) or `~bytes32(0)` (if n is negative).\n            int256 mask = n >> 255;\n\n            // A `bytes32(0)` mask leaves the input unchanged, while a `~bytes32(0)` mask complements it.\n            return uint256((n + mask) ^ mask);\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/Panic.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Helper library for emitting standardized panic codes.\n *\n * ```solidity\n * contract Example {\n *      using Panic for uint256;\n *\n *      // Use any of the declared internal constants\n *      function foo() { Panic.GENERIC.panic(); }\n *\n *      // Alternatively\n *      function foo() { Panic.panic(Panic.GENERIC); }\n * }\n * ```\n *\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n *\n * _Available since v5.1._\n */\n// slither-disable-next-line unused-state\nlibrary Panic {\n    /// @dev generic / unspecified error\n    uint256 internal constant GENERIC = 0x00;\n    /// @dev used by the assert() builtin\n    uint256 internal constant ASSERT = 0x01;\n    /// @dev arithmetic underflow or overflow\n    uint256 internal constant UNDER_OVERFLOW = 0x11;\n    /// @dev division or modulo by zero\n    uint256 internal constant DIVISION_BY_ZERO = 0x12;\n    /// @dev enum conversion error\n    uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\n    /// @dev invalid encoding in storage\n    uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\n    /// @dev empty array pop\n    uint256 internal constant EMPTY_ARRAY_POP = 0x31;\n    /// @dev array out of bounds access\n    uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\n    /// @dev resource error (too large allocation or too large array)\n    uint256 internal constant RESOURCE_ERROR = 0x41;\n    /// @dev calling invalid internal function\n    uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\n\n    /// @dev Reverts with a panic code. Recommended to use with\n    /// the internal constants with predefined codes.\n    function panic(uint256 code) internal pure {\n        assembly (\"memory-safe\") {\n            mstore(0x00, 0x4e487b71)\n            mstore(0x20, code)\n            revert(0x1c, 0x24)\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/Pausable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/Pausable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract Pausable is Context {\n    bool private _paused;\n\n    /**\n     * @dev Emitted when the pause is triggered by `account`.\n     */\n    event Paused(address account);\n\n    /**\n     * @dev Emitted when the pause is lifted by `account`.\n     */\n    event Unpaused(address account);\n\n    /**\n     * @dev The operation failed because the contract is paused.\n     */\n    error EnforcedPause();\n\n    /**\n     * @dev The operation failed because the contract is not paused.\n     */\n    error ExpectedPause();\n\n    /**\n     * @dev Modifier to make a function callable only when the contract is not paused.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    modifier whenNotPaused() {\n        _requireNotPaused();\n        _;\n    }\n\n    /**\n     * @dev Modifier to make a function callable only when the contract is paused.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    modifier whenPaused() {\n        _requirePaused();\n        _;\n    }\n\n    /**\n     * @dev Returns true if the contract is paused, and false otherwise.\n     */\n    function paused() public view virtual returns (bool) {\n        return _paused;\n    }\n\n    /**\n     * @dev Throws if the contract is paused.\n     */\n    function _requireNotPaused() internal view virtual {\n        if (paused()) {\n            revert EnforcedPause();\n        }\n    }\n\n    /**\n     * @dev Throws if the contract is not paused.\n     */\n    function _requirePaused() internal view virtual {\n        if (!paused()) {\n            revert ExpectedPause();\n        }\n    }\n\n    /**\n     * @dev Triggers stopped state.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    function _pause() internal virtual whenNotPaused {\n        _paused = true;\n        emit Paused(_msgSender());\n    }\n\n    /**\n     * @dev Returns to normal state.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    function _unpause() internal virtual whenPaused {\n        _paused = false;\n        emit Unpaused(_msgSender());\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/Strings.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/Strings.sol)\n\npragma solidity ^0.8.20;\n\nimport {Math} from \"./math/Math.sol\";\nimport {SafeCast} from \"./math/SafeCast.sol\";\nimport {SignedMath} from \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n    using SafeCast for *;\n\n    bytes16 private constant HEX_DIGITS = \"0123456789abcdef\";\n    uint8 private constant ADDRESS_LENGTH = 20;\n    uint256 private constant SPECIAL_CHARS_LOOKUP =\n        (1 << 0x08) | // backspace\n            (1 << 0x09) | // tab\n            (1 << 0x0a) | // newline\n            (1 << 0x0c) | // form feed\n            (1 << 0x0d) | // carriage return\n            (1 << 0x22) | // double quote\n            (1 << 0x5c); // backslash\n\n    /**\n     * @dev The `value` string doesn't fit in the specified `length`.\n     */\n    error StringsInsufficientHexLength(uint256 value, uint256 length);\n\n    /**\n     * @dev The string being parsed contains characters that are not in scope of the given base.\n     */\n    error StringsInvalidChar();\n\n    /**\n     * @dev The string being parsed is not a properly formatted address.\n     */\n    error StringsInvalidAddressFormat();\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n     */\n    function toString(uint256 value) internal pure returns (string memory) {\n        unchecked {\n            uint256 length = Math.log10(value) + 1;\n            string memory buffer = new string(length);\n            uint256 ptr;\n            assembly (\"memory-safe\") {\n                ptr := add(add(buffer, 0x20), length)\n            }\n            while (true) {\n                ptr--;\n                assembly (\"memory-safe\") {\n                    mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\n                }\n                value /= 10;\n                if (value == 0) break;\n            }\n            return buffer;\n        }\n    }\n\n    /**\n     * @dev Converts a `int256` to its ASCII `string` decimal representation.\n     */\n    function toStringSigned(int256 value) internal pure returns (string memory) {\n        return string.concat(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value)));\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n     */\n    function toHexString(uint256 value) internal pure returns (string memory) {\n        unchecked {\n            return toHexString(value, Math.log256(value) + 1);\n        }\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n     */\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n        uint256 localValue = value;\n        bytes memory buffer = new bytes(2 * length + 2);\n        buffer[0] = \"0\";\n        buffer[1] = \"x\";\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\n            buffer[i] = HEX_DIGITS[localValue & 0xf];\n            localValue >>= 4;\n        }\n        if (localValue != 0) {\n            revert StringsInsufficientHexLength(value, length);\n        }\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n     * representation.\n     */\n    function toHexString(address addr) internal pure returns (string memory) {\n        return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\n    }\n\n    /**\n     * @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\n     * representation, according to EIP-55.\n     */\n    function toChecksumHexString(address addr) internal pure returns (string memory) {\n        bytes memory buffer = bytes(toHexString(addr));\n\n        // hash the hex part of buffer (skip length + 2 bytes, length 40)\n        uint256 hashValue;\n        assembly (\"memory-safe\") {\n            hashValue := shr(96, keccak256(add(buffer, 0x22), 40))\n        }\n\n        for (uint256 i = 41; i > 1; --i) {\n            // possible values for buffer[i] are 48 (0) to 57 (9) and 97 (a) to 102 (f)\n            if (hashValue & 0xf > 7 && uint8(buffer[i]) > 96) {\n                // case shift by xoring with 0x20\n                buffer[i] ^= 0x20;\n            }\n            hashValue >>= 4;\n        }\n        return string(buffer);\n    }\n\n    /**\n     * @dev Returns true if the two strings are equal.\n     */\n    function equal(string memory a, string memory b) internal pure returns (bool) {\n        return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\n    }\n\n    /**\n     * @dev Parse a decimal string and returns the value as a `uint256`.\n     *\n     * Requirements:\n     * - The string must be formatted as `[0-9]*`\n     * - The result must fit into an `uint256` type\n     */\n    function parseUint(string memory input) internal pure returns (uint256) {\n        return parseUint(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `[0-9]*`\n     * - The result must fit into an `uint256` type\n     */\n    function parseUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\n        (bool success, uint256 value) = tryParseUint(input, begin, end);\n        if (!success) revert StringsInvalidChar();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseUint(string memory input) internal pure returns (bool success, uint256 value) {\n        return _tryParseUintUncheckedBounds(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n     * character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseUint(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, uint256 value) {\n        if (end > bytes(input).length || begin > end) return (false, 0);\n        return _tryParseUintUncheckedBounds(input, begin, end);\n    }\n\n    /**\n     * @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\n     */\n    function _tryParseUintUncheckedBounds(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) private pure returns (bool success, uint256 value) {\n        bytes memory buffer = bytes(input);\n\n        uint256 result = 0;\n        for (uint256 i = begin; i < end; ++i) {\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\n            if (chr > 9) return (false, 0);\n            result *= 10;\n            result += chr;\n        }\n        return (true, result);\n    }\n\n    /**\n     * @dev Parse a decimal string and returns the value as a `int256`.\n     *\n     * Requirements:\n     * - The string must be formatted as `[-+]?[0-9]*`\n     * - The result must fit in an `int256` type.\n     */\n    function parseInt(string memory input) internal pure returns (int256) {\n        return parseInt(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `[-+]?[0-9]*`\n     * - The result must fit in an `int256` type.\n     */\n    function parseInt(string memory input, uint256 begin, uint256 end) internal pure returns (int256) {\n        (bool success, int256 value) = tryParseInt(input, begin, end);\n        if (!success) revert StringsInvalidChar();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if\n     * the result does not fit in a `int256`.\n     *\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\n     */\n    function tryParseInt(string memory input) internal pure returns (bool success, int256 value) {\n        return _tryParseIntUncheckedBounds(input, 0, bytes(input).length);\n    }\n\n    uint256 private constant ABS_MIN_INT256 = 2 ** 255;\n\n    /**\n     * @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n     * character or if the result does not fit in a `int256`.\n     *\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\n     */\n    function tryParseInt(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, int256 value) {\n        if (end > bytes(input).length || begin > end) return (false, 0);\n        return _tryParseIntUncheckedBounds(input, begin, end);\n    }\n\n    /**\n     * @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\n     */\n    function _tryParseIntUncheckedBounds(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) private pure returns (bool success, int256 value) {\n        bytes memory buffer = bytes(input);\n\n        // Check presence of a negative sign.\n        bytes1 sign = begin == end ? bytes1(0) : bytes1(_unsafeReadBytesOffset(buffer, begin)); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\n        bool positiveSign = sign == bytes1(\"+\");\n        bool negativeSign = sign == bytes1(\"-\");\n        uint256 offset = (positiveSign || negativeSign).toUint();\n\n        (bool absSuccess, uint256 absValue) = tryParseUint(input, begin + offset, end);\n\n        if (absSuccess && absValue < ABS_MIN_INT256) {\n            return (true, negativeSign ? -int256(absValue) : int256(absValue));\n        } else if (absSuccess && negativeSign && absValue == ABS_MIN_INT256) {\n            return (true, type(int256).min);\n        } else return (false, 0);\n    }\n\n    /**\n     * @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as a `uint256`.\n     *\n     * Requirements:\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]*`\n     * - The result must fit in an `uint256` type.\n     */\n    function parseHexUint(string memory input) internal pure returns (uint256) {\n        return parseHexUint(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]*`\n     * - The result must fit in an `uint256` type.\n     */\n    function parseHexUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\n        (bool success, uint256 value) = tryParseHexUint(input, begin, end);\n        if (!success) revert StringsInvalidChar();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseHexUint(string memory input) internal pure returns (bool success, uint256 value) {\n        return _tryParseHexUintUncheckedBounds(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an\n     * invalid character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseHexUint(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, uint256 value) {\n        if (end > bytes(input).length || begin > end) return (false, 0);\n        return _tryParseHexUintUncheckedBounds(input, begin, end);\n    }\n\n    /**\n     * @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\n     */\n    function _tryParseHexUintUncheckedBounds(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) private pure returns (bool success, uint256 value) {\n        bytes memory buffer = bytes(input);\n\n        // skip 0x prefix if present\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(buffer, begin)) == bytes2(\"0x\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\n        uint256 offset = hasPrefix.toUint() * 2;\n\n        uint256 result = 0;\n        for (uint256 i = begin + offset; i < end; ++i) {\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\n            if (chr > 15) return (false, 0);\n            result *= 16;\n            unchecked {\n                // Multiplying by 16 is equivalent to a shift of 4 bits (with additional overflow check).\n                // This guarantees that adding a value < 16 will not cause an overflow, hence the unchecked.\n                result += chr;\n            }\n        }\n        return (true, result);\n    }\n\n    /**\n     * @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as an `address`.\n     *\n     * Requirements:\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]{40}`\n     */\n    function parseAddress(string memory input) internal pure returns (address) {\n        return parseAddress(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}`\n     */\n    function parseAddress(string memory input, uint256 begin, uint256 end) internal pure returns (address) {\n        (bool success, address value) = tryParseAddress(input, begin, end);\n        if (!success) revert StringsInvalidAddressFormat();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly\n     * formatted address. See {parseAddress-string} requirements.\n     */\n    function tryParseAddress(string memory input) internal pure returns (bool success, address value) {\n        return tryParseAddress(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly\n     * formatted address. See {parseAddress-string-uint256-uint256} requirements.\n     */\n    function tryParseAddress(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, address value) {\n        if (end > bytes(input).length || begin > end) return (false, address(0));\n\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(bytes(input), begin)) == bytes2(\"0x\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\n        uint256 expectedLength = 40 + hasPrefix.toUint() * 2;\n\n        // check that input is the correct length\n        if (end - begin == expectedLength) {\n            // length guarantees that this does not overflow, and value is at most type(uint160).max\n            (bool s, uint256 v) = _tryParseHexUintUncheckedBounds(input, begin, end);\n            return (s, address(uint160(v)));\n        } else {\n            return (false, address(0));\n        }\n    }\n\n    function _tryParseChr(bytes1 chr) private pure returns (uint8) {\n        uint8 value = uint8(chr);\n\n        // Try to parse `chr`:\n        // - Case 1: [0-9]\n        // - Case 2: [a-f]\n        // - Case 3: [A-F]\n        // - otherwise not supported\n        unchecked {\n            if (value > 47 && value < 58) value -= 48;\n            else if (value > 96 && value < 103) value -= 87;\n            else if (value > 64 && value < 71) value -= 55;\n            else return type(uint8).max;\n        }\n\n        return value;\n    }\n\n    /**\n     * @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata.\n     *\n     * WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped.\n     *\n     * NOTE: This function escapes all unicode characters, and not just the ones in ranges defined in section 2.5 of\n     * RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). ECMAScript's `JSON.parse` does recover escaped unicode\n     * characters that are not in this range, but other tooling may provide different results.\n     */\n    function escapeJSON(string memory input) internal pure returns (string memory) {\n        bytes memory buffer = bytes(input);\n        bytes memory output = new bytes(2 * buffer.length); // worst case scenario\n        uint256 outputLength = 0;\n\n        for (uint256 i; i < buffer.length; ++i) {\n            bytes1 char = bytes1(_unsafeReadBytesOffset(buffer, i));\n            if (((SPECIAL_CHARS_LOOKUP & (1 << uint8(char))) != 0)) {\n                output[outputLength++] = \"\\\\\";\n                if (char == 0x08) output[outputLength++] = \"b\";\n                else if (char == 0x09) output[outputLength++] = \"t\";\n                else if (char == 0x0a) output[outputLength++] = \"n\";\n                else if (char == 0x0c) output[outputLength++] = \"f\";\n                else if (char == 0x0d) output[outputLength++] = \"r\";\n                else if (char == 0x5c) output[outputLength++] = \"\\\\\";\n                else if (char == 0x22) {\n                    // solhint-disable-next-line quotes\n                    output[outputLength++] = '\"';\n                }\n            } else {\n                output[outputLength++] = char;\n            }\n        }\n        // write the actual length and deallocate unused memory\n        assembly (\"memory-safe\") {\n            mstore(output, outputLength)\n            mstore(0x40, add(output, shl(5, shr(5, add(outputLength, 63)))))\n        }\n\n        return string(output);\n    }\n\n    /**\n     * @dev Reads a bytes32 from a bytes array without bounds checking.\n     *\n     * NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n     * assembly block as such would prevent some optimizations.\n     */\n    function _unsafeReadBytesOffset(bytes memory buffer, uint256 offset) private pure returns (bytes32 value) {\n        // This is not memory safe in the general case, but all calls to this private function are within bounds.\n        assembly (\"memory-safe\") {\n            value := mload(add(add(buffer, 0x20), offset))\n        }\n    }\n}\n"
      },
      "@prb/math/src/Common.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\n// Common.sol\n//\n// Common mathematical functions used in both SD59x18 and UD60x18. Note that these global functions do not\n// always operate with SD59x18 and UD60x18 numbers.\n\n/*//////////////////////////////////////////////////////////////////////////\n                                CUSTOM ERRORS\n//////////////////////////////////////////////////////////////////////////*/\n\n/// @notice Thrown when the resultant value in {mulDiv} overflows uint256.\nerror PRBMath_MulDiv_Overflow(uint256 x, uint256 y, uint256 denominator);\n\n/// @notice Thrown when the resultant value in {mulDiv18} overflows uint256.\nerror PRBMath_MulDiv18_Overflow(uint256 x, uint256 y);\n\n/// @notice Thrown when one of the inputs passed to {mulDivSigned} is `type(int256).min`.\nerror PRBMath_MulDivSigned_InputTooSmall();\n\n/// @notice Thrown when the resultant value in {mulDivSigned} overflows int256.\nerror PRBMath_MulDivSigned_Overflow(int256 x, int256 y);\n\n/*//////////////////////////////////////////////////////////////////////////\n                                    CONSTANTS\n//////////////////////////////////////////////////////////////////////////*/\n\n/// @dev The maximum value a uint128 number can have.\nuint128 constant MAX_UINT128 = type(uint128).max;\n\n/// @dev The maximum value a uint40 number can have.\nuint40 constant MAX_UINT40 = type(uint40).max;\n\n/// @dev The maximum value a uint64 number can have.\nuint64 constant MAX_UINT64 = type(uint64).max;\n\n/// @dev The unit number, which the decimal precision of the fixed-point types.\nuint256 constant UNIT = 1e18;\n\n/// @dev The unit number inverted mod 2^256.\nuint256 constant UNIT_INVERSE = 78156646155174841979727994598816262306175212592076161876661_508869554232690281;\n\n/// @dev The the largest power of two that divides the decimal value of `UNIT`. The logarithm of this value is the least significant\n/// bit in the binary representation of `UNIT`.\nuint256 constant UNIT_LPOTD = 262144;\n\n/*//////////////////////////////////////////////////////////////////////////\n                                    FUNCTIONS\n//////////////////////////////////////////////////////////////////////////*/\n\n/// @notice Calculates the binary exponent of x using the binary fraction method.\n/// @dev Has to use 192.64-bit fixed-point numbers. See https://ethereum.stackexchange.com/a/96594/24693.\n/// @param x The exponent as an unsigned 192.64-bit fixed-point number.\n/// @return result The result as an unsigned 60.18-decimal fixed-point number.\n/// @custom:smtchecker abstract-function-nondet\nfunction exp2(uint256 x) pure returns (uint256 result) {\n    unchecked {\n        // Start from 0.5 in the 192.64-bit fixed-point format.\n        result = 0x800000000000000000000000000000000000000000000000;\n\n        // The following logic multiplies the result by $\\sqrt{2^{-i}}$ when the bit at position i is 1. Key points:\n        //\n        // 1. Intermediate results will not overflow, as the starting point is 2^191 and all magic factors are under 2^65.\n        // 2. The rationale for organizing the if statements into groups of 8 is gas savings. If the result of performing\n        // a bitwise AND operation between x and any value in the array [0x80; 0x40; 0x20; 0x10; 0x08; 0x04; 0x02; 0x01] is 1,\n        // we know that `x & 0xFF` is also 1.\n        if (x & 0xFF00000000000000 > 0) {\n            if (x & 0x8000000000000000 > 0) {\n                result = (result * 0x16A09E667F3BCC909) >> 64;\n            }\n            if (x & 0x4000000000000000 > 0) {\n                result = (result * 0x1306FE0A31B7152DF) >> 64;\n            }\n            if (x & 0x2000000000000000 > 0) {\n                result = (result * 0x1172B83C7D517ADCE) >> 64;\n            }\n            if (x & 0x1000000000000000 > 0) {\n                result = (result * 0x10B5586CF9890F62A) >> 64;\n            }\n            if (x & 0x800000000000000 > 0) {\n                result = (result * 0x1059B0D31585743AE) >> 64;\n            }\n            if (x & 0x400000000000000 > 0) {\n                result = (result * 0x102C9A3E778060EE7) >> 64;\n            }\n            if (x & 0x200000000000000 > 0) {\n                result = (result * 0x10163DA9FB33356D8) >> 64;\n            }\n            if (x & 0x100000000000000 > 0) {\n                result = (result * 0x100B1AFA5ABCBED61) >> 64;\n            }\n        }\n\n        if (x & 0xFF000000000000 > 0) {\n            if (x & 0x80000000000000 > 0) {\n                result = (result * 0x10058C86DA1C09EA2) >> 64;\n            }\n            if (x & 0x40000000000000 > 0) {\n                result = (result * 0x1002C605E2E8CEC50) >> 64;\n            }\n            if (x & 0x20000000000000 > 0) {\n                result = (result * 0x100162F3904051FA1) >> 64;\n            }\n            if (x & 0x10000000000000 > 0) {\n                result = (result * 0x1000B175EFFDC76BA) >> 64;\n            }\n            if (x & 0x8000000000000 > 0) {\n                result = (result * 0x100058BA01FB9F96D) >> 64;\n            }\n            if (x & 0x4000000000000 > 0) {\n                result = (result * 0x10002C5CC37DA9492) >> 64;\n            }\n            if (x & 0x2000000000000 > 0) {\n                result = (result * 0x1000162E525EE0547) >> 64;\n            }\n            if (x & 0x1000000000000 > 0) {\n                result = (result * 0x10000B17255775C04) >> 64;\n            }\n        }\n\n        if (x & 0xFF0000000000 > 0) {\n            if (x & 0x800000000000 > 0) {\n                result = (result * 0x1000058B91B5BC9AE) >> 64;\n            }\n            if (x & 0x400000000000 > 0) {\n                result = (result * 0x100002C5C89D5EC6D) >> 64;\n            }\n            if (x & 0x200000000000 > 0) {\n                result = (result * 0x10000162E43F4F831) >> 64;\n            }\n            if (x & 0x100000000000 > 0) {\n                result = (result * 0x100000B1721BCFC9A) >> 64;\n            }\n            if (x & 0x80000000000 > 0) {\n                result = (result * 0x10000058B90CF1E6E) >> 64;\n            }\n            if (x & 0x40000000000 > 0) {\n                result = (result * 0x1000002C5C863B73F) >> 64;\n            }\n            if (x & 0x20000000000 > 0) {\n                result = (result * 0x100000162E430E5A2) >> 64;\n            }\n            if (x & 0x10000000000 > 0) {\n                result = (result * 0x1000000B172183551) >> 64;\n            }\n        }\n\n        if (x & 0xFF00000000 > 0) {\n            if (x & 0x8000000000 > 0) {\n                result = (result * 0x100000058B90C0B49) >> 64;\n            }\n            if (x & 0x4000000000 > 0) {\n                result = (result * 0x10000002C5C8601CC) >> 64;\n            }\n            if (x & 0x2000000000 > 0) {\n                result = (result * 0x1000000162E42FFF0) >> 64;\n            }\n            if (x & 0x1000000000 > 0) {\n                result = (result * 0x10000000B17217FBB) >> 64;\n            }\n            if (x & 0x800000000 > 0) {\n                result = (result * 0x1000000058B90BFCE) >> 64;\n            }\n            if (x & 0x400000000 > 0) {\n                result = (result * 0x100000002C5C85FE3) >> 64;\n            }\n            if (x & 0x200000000 > 0) {\n                result = (result * 0x10000000162E42FF1) >> 64;\n            }\n            if (x & 0x100000000 > 0) {\n                result = (result * 0x100000000B17217F8) >> 64;\n            }\n        }\n\n        if (x & 0xFF000000 > 0) {\n            if (x & 0x80000000 > 0) {\n                result = (result * 0x10000000058B90BFC) >> 64;\n            }\n            if (x & 0x40000000 > 0) {\n                result = (result * 0x1000000002C5C85FE) >> 64;\n            }\n            if (x & 0x20000000 > 0) {\n                result = (result * 0x100000000162E42FF) >> 64;\n            }\n            if (x & 0x10000000 > 0) {\n                result = (result * 0x1000000000B17217F) >> 64;\n            }\n            if (x & 0x8000000 > 0) {\n                result = (result * 0x100000000058B90C0) >> 64;\n            }\n            if (x & 0x4000000 > 0) {\n                result = (result * 0x10000000002C5C860) >> 64;\n            }\n            if (x & 0x2000000 > 0) {\n                result = (result * 0x1000000000162E430) >> 64;\n            }\n            if (x & 0x1000000 > 0) {\n                result = (result * 0x10000000000B17218) >> 64;\n            }\n        }\n\n        if (x & 0xFF0000 > 0) {\n            if (x & 0x800000 > 0) {\n                result = (result * 0x1000000000058B90C) >> 64;\n            }\n            if (x & 0x400000 > 0) {\n                result = (result * 0x100000000002C5C86) >> 64;\n            }\n            if (x & 0x200000 > 0) {\n                result = (result * 0x10000000000162E43) >> 64;\n            }\n            if (x & 0x100000 > 0) {\n                result = (result * 0x100000000000B1721) >> 64;\n            }\n            if (x & 0x80000 > 0) {\n                result = (result * 0x10000000000058B91) >> 64;\n            }\n            if (x & 0x40000 > 0) {\n                result = (result * 0x1000000000002C5C8) >> 64;\n            }\n            if (x & 0x20000 > 0) {\n                result = (result * 0x100000000000162E4) >> 64;\n            }\n            if (x & 0x10000 > 0) {\n                result = (result * 0x1000000000000B172) >> 64;\n            }\n        }\n\n        if (x & 0xFF00 > 0) {\n            if (x & 0x8000 > 0) {\n                result = (result * 0x100000000000058B9) >> 64;\n            }\n            if (x & 0x4000 > 0) {\n                result = (result * 0x10000000000002C5D) >> 64;\n            }\n            if (x & 0x2000 > 0) {\n                result = (result * 0x1000000000000162E) >> 64;\n            }\n            if (x & 0x1000 > 0) {\n                result = (result * 0x10000000000000B17) >> 64;\n            }\n            if (x & 0x800 > 0) {\n                result = (result * 0x1000000000000058C) >> 64;\n            }\n            if (x & 0x400 > 0) {\n                result = (result * 0x100000000000002C6) >> 64;\n            }\n            if (x & 0x200 > 0) {\n                result = (result * 0x10000000000000163) >> 64;\n            }\n            if (x & 0x100 > 0) {\n                result = (result * 0x100000000000000B1) >> 64;\n            }\n        }\n\n        if (x & 0xFF > 0) {\n            if (x & 0x80 > 0) {\n                result = (result * 0x10000000000000059) >> 64;\n            }\n            if (x & 0x40 > 0) {\n                result = (result * 0x1000000000000002C) >> 64;\n            }\n            if (x & 0x20 > 0) {\n                result = (result * 0x10000000000000016) >> 64;\n            }\n            if (x & 0x10 > 0) {\n                result = (result * 0x1000000000000000B) >> 64;\n            }\n            if (x & 0x8 > 0) {\n                result = (result * 0x10000000000000006) >> 64;\n            }\n            if (x & 0x4 > 0) {\n                result = (result * 0x10000000000000003) >> 64;\n            }\n            if (x & 0x2 > 0) {\n                result = (result * 0x10000000000000001) >> 64;\n            }\n            if (x & 0x1 > 0) {\n                result = (result * 0x10000000000000001) >> 64;\n            }\n        }\n\n        // In the code snippet below, two operations are executed simultaneously:\n        //\n        // 1. The result is multiplied by $(2^n + 1)$, where $2^n$ represents the integer part, and the additional 1\n        // accounts for the initial guess of 0.5. This is achieved by subtracting from 191 instead of 192.\n        // 2. The result is then converted to an unsigned 60.18-decimal fixed-point format.\n        //\n        // The underlying logic is based on the relationship $2^{191-ip} = 2^{ip} / 2^{191}$, where $ip$ denotes the,\n        // integer part, $2^n$.\n        result *= UNIT;\n        result >>= (191 - (x >> 64));\n    }\n}\n\n/// @notice Finds the zero-based index of the first 1 in the binary representation of x.\n///\n/// @dev See the note on \"msb\" in this Wikipedia article: https://en.wikipedia.org/wiki/Find_first_set\n///\n/// Each step in this implementation is equivalent to this high-level code:\n///\n/// ```solidity\n/// if (x >= 2 ** 128) {\n///     x >>= 128;\n///     result += 128;\n/// }\n/// ```\n///\n/// Where 128 is replaced with each respective power of two factor. See the full high-level implementation here:\n/// https://gist.github.com/PaulRBerg/f932f8693f2733e30c4d479e8e980948\n///\n/// The Yul instructions used below are:\n///\n/// - \"gt\" is \"greater than\"\n/// - \"or\" is the OR bitwise operator\n/// - \"shl\" is \"shift left\"\n/// - \"shr\" is \"shift right\"\n///\n/// @param x The uint256 number for which to find the index of the most significant bit.\n/// @return result The index of the most significant bit as a uint256.\n/// @custom:smtchecker abstract-function-nondet\nfunction msb(uint256 x) pure returns (uint256 result) {\n    // 2^128\n    assembly (\"memory-safe\") {\n        let factor := shl(7, gt(x, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\n        x := shr(factor, x)\n        result := or(result, factor)\n    }\n    // 2^64\n    assembly (\"memory-safe\") {\n        let factor := shl(6, gt(x, 0xFFFFFFFFFFFFFFFF))\n        x := shr(factor, x)\n        result := or(result, factor)\n    }\n    // 2^32\n    assembly (\"memory-safe\") {\n        let factor := shl(5, gt(x, 0xFFFFFFFF))\n        x := shr(factor, x)\n        result := or(result, factor)\n    }\n    // 2^16\n    assembly (\"memory-safe\") {\n        let factor := shl(4, gt(x, 0xFFFF))\n        x := shr(factor, x)\n        result := or(result, factor)\n    }\n    // 2^8\n    assembly (\"memory-safe\") {\n        let factor := shl(3, gt(x, 0xFF))\n        x := shr(factor, x)\n        result := or(result, factor)\n    }\n    // 2^4\n    assembly (\"memory-safe\") {\n        let factor := shl(2, gt(x, 0xF))\n        x := shr(factor, x)\n        result := or(result, factor)\n    }\n    // 2^2\n    assembly (\"memory-safe\") {\n        let factor := shl(1, gt(x, 0x3))\n        x := shr(factor, x)\n        result := or(result, factor)\n    }\n    // 2^1\n    // No need to shift x any more.\n    assembly (\"memory-safe\") {\n        let factor := gt(x, 0x1)\n        result := or(result, factor)\n    }\n}\n\n/// @notice Calculates x*y÷denominator with 512-bit precision.\n///\n/// @dev Credits to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv.\n///\n/// Notes:\n/// - The result is rounded toward zero.\n///\n/// Requirements:\n/// - The denominator must not be zero.\n/// - The result must fit in uint256.\n///\n/// @param x The multiplicand as a uint256.\n/// @param y The multiplier as a uint256.\n/// @param denominator The divisor as a uint256.\n/// @return result The result as a uint256.\n/// @custom:smtchecker abstract-function-nondet\nfunction mulDiv(uint256 x, uint256 y, uint256 denominator) pure returns (uint256 result) {\n    // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n    // use the Chinese Remainder Theorem to reconstruct the 512-bit result. The result is stored in two 256\n    // variables such that product = prod1 * 2^256 + prod0.\n    uint256 prod0; // Least significant 256 bits of the product\n    uint256 prod1; // Most significant 256 bits of the product\n    assembly (\"memory-safe\") {\n        let mm := mulmod(x, y, not(0))\n        prod0 := mul(x, y)\n        prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n    }\n\n    // Handle non-overflow cases, 256 by 256 division.\n    if (prod1 == 0) {\n        unchecked {\n            return prod0 / denominator;\n        }\n    }\n\n    // Make sure the result is less than 2^256. Also prevents denominator == 0.\n    if (prod1 >= denominator) {\n        revert PRBMath_MulDiv_Overflow(x, y, denominator);\n    }\n\n    ////////////////////////////////////////////////////////////////////////////\n    // 512 by 256 division\n    ////////////////////////////////////////////////////////////////////////////\n\n    // Make division exact by subtracting the remainder from [prod1 prod0].\n    uint256 remainder;\n    assembly (\"memory-safe\") {\n        // Compute remainder using the mulmod Yul instruction.\n        remainder := mulmod(x, y, denominator)\n\n        // Subtract 256 bit number from 512-bit number.\n        prod1 := sub(prod1, gt(remainder, prod0))\n        prod0 := sub(prod0, remainder)\n    }\n\n    unchecked {\n        // Calculate the largest power of two divisor of the denominator using the unary operator ~. This operation cannot overflow\n        // because the denominator cannot be zero at this point in the function execution. The result is always >= 1.\n        // For more detail, see https://cs.stackexchange.com/q/138556/92363.\n        uint256 lpotdod = denominator & (~denominator + 1);\n        uint256 flippedLpotdod;\n\n        assembly (\"memory-safe\") {\n            // Factor powers of two out of denominator.\n            denominator := div(denominator, lpotdod)\n\n            // Divide [prod1 prod0] by lpotdod.\n            prod0 := div(prod0, lpotdod)\n\n            // Get the flipped value `2^256 / lpotdod`. If the `lpotdod` is zero, the flipped value is one.\n            // `sub(0, lpotdod)` produces the two's complement version of `lpotdod`, which is equivalent to flipping all the bits.\n            // However, `div` interprets this value as an unsigned value: https://ethereum.stackexchange.com/q/147168/24693\n            flippedLpotdod := add(div(sub(0, lpotdod), lpotdod), 1)\n        }\n\n        // Shift in bits from prod1 into prod0.\n        prod0 |= prod1 * flippedLpotdod;\n\n        // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n        // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n        // four bits. That is, denominator * inv = 1 mod 2^4.\n        uint256 inverse = (3 * denominator) ^ 2;\n\n        // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n        // in modular arithmetic, doubling the correct bits in each step.\n        inverse *= 2 - denominator * inverse; // inverse mod 2^8\n        inverse *= 2 - denominator * inverse; // inverse mod 2^16\n        inverse *= 2 - denominator * inverse; // inverse mod 2^32\n        inverse *= 2 - denominator * inverse; // inverse mod 2^64\n        inverse *= 2 - denominator * inverse; // inverse mod 2^128\n        inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n        // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n        // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n        // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n        // is no longer required.\n        result = prod0 * inverse;\n    }\n}\n\n/// @notice Calculates x*y÷1e18 with 512-bit precision.\n///\n/// @dev A variant of {mulDiv} with constant folding, i.e. in which the denominator is hard coded to 1e18.\n///\n/// Notes:\n/// - The body is purposely left uncommented; to understand how this works, see the documentation in {mulDiv}.\n/// - The result is rounded toward zero.\n/// - We take as an axiom that the result cannot be `MAX_UINT256` when x and y solve the following system of equations:\n///\n/// $$\n/// \\begin{cases}\n///     x * y = MAX\\_UINT256 * UNIT \\\\\n///     (x * y) \\% UNIT \\geq \\frac{UNIT}{2}\n/// \\end{cases}\n/// $$\n///\n/// Requirements:\n/// - Refer to the requirements in {mulDiv}.\n/// - The result must fit in uint256.\n///\n/// @param x The multiplicand as an unsigned 60.18-decimal fixed-point number.\n/// @param y The multiplier as an unsigned 60.18-decimal fixed-point number.\n/// @return result The result as an unsigned 60.18-decimal fixed-point number.\n/// @custom:smtchecker abstract-function-nondet\nfunction mulDiv18(uint256 x, uint256 y) pure returns (uint256 result) {\n    uint256 prod0;\n    uint256 prod1;\n    assembly (\"memory-safe\") {\n        let mm := mulmod(x, y, not(0))\n        prod0 := mul(x, y)\n        prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n    }\n\n    if (prod1 == 0) {\n        unchecked {\n            return prod0 / UNIT;\n        }\n    }\n\n    if (prod1 >= UNIT) {\n        revert PRBMath_MulDiv18_Overflow(x, y);\n    }\n\n    uint256 remainder;\n    assembly (\"memory-safe\") {\n        remainder := mulmod(x, y, UNIT)\n        result :=\n            mul(\n                or(\n                    div(sub(prod0, remainder), UNIT_LPOTD),\n                    mul(sub(prod1, gt(remainder, prod0)), add(div(sub(0, UNIT_LPOTD), UNIT_LPOTD), 1))\n                ),\n                UNIT_INVERSE\n            )\n    }\n}\n\n/// @notice Calculates x*y÷denominator with 512-bit precision.\n///\n/// @dev This is an extension of {mulDiv} for signed numbers, which works by computing the signs and the absolute values separately.\n///\n/// Notes:\n/// - The result is rounded toward zero.\n///\n/// Requirements:\n/// - Refer to the requirements in {mulDiv}.\n/// - None of the inputs can be `type(int256).min`.\n/// - The result must fit in int256.\n///\n/// @param x The multiplicand as an int256.\n/// @param y The multiplier as an int256.\n/// @param denominator The divisor as an int256.\n/// @return result The result as an int256.\n/// @custom:smtchecker abstract-function-nondet\nfunction mulDivSigned(int256 x, int256 y, int256 denominator) pure returns (int256 result) {\n    if (x == type(int256).min || y == type(int256).min || denominator == type(int256).min) {\n        revert PRBMath_MulDivSigned_InputTooSmall();\n    }\n\n    // Get hold of the absolute values of x, y and the denominator.\n    uint256 xAbs;\n    uint256 yAbs;\n    uint256 dAbs;\n    unchecked {\n        xAbs = x < 0 ? uint256(-x) : uint256(x);\n        yAbs = y < 0 ? uint256(-y) : uint256(y);\n        dAbs = denominator < 0 ? uint256(-denominator) : uint256(denominator);\n    }\n\n    // Compute the absolute value of x*y÷denominator. The result must fit in int256.\n    uint256 resultAbs = mulDiv(xAbs, yAbs, dAbs);\n    if (resultAbs > uint256(type(int256).max)) {\n        revert PRBMath_MulDivSigned_Overflow(x, y);\n    }\n\n    // Get the signs of x, y and the denominator.\n    uint256 sx;\n    uint256 sy;\n    uint256 sd;\n    assembly (\"memory-safe\") {\n        // \"sgt\" is the \"signed greater than\" assembly instruction and \"sub(0,1)\" is -1 in two's complement.\n        sx := sgt(x, sub(0, 1))\n        sy := sgt(y, sub(0, 1))\n        sd := sgt(denominator, sub(0, 1))\n    }\n\n    // XOR over sx, sy and sd. What this does is to check whether there are 1 or 3 negative signs in the inputs.\n    // If there are, the result should be negative. Otherwise, it should be positive.\n    unchecked {\n        result = sx ^ sy ^ sd == 0 ? -int256(resultAbs) : int256(resultAbs);\n    }\n}\n\n/// @notice Calculates the square root of x using the Babylonian method.\n///\n/// @dev See https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method.\n///\n/// Notes:\n/// - If x is not a perfect square, the result is rounded down.\n/// - Credits to OpenZeppelin for the explanations in comments below.\n///\n/// @param x The uint256 number for which to calculate the square root.\n/// @return result The result as a uint256.\n/// @custom:smtchecker abstract-function-nondet\nfunction sqrt(uint256 x) pure returns (uint256 result) {\n    if (x == 0) {\n        return 0;\n    }\n\n    // For our first guess, we calculate the biggest power of 2 which is smaller than the square root of x.\n    //\n    // We know that the \"msb\" (most significant bit) of x is a power of 2 such that we have:\n    //\n    // $$\n    // msb(x) <= x <= 2*msb(x)$\n    // $$\n    //\n    // We write $msb(x)$ as $2^k$, and we get:\n    //\n    // $$\n    // k = log_2(x)\n    // $$\n    //\n    // Thus, we can write the initial inequality as:\n    //\n    // $$\n    // 2^{log_2(x)} <= x <= 2*2^{log_2(x)+1} \\\\\n    // sqrt(2^k) <= sqrt(x) < sqrt(2^{k+1}) \\\\\n    // 2^{k/2} <= sqrt(x) < 2^{(k+1)/2} <= 2^{(k/2)+1}\n    // $$\n    //\n    // Consequently, $2^{log_2(x) /2} is a good first approximation of sqrt(x) with at least one correct bit.\n    uint256 xAux = uint256(x);\n    result = 1;\n    if (xAux >= 2 ** 128) {\n        xAux >>= 128;\n        result <<= 64;\n    }\n    if (xAux >= 2 ** 64) {\n        xAux >>= 64;\n        result <<= 32;\n    }\n    if (xAux >= 2 ** 32) {\n        xAux >>= 32;\n        result <<= 16;\n    }\n    if (xAux >= 2 ** 16) {\n        xAux >>= 16;\n        result <<= 8;\n    }\n    if (xAux >= 2 ** 8) {\n        xAux >>= 8;\n        result <<= 4;\n    }\n    if (xAux >= 2 ** 4) {\n        xAux >>= 4;\n        result <<= 2;\n    }\n    if (xAux >= 2 ** 2) {\n        result <<= 1;\n    }\n\n    // At this point, `result` is an estimation with at least one bit of precision. We know the true value has at\n    // most 128 bits, since it is the square root of a uint256. Newton's method converges quadratically (precision\n    // doubles at every iteration). We thus need at most 7 iteration to turn our partial result with one bit of\n    // precision into the expected uint128 result.\n    unchecked {\n        result = (result + x / result) >> 1;\n        result = (result + x / result) >> 1;\n        result = (result + x / result) >> 1;\n        result = (result + x / result) >> 1;\n        result = (result + x / result) >> 1;\n        result = (result + x / result) >> 1;\n        result = (result + x / result) >> 1;\n\n        // If x is not a perfect square, round the result toward zero.\n        uint256 roundedResult = x / result;\n        if (result >= roundedResult) {\n            result = roundedResult;\n        }\n    }\n}\n"
      },
      "@prb/math/src/sd1x18/Casting.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport \"../Common.sol\" as Common;\nimport \"./Errors.sol\" as CastingErrors;\nimport { SD59x18 } from \"../sd59x18/ValueType.sol\";\nimport { UD60x18 } from \"../ud60x18/ValueType.sol\";\nimport { SD1x18 } from \"./ValueType.sol\";\n\n/// @notice Casts an SD1x18 number into SD59x18.\n/// @dev There is no overflow check because SD1x18 ⊆ SD59x18.\nfunction intoSD59x18(SD1x18 x) pure returns (SD59x18 result) {\n    result = SD59x18.wrap(int256(SD1x18.unwrap(x)));\n}\n\n/// @notice Casts an SD1x18 number into UD60x18.\n/// @dev Requirements:\n/// - x ≥ 0\nfunction intoUD60x18(SD1x18 x) pure returns (UD60x18 result) {\n    int64 xInt = SD1x18.unwrap(x);\n    if (xInt < 0) {\n        revert CastingErrors.PRBMath_SD1x18_ToUD60x18_Underflow(x);\n    }\n    result = UD60x18.wrap(uint64(xInt));\n}\n\n/// @notice Casts an SD1x18 number into uint128.\n/// @dev Requirements:\n/// - x ≥ 0\nfunction intoUint128(SD1x18 x) pure returns (uint128 result) {\n    int64 xInt = SD1x18.unwrap(x);\n    if (xInt < 0) {\n        revert CastingErrors.PRBMath_SD1x18_ToUint128_Underflow(x);\n    }\n    result = uint128(uint64(xInt));\n}\n\n/// @notice Casts an SD1x18 number into uint256.\n/// @dev Requirements:\n/// - x ≥ 0\nfunction intoUint256(SD1x18 x) pure returns (uint256 result) {\n    int64 xInt = SD1x18.unwrap(x);\n    if (xInt < 0) {\n        revert CastingErrors.PRBMath_SD1x18_ToUint256_Underflow(x);\n    }\n    result = uint256(uint64(xInt));\n}\n\n/// @notice Casts an SD1x18 number into uint40.\n/// @dev Requirements:\n/// - x ≥ 0\n/// - x ≤ MAX_UINT40\nfunction intoUint40(SD1x18 x) pure returns (uint40 result) {\n    int64 xInt = SD1x18.unwrap(x);\n    if (xInt < 0) {\n        revert CastingErrors.PRBMath_SD1x18_ToUint40_Underflow(x);\n    }\n    if (xInt > int64(uint64(Common.MAX_UINT40))) {\n        revert CastingErrors.PRBMath_SD1x18_ToUint40_Overflow(x);\n    }\n    result = uint40(uint64(xInt));\n}\n\n/// @notice Alias for {wrap}.\nfunction sd1x18(int64 x) pure returns (SD1x18 result) {\n    result = SD1x18.wrap(x);\n}\n\n/// @notice Unwraps an SD1x18 number into int64.\nfunction unwrap(SD1x18 x) pure returns (int64 result) {\n    result = SD1x18.unwrap(x);\n}\n\n/// @notice Wraps an int64 number into SD1x18.\nfunction wrap(int64 x) pure returns (SD1x18 result) {\n    result = SD1x18.wrap(x);\n}\n"
      },
      "@prb/math/src/sd1x18/Constants.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport { SD1x18 } from \"./ValueType.sol\";\n\n/// @dev Euler's number as an SD1x18 number.\nSD1x18 constant E = SD1x18.wrap(2_718281828459045235);\n\n/// @dev The maximum value an SD1x18 number can have.\nint64 constant uMAX_SD1x18 = 9_223372036854775807;\nSD1x18 constant MAX_SD1x18 = SD1x18.wrap(uMAX_SD1x18);\n\n/// @dev The minimum value an SD1x18 number can have.\nint64 constant uMIN_SD1x18 = -9_223372036854775808;\nSD1x18 constant MIN_SD1x18 = SD1x18.wrap(uMIN_SD1x18);\n\n/// @dev PI as an SD1x18 number.\nSD1x18 constant PI = SD1x18.wrap(3_141592653589793238);\n\n/// @dev The unit number, which gives the decimal precision of SD1x18.\nSD1x18 constant UNIT = SD1x18.wrap(1e18);\nint64 constant uUNIT = 1e18;\n"
      },
      "@prb/math/src/sd1x18/Errors.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport { SD1x18 } from \"./ValueType.sol\";\n\n/// @notice Thrown when trying to cast an SD1x18 number that doesn't fit in UD60x18.\nerror PRBMath_SD1x18_ToUD60x18_Underflow(SD1x18 x);\n\n/// @notice Thrown when trying to cast an SD1x18 number that doesn't fit in uint128.\nerror PRBMath_SD1x18_ToUint128_Underflow(SD1x18 x);\n\n/// @notice Thrown when trying to cast an SD1x18 number that doesn't fit in uint256.\nerror PRBMath_SD1x18_ToUint256_Underflow(SD1x18 x);\n\n/// @notice Thrown when trying to cast an SD1x18 number that doesn't fit in uint40.\nerror PRBMath_SD1x18_ToUint40_Overflow(SD1x18 x);\n\n/// @notice Thrown when trying to cast an SD1x18 number that doesn't fit in uint40.\nerror PRBMath_SD1x18_ToUint40_Underflow(SD1x18 x);\n"
      },
      "@prb/math/src/sd1x18/ValueType.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport \"./Casting.sol\" as Casting;\n\n/// @notice The signed 1.18-decimal fixed-point number representation, which can have up to 1 digit and up to 18\n/// decimals. The values of this are bound by the minimum and the maximum values permitted by the underlying Solidity\n/// type int64. This is useful when end users want to use int64 to save gas, e.g. with tight variable packing in contract\n/// storage.\ntype SD1x18 is int64;\n\n/*//////////////////////////////////////////////////////////////////////////\n                                    CASTING\n//////////////////////////////////////////////////////////////////////////*/\n\nusing {\n    Casting.intoSD59x18,\n    Casting.intoUD60x18,\n    Casting.intoUint128,\n    Casting.intoUint256,\n    Casting.intoUint40,\n    Casting.unwrap\n} for SD1x18 global;\n"
      },
      "@prb/math/src/sd21x18/Casting.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport \"../Common.sol\" as Common;\nimport \"./Errors.sol\" as CastingErrors;\nimport { SD59x18 } from \"../sd59x18/ValueType.sol\";\nimport { UD60x18 } from \"../ud60x18/ValueType.sol\";\nimport { SD21x18 } from \"./ValueType.sol\";\n\n/// @notice Casts an SD21x18 number into SD59x18.\n/// @dev There is no overflow check because SD21x18 ⊆ SD59x18.\nfunction intoSD59x18(SD21x18 x) pure returns (SD59x18 result) {\n    result = SD59x18.wrap(int256(SD21x18.unwrap(x)));\n}\n\n/// @notice Casts an SD21x18 number into UD60x18.\n/// @dev Requirements:\n/// - x ≥ 0\nfunction intoUD60x18(SD21x18 x) pure returns (UD60x18 result) {\n    int128 xInt = SD21x18.unwrap(x);\n    if (xInt < 0) {\n        revert CastingErrors.PRBMath_SD21x18_ToUD60x18_Underflow(x);\n    }\n    result = UD60x18.wrap(uint128(xInt));\n}\n\n/// @notice Casts an SD21x18 number into uint128.\n/// @dev Requirements:\n/// - x ≥ 0\nfunction intoUint128(SD21x18 x) pure returns (uint128 result) {\n    int128 xInt = SD21x18.unwrap(x);\n    if (xInt < 0) {\n        revert CastingErrors.PRBMath_SD21x18_ToUint128_Underflow(x);\n    }\n    result = uint128(xInt);\n}\n\n/// @notice Casts an SD21x18 number into uint256.\n/// @dev Requirements:\n/// - x ≥ 0\nfunction intoUint256(SD21x18 x) pure returns (uint256 result) {\n    int128 xInt = SD21x18.unwrap(x);\n    if (xInt < 0) {\n        revert CastingErrors.PRBMath_SD21x18_ToUint256_Underflow(x);\n    }\n    result = uint256(uint128(xInt));\n}\n\n/// @notice Casts an SD21x18 number into uint40.\n/// @dev Requirements:\n/// - x ≥ 0\n/// - x ≤ MAX_UINT40\nfunction intoUint40(SD21x18 x) pure returns (uint40 result) {\n    int128 xInt = SD21x18.unwrap(x);\n    if (xInt < 0) {\n        revert CastingErrors.PRBMath_SD21x18_ToUint40_Underflow(x);\n    }\n    if (xInt > int128(uint128(Common.MAX_UINT40))) {\n        revert CastingErrors.PRBMath_SD21x18_ToUint40_Overflow(x);\n    }\n    result = uint40(uint128(xInt));\n}\n\n/// @notice Alias for {wrap}.\nfunction sd21x18(int128 x) pure returns (SD21x18 result) {\n    result = SD21x18.wrap(x);\n}\n\n/// @notice Unwraps an SD21x18 number into int128.\nfunction unwrap(SD21x18 x) pure returns (int128 result) {\n    result = SD21x18.unwrap(x);\n}\n\n/// @notice Wraps an int128 number into SD21x18.\nfunction wrap(int128 x) pure returns (SD21x18 result) {\n    result = SD21x18.wrap(x);\n}\n"
      },
      "@prb/math/src/sd21x18/Constants.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport { SD21x18 } from \"./ValueType.sol\";\n\n/// @dev Euler's number as an SD21x18 number.\nSD21x18 constant E = SD21x18.wrap(2_718281828459045235);\n\n/// @dev The maximum value an SD21x18 number can have.\nint128 constant uMAX_SD21x18 = 170141183460469231731_687303715884105727;\nSD21x18 constant MAX_SD21x18 = SD21x18.wrap(uMAX_SD21x18);\n\n/// @dev The minimum value an SD21x18 number can have.\nint128 constant uMIN_SD21x18 = -170141183460469231731_687303715884105728;\nSD21x18 constant MIN_SD21x18 = SD21x18.wrap(uMIN_SD21x18);\n\n/// @dev PI as an SD21x18 number.\nSD21x18 constant PI = SD21x18.wrap(3_141592653589793238);\n\n/// @dev The unit number, which gives the decimal precision of SD21x18.\nSD21x18 constant UNIT = SD21x18.wrap(1e18);\nint128 constant uUNIT = 1e18;\n"
      },
      "@prb/math/src/sd21x18/Errors.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport { SD21x18 } from \"./ValueType.sol\";\n\n/// @notice Thrown when trying to cast an SD21x18 number that doesn't fit in uint128.\nerror PRBMath_SD21x18_ToUint128_Underflow(SD21x18 x);\n\n/// @notice Thrown when trying to cast an SD21x18 number that doesn't fit in UD60x18.\nerror PRBMath_SD21x18_ToUD60x18_Underflow(SD21x18 x);\n\n/// @notice Thrown when trying to cast an SD21x18 number that doesn't fit in uint256.\nerror PRBMath_SD21x18_ToUint256_Underflow(SD21x18 x);\n\n/// @notice Thrown when trying to cast an SD21x18 number that doesn't fit in uint40.\nerror PRBMath_SD21x18_ToUint40_Overflow(SD21x18 x);\n\n/// @notice Thrown when trying to cast an SD21x18 number that doesn't fit in uint40.\nerror PRBMath_SD21x18_ToUint40_Underflow(SD21x18 x);\n"
      },
      "@prb/math/src/sd21x18/ValueType.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport \"./Casting.sol\" as Casting;\n\n/// @notice The signed 21.18-decimal fixed-point number representation, which can have up to 21 digits and up to 18\n/// decimals. The values of this are bound by the minimum and the maximum values permitted by the underlying Solidity\n/// type int128. This is useful when end users want to use int128 to save gas, e.g. with tight variable packing in contract\n/// storage.\ntype SD21x18 is int128;\n\n/*//////////////////////////////////////////////////////////////////////////\n                                    CASTING\n//////////////////////////////////////////////////////////////////////////*/\n\nusing {\n    Casting.intoSD59x18,\n    Casting.intoUD60x18,\n    Casting.intoUint128,\n    Casting.intoUint256,\n    Casting.intoUint40,\n    Casting.unwrap\n} for SD21x18 global;\n"
      },
      "@prb/math/src/sd59x18/Casting.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport \"./Errors.sol\" as CastingErrors;\nimport { MAX_UINT128, MAX_UINT40 } from \"../Common.sol\";\nimport { uMAX_SD1x18, uMIN_SD1x18 } from \"../sd1x18/Constants.sol\";\nimport { SD1x18 } from \"../sd1x18/ValueType.sol\";\nimport { uMAX_SD21x18, uMIN_SD21x18 } from \"../sd21x18/Constants.sol\";\nimport { SD21x18 } from \"../sd21x18/ValueType.sol\";\nimport { uMAX_UD2x18 } from \"../ud2x18/Constants.sol\";\nimport { UD2x18 } from \"../ud2x18/ValueType.sol\";\nimport { uMAX_UD21x18 } from \"../ud21x18/Constants.sol\";\nimport { UD21x18 } from \"../ud21x18/ValueType.sol\";\nimport { UD60x18 } from \"../ud60x18/ValueType.sol\";\nimport { SD59x18 } from \"./ValueType.sol\";\n\n/// @notice Casts an SD59x18 number into int256.\n/// @dev This is basically a functional alias for {unwrap}.\nfunction intoInt256(SD59x18 x) pure returns (int256 result) {\n    result = SD59x18.unwrap(x);\n}\n\n/// @notice Casts an SD59x18 number into SD1x18.\n/// @dev Requirements:\n/// - x ≥ uMIN_SD1x18\n/// - x ≤ uMAX_SD1x18\nfunction intoSD1x18(SD59x18 x) pure returns (SD1x18 result) {\n    int256 xInt = SD59x18.unwrap(x);\n    if (xInt < uMIN_SD1x18) {\n        revert CastingErrors.PRBMath_SD59x18_IntoSD1x18_Underflow(x);\n    }\n    if (xInt > uMAX_SD1x18) {\n        revert CastingErrors.PRBMath_SD59x18_IntoSD1x18_Overflow(x);\n    }\n    result = SD1x18.wrap(int64(xInt));\n}\n\n/// @notice Casts an SD59x18 number into SD21x18.\n/// @dev Requirements:\n/// - x ≥ uMIN_SD21x18\n/// - x ≤ uMAX_SD21x18\nfunction intoSD21x18(SD59x18 x) pure returns (SD21x18 result) {\n    int256 xInt = SD59x18.unwrap(x);\n    if (xInt < uMIN_SD21x18) {\n        revert CastingErrors.PRBMath_SD59x18_IntoSD21x18_Underflow(x);\n    }\n    if (xInt > uMAX_SD21x18) {\n        revert CastingErrors.PRBMath_SD59x18_IntoSD21x18_Overflow(x);\n    }\n    result = SD21x18.wrap(int128(xInt));\n}\n\n/// @notice Casts an SD59x18 number into UD2x18.\n/// @dev Requirements:\n/// - x ≥ 0\n/// - x ≤ uMAX_UD2x18\nfunction intoUD2x18(SD59x18 x) pure returns (UD2x18 result) {\n    int256 xInt = SD59x18.unwrap(x);\n    if (xInt < 0) {\n        revert CastingErrors.PRBMath_SD59x18_IntoUD2x18_Underflow(x);\n    }\n    if (xInt > int256(uint256(uMAX_UD2x18))) {\n        revert CastingErrors.PRBMath_SD59x18_IntoUD2x18_Overflow(x);\n    }\n    result = UD2x18.wrap(uint64(uint256(xInt)));\n}\n\n/// @notice Casts an SD59x18 number into UD21x18.\n/// @dev Requirements:\n/// - x ≥ 0\n/// - x ≤ uMAX_UD21x18\nfunction intoUD21x18(SD59x18 x) pure returns (UD21x18 result) {\n    int256 xInt = SD59x18.unwrap(x);\n    if (xInt < 0) {\n        revert CastingErrors.PRBMath_SD59x18_IntoUD21x18_Underflow(x);\n    }\n    if (xInt > int256(uint256(uMAX_UD21x18))) {\n        revert CastingErrors.PRBMath_SD59x18_IntoUD21x18_Overflow(x);\n    }\n    result = UD21x18.wrap(uint128(uint256(xInt)));\n}\n\n/// @notice Casts an SD59x18 number into UD60x18.\n/// @dev Requirements:\n/// - x ≥ 0\nfunction intoUD60x18(SD59x18 x) pure returns (UD60x18 result) {\n    int256 xInt = SD59x18.unwrap(x);\n    if (xInt < 0) {\n        revert CastingErrors.PRBMath_SD59x18_IntoUD60x18_Underflow(x);\n    }\n    result = UD60x18.wrap(uint256(xInt));\n}\n\n/// @notice Casts an SD59x18 number into uint256.\n/// @dev Requirements:\n/// - x ≥ 0\nfunction intoUint256(SD59x18 x) pure returns (uint256 result) {\n    int256 xInt = SD59x18.unwrap(x);\n    if (xInt < 0) {\n        revert CastingErrors.PRBMath_SD59x18_IntoUint256_Underflow(x);\n    }\n    result = uint256(xInt);\n}\n\n/// @notice Casts an SD59x18 number into uint128.\n/// @dev Requirements:\n/// - x ≥ 0\n/// - x ≤ uMAX_UINT128\nfunction intoUint128(SD59x18 x) pure returns (uint128 result) {\n    int256 xInt = SD59x18.unwrap(x);\n    if (xInt < 0) {\n        revert CastingErrors.PRBMath_SD59x18_IntoUint128_Underflow(x);\n    }\n    if (xInt > int256(uint256(MAX_UINT128))) {\n        revert CastingErrors.PRBMath_SD59x18_IntoUint128_Overflow(x);\n    }\n    result = uint128(uint256(xInt));\n}\n\n/// @notice Casts an SD59x18 number into uint40.\n/// @dev Requirements:\n/// - x ≥ 0\n/// - x ≤ MAX_UINT40\nfunction intoUint40(SD59x18 x) pure returns (uint40 result) {\n    int256 xInt = SD59x18.unwrap(x);\n    if (xInt < 0) {\n        revert CastingErrors.PRBMath_SD59x18_IntoUint40_Underflow(x);\n    }\n    if (xInt > int256(uint256(MAX_UINT40))) {\n        revert CastingErrors.PRBMath_SD59x18_IntoUint40_Overflow(x);\n    }\n    result = uint40(uint256(xInt));\n}\n\n/// @notice Alias for {wrap}.\nfunction sd(int256 x) pure returns (SD59x18 result) {\n    result = SD59x18.wrap(x);\n}\n\n/// @notice Alias for {wrap}.\nfunction sd59x18(int256 x) pure returns (SD59x18 result) {\n    result = SD59x18.wrap(x);\n}\n\n/// @notice Unwraps an SD59x18 number into int256.\nfunction unwrap(SD59x18 x) pure returns (int256 result) {\n    result = SD59x18.unwrap(x);\n}\n\n/// @notice Wraps an int256 number into SD59x18.\nfunction wrap(int256 x) pure returns (SD59x18 result) {\n    result = SD59x18.wrap(x);\n}\n"
      },
      "@prb/math/src/sd59x18/Constants.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport { SD59x18 } from \"./ValueType.sol\";\n\n// NOTICE: the \"u\" prefix stands for \"unwrapped\".\n\n/// @dev Euler's number as an SD59x18 number.\nSD59x18 constant E = SD59x18.wrap(2_718281828459045235);\n\n/// @dev The maximum input permitted in {exp}.\nint256 constant uEXP_MAX_INPUT = 133_084258667509499440;\nSD59x18 constant EXP_MAX_INPUT = SD59x18.wrap(uEXP_MAX_INPUT);\n\n/// @dev Any value less than this returns 0 in {exp}.\nint256 constant uEXP_MIN_THRESHOLD = -41_446531673892822322;\nSD59x18 constant EXP_MIN_THRESHOLD = SD59x18.wrap(uEXP_MIN_THRESHOLD);\n\n/// @dev The maximum input permitted in {exp2}.\nint256 constant uEXP2_MAX_INPUT = 192e18 - 1;\nSD59x18 constant EXP2_MAX_INPUT = SD59x18.wrap(uEXP2_MAX_INPUT);\n\n/// @dev Any value less than this returns 0 in {exp2}.\nint256 constant uEXP2_MIN_THRESHOLD = -59_794705707972522261;\nSD59x18 constant EXP2_MIN_THRESHOLD = SD59x18.wrap(uEXP2_MIN_THRESHOLD);\n\n/// @dev Half the UNIT number.\nint256 constant uHALF_UNIT = 0.5e18;\nSD59x18 constant HALF_UNIT = SD59x18.wrap(uHALF_UNIT);\n\n/// @dev $log_2(10)$ as an SD59x18 number.\nint256 constant uLOG2_10 = 3_321928094887362347;\nSD59x18 constant LOG2_10 = SD59x18.wrap(uLOG2_10);\n\n/// @dev $log_2(e)$ as an SD59x18 number.\nint256 constant uLOG2_E = 1_442695040888963407;\nSD59x18 constant LOG2_E = SD59x18.wrap(uLOG2_E);\n\n/// @dev The maximum value an SD59x18 number can have.\nint256 constant uMAX_SD59x18 = 57896044618658097711785492504343953926634992332820282019728_792003956564819967;\nSD59x18 constant MAX_SD59x18 = SD59x18.wrap(uMAX_SD59x18);\n\n/// @dev The maximum whole value an SD59x18 number can have.\nint256 constant uMAX_WHOLE_SD59x18 = 57896044618658097711785492504343953926634992332820282019728_000000000000000000;\nSD59x18 constant MAX_WHOLE_SD59x18 = SD59x18.wrap(uMAX_WHOLE_SD59x18);\n\n/// @dev The minimum value an SD59x18 number can have.\nint256 constant uMIN_SD59x18 = -57896044618658097711785492504343953926634992332820282019728_792003956564819968;\nSD59x18 constant MIN_SD59x18 = SD59x18.wrap(uMIN_SD59x18);\n\n/// @dev The minimum whole value an SD59x18 number can have.\nint256 constant uMIN_WHOLE_SD59x18 = -57896044618658097711785492504343953926634992332820282019728_000000000000000000;\nSD59x18 constant MIN_WHOLE_SD59x18 = SD59x18.wrap(uMIN_WHOLE_SD59x18);\n\n/// @dev PI as an SD59x18 number.\nSD59x18 constant PI = SD59x18.wrap(3_141592653589793238);\n\n/// @dev The unit number, which gives the decimal precision of SD59x18.\nint256 constant uUNIT = 1e18;\nSD59x18 constant UNIT = SD59x18.wrap(1e18);\n\n/// @dev The unit number squared.\nint256 constant uUNIT_SQUARED = 1e36;\nSD59x18 constant UNIT_SQUARED = SD59x18.wrap(uUNIT_SQUARED);\n\n/// @dev Zero as an SD59x18 number.\nSD59x18 constant ZERO = SD59x18.wrap(0);\n"
      },
      "@prb/math/src/sd59x18/Errors.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport { SD59x18 } from \"./ValueType.sol\";\n\n/// @notice Thrown when taking the absolute value of `MIN_SD59x18`.\nerror PRBMath_SD59x18_Abs_MinSD59x18();\n\n/// @notice Thrown when ceiling a number overflows SD59x18.\nerror PRBMath_SD59x18_Ceil_Overflow(SD59x18 x);\n\n/// @notice Thrown when converting a basic integer to the fixed-point format overflows SD59x18.\nerror PRBMath_SD59x18_Convert_Overflow(int256 x);\n\n/// @notice Thrown when converting a basic integer to the fixed-point format underflows SD59x18.\nerror PRBMath_SD59x18_Convert_Underflow(int256 x);\n\n/// @notice Thrown when dividing two numbers and one of them is `MIN_SD59x18`.\nerror PRBMath_SD59x18_Div_InputTooSmall();\n\n/// @notice Thrown when dividing two numbers and one of the intermediary unsigned results overflows SD59x18.\nerror PRBMath_SD59x18_Div_Overflow(SD59x18 x, SD59x18 y);\n\n/// @notice Thrown when taking the natural exponent of a base greater than 133_084258667509499441.\nerror PRBMath_SD59x18_Exp_InputTooBig(SD59x18 x);\n\n/// @notice Thrown when taking the binary exponent of a base greater than 192e18.\nerror PRBMath_SD59x18_Exp2_InputTooBig(SD59x18 x);\n\n/// @notice Thrown when flooring a number underflows SD59x18.\nerror PRBMath_SD59x18_Floor_Underflow(SD59x18 x);\n\n/// @notice Thrown when taking the geometric mean of two numbers and their product is negative.\nerror PRBMath_SD59x18_Gm_NegativeProduct(SD59x18 x, SD59x18 y);\n\n/// @notice Thrown when taking the geometric mean of two numbers and multiplying them overflows SD59x18.\nerror PRBMath_SD59x18_Gm_Overflow(SD59x18 x, SD59x18 y);\n\n/// @notice Thrown when trying to cast an SD59x18 number that doesn't fit in SD1x18.\nerror PRBMath_SD59x18_IntoSD1x18_Overflow(SD59x18 x);\n\n/// @notice Thrown when trying to cast an SD59x18 number that doesn't fit in SD1x18.\nerror PRBMath_SD59x18_IntoSD1x18_Underflow(SD59x18 x);\n\n/// @notice Thrown when trying to cast an SD59x18 number that doesn't fit in SD21x18.\nerror PRBMath_SD59x18_IntoSD21x18_Overflow(SD59x18 x);\n\n/// @notice Thrown when trying to cast an SD59x18 number that doesn't fit in SD21x18.\nerror PRBMath_SD59x18_IntoSD21x18_Underflow(SD59x18 x);\n\n/// @notice Thrown when trying to cast an SD59x18 number that doesn't fit in UD2x18.\nerror PRBMath_SD59x18_IntoUD2x18_Overflow(SD59x18 x);\n\n/// @notice Thrown when trying to cast an SD59x18 number that doesn't fit in UD2x18.\nerror PRBMath_SD59x18_IntoUD2x18_Underflow(SD59x18 x);\n\n/// @notice Thrown when trying to cast an SD59x18 number that doesn't fit in UD21x18.\nerror PRBMath_SD59x18_IntoUD21x18_Overflow(SD59x18 x);\n\n/// @notice Thrown when trying to cast an SD59x18 number that doesn't fit in UD21x18.\nerror PRBMath_SD59x18_IntoUD21x18_Underflow(SD59x18 x);\n\n/// @notice Thrown when trying to cast an SD59x18 number that doesn't fit in UD60x18.\nerror PRBMath_SD59x18_IntoUD60x18_Underflow(SD59x18 x);\n\n/// @notice Thrown when trying to cast an SD59x18 number that doesn't fit in uint128.\nerror PRBMath_SD59x18_IntoUint128_Overflow(SD59x18 x);\n\n/// @notice Thrown when trying to cast an SD59x18 number that doesn't fit in uint128.\nerror PRBMath_SD59x18_IntoUint128_Underflow(SD59x18 x);\n\n/// @notice Thrown when trying to cast an SD59x18 number that doesn't fit in uint256.\nerror PRBMath_SD59x18_IntoUint256_Underflow(SD59x18 x);\n\n/// @notice Thrown when trying to cast an SD59x18 number that doesn't fit in uint40.\nerror PRBMath_SD59x18_IntoUint40_Overflow(SD59x18 x);\n\n/// @notice Thrown when trying to cast an SD59x18 number that doesn't fit in uint40.\nerror PRBMath_SD59x18_IntoUint40_Underflow(SD59x18 x);\n\n/// @notice Thrown when taking the logarithm of a number less than or equal to zero.\nerror PRBMath_SD59x18_Log_InputTooSmall(SD59x18 x);\n\n/// @notice Thrown when multiplying two numbers and one of the inputs is `MIN_SD59x18`.\nerror PRBMath_SD59x18_Mul_InputTooSmall();\n\n/// @notice Thrown when multiplying two numbers and the intermediary absolute result overflows SD59x18.\nerror PRBMath_SD59x18_Mul_Overflow(SD59x18 x, SD59x18 y);\n\n/// @notice Thrown when raising a number to a power and the intermediary absolute result overflows SD59x18.\nerror PRBMath_SD59x18_Powu_Overflow(SD59x18 x, uint256 y);\n\n/// @notice Thrown when taking the square root of a negative number.\nerror PRBMath_SD59x18_Sqrt_NegativeInput(SD59x18 x);\n\n/// @notice Thrown when the calculating the square root overflows SD59x18.\nerror PRBMath_SD59x18_Sqrt_Overflow(SD59x18 x);\n"
      },
      "@prb/math/src/sd59x18/Helpers.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport { wrap } from \"./Casting.sol\";\nimport { SD59x18 } from \"./ValueType.sol\";\n\n/// @notice Implements the checked addition operation (+) in the SD59x18 type.\nfunction add(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {\n    return wrap(x.unwrap() + y.unwrap());\n}\n\n/// @notice Implements the AND (&) bitwise operation in the SD59x18 type.\nfunction and(SD59x18 x, int256 bits) pure returns (SD59x18 result) {\n    return wrap(x.unwrap() & bits);\n}\n\n/// @notice Implements the AND (&) bitwise operation in the SD59x18 type.\nfunction and2(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {\n    return wrap(x.unwrap() & y.unwrap());\n}\n\n/// @notice Implements the equal (=) operation in the SD59x18 type.\nfunction eq(SD59x18 x, SD59x18 y) pure returns (bool result) {\n    result = x.unwrap() == y.unwrap();\n}\n\n/// @notice Implements the greater than operation (>) in the SD59x18 type.\nfunction gt(SD59x18 x, SD59x18 y) pure returns (bool result) {\n    result = x.unwrap() > y.unwrap();\n}\n\n/// @notice Implements the greater than or equal to operation (>=) in the SD59x18 type.\nfunction gte(SD59x18 x, SD59x18 y) pure returns (bool result) {\n    result = x.unwrap() >= y.unwrap();\n}\n\n/// @notice Implements a zero comparison check function in the SD59x18 type.\nfunction isZero(SD59x18 x) pure returns (bool result) {\n    result = x.unwrap() == 0;\n}\n\n/// @notice Implements the left shift operation (<<) in the SD59x18 type.\nfunction lshift(SD59x18 x, uint256 bits) pure returns (SD59x18 result) {\n    result = wrap(x.unwrap() << bits);\n}\n\n/// @notice Implements the lower than operation (<) in the SD59x18 type.\nfunction lt(SD59x18 x, SD59x18 y) pure returns (bool result) {\n    result = x.unwrap() < y.unwrap();\n}\n\n/// @notice Implements the lower than or equal to operation (<=) in the SD59x18 type.\nfunction lte(SD59x18 x, SD59x18 y) pure returns (bool result) {\n    result = x.unwrap() <= y.unwrap();\n}\n\n/// @notice Implements the unchecked modulo operation (%) in the SD59x18 type.\nfunction mod(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {\n    result = wrap(x.unwrap() % y.unwrap());\n}\n\n/// @notice Implements the not equal operation (!=) in the SD59x18 type.\nfunction neq(SD59x18 x, SD59x18 y) pure returns (bool result) {\n    result = x.unwrap() != y.unwrap();\n}\n\n/// @notice Implements the NOT (~) bitwise operation in the SD59x18 type.\nfunction not(SD59x18 x) pure returns (SD59x18 result) {\n    result = wrap(~x.unwrap());\n}\n\n/// @notice Implements the OR (|) bitwise operation in the SD59x18 type.\nfunction or(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {\n    result = wrap(x.unwrap() | y.unwrap());\n}\n\n/// @notice Implements the right shift operation (>>) in the SD59x18 type.\nfunction rshift(SD59x18 x, uint256 bits) pure returns (SD59x18 result) {\n    result = wrap(x.unwrap() >> bits);\n}\n\n/// @notice Implements the checked subtraction operation (-) in the SD59x18 type.\nfunction sub(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {\n    result = wrap(x.unwrap() - y.unwrap());\n}\n\n/// @notice Implements the checked unary minus operation (-) in the SD59x18 type.\nfunction unary(SD59x18 x) pure returns (SD59x18 result) {\n    result = wrap(-x.unwrap());\n}\n\n/// @notice Implements the unchecked addition operation (+) in the SD59x18 type.\nfunction uncheckedAdd(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {\n    unchecked {\n        result = wrap(x.unwrap() + y.unwrap());\n    }\n}\n\n/// @notice Implements the unchecked subtraction operation (-) in the SD59x18 type.\nfunction uncheckedSub(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {\n    unchecked {\n        result = wrap(x.unwrap() - y.unwrap());\n    }\n}\n\n/// @notice Implements the unchecked unary minus operation (-) in the SD59x18 type.\nfunction uncheckedUnary(SD59x18 x) pure returns (SD59x18 result) {\n    unchecked {\n        result = wrap(-x.unwrap());\n    }\n}\n\n/// @notice Implements the XOR (^) bitwise operation in the SD59x18 type.\nfunction xor(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {\n    result = wrap(x.unwrap() ^ y.unwrap());\n}\n"
      },
      "@prb/math/src/sd59x18/Math.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport \"../Common.sol\" as Common;\nimport \"./Errors.sol\" as Errors;\nimport {\n    uEXP_MAX_INPUT,\n    uEXP2_MAX_INPUT,\n    uEXP_MIN_THRESHOLD,\n    uEXP2_MIN_THRESHOLD,\n    uHALF_UNIT,\n    uLOG2_10,\n    uLOG2_E,\n    uMAX_SD59x18,\n    uMAX_WHOLE_SD59x18,\n    uMIN_SD59x18,\n    uMIN_WHOLE_SD59x18,\n    UNIT,\n    uUNIT,\n    uUNIT_SQUARED,\n    ZERO\n} from \"./Constants.sol\";\nimport { wrap } from \"./Helpers.sol\";\nimport { SD59x18 } from \"./ValueType.sol\";\n\n/// @notice Calculates the absolute value of x.\n///\n/// @dev Requirements:\n/// - x > MIN_SD59x18.\n///\n/// @param x The SD59x18 number for which to calculate the absolute value.\n/// @return result The absolute value of x as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction abs(SD59x18 x) pure returns (SD59x18 result) {\n    int256 xInt = x.unwrap();\n    if (xInt == uMIN_SD59x18) {\n        revert Errors.PRBMath_SD59x18_Abs_MinSD59x18();\n    }\n    result = xInt < 0 ? wrap(-xInt) : x;\n}\n\n/// @notice Calculates the arithmetic average of x and y.\n///\n/// @dev Notes:\n/// - The result is rounded toward zero.\n///\n/// @param x The first operand as an SD59x18 number.\n/// @param y The second operand as an SD59x18 number.\n/// @return result The arithmetic average as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction avg(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {\n    int256 xInt = x.unwrap();\n    int256 yInt = y.unwrap();\n\n    unchecked {\n        // This operation is equivalent to `x / 2 +  y / 2`, and it can never overflow.\n        int256 sum = (xInt >> 1) + (yInt >> 1);\n\n        if (sum < 0) {\n            // If at least one of x and y is odd, add 1 to the result, because shifting negative numbers to the right\n            // rounds toward negative infinity. The right part is equivalent to `sum + (x % 2 == 1 || y % 2 == 1)`.\n            assembly (\"memory-safe\") {\n                result := add(sum, and(or(xInt, yInt), 1))\n            }\n        } else {\n            // Add 1 if both x and y are odd to account for the double 0.5 remainder truncated after shifting.\n            result = wrap(sum + (xInt & yInt & 1));\n        }\n    }\n}\n\n/// @notice Yields the smallest whole number greater than or equal to x.\n///\n/// @dev Optimized for fractional value inputs, because every whole value has (1e18 - 1) fractional counterparts.\n/// See https://en.wikipedia.org/wiki/Floor_and_ceiling_functions.\n///\n/// Requirements:\n/// - x ≤ MAX_WHOLE_SD59x18\n///\n/// @param x The SD59x18 number to ceil.\n/// @return result The smallest whole number greater than or equal to x, as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction ceil(SD59x18 x) pure returns (SD59x18 result) {\n    int256 xInt = x.unwrap();\n    if (xInt > uMAX_WHOLE_SD59x18) {\n        revert Errors.PRBMath_SD59x18_Ceil_Overflow(x);\n    }\n\n    int256 remainder = xInt % uUNIT;\n    if (remainder == 0) {\n        result = x;\n    } else {\n        unchecked {\n            // Solidity uses C fmod style, which returns a modulus with the same sign as x.\n            int256 resultInt = xInt - remainder;\n            if (xInt > 0) {\n                resultInt += uUNIT;\n            }\n            result = wrap(resultInt);\n        }\n    }\n}\n\n/// @notice Divides two SD59x18 numbers, returning a new SD59x18 number.\n///\n/// @dev This is an extension of {Common.mulDiv} for signed numbers, which works by computing the signs and the absolute\n/// values separately.\n///\n/// Notes:\n/// - Refer to the notes in {Common.mulDiv}.\n/// - The result is rounded toward zero.\n///\n/// Requirements:\n/// - Refer to the requirements in {Common.mulDiv}.\n/// - None of the inputs can be `MIN_SD59x18`.\n/// - The denominator must not be zero.\n/// - The result must fit in SD59x18.\n///\n/// @param x The numerator as an SD59x18 number.\n/// @param y The denominator as an SD59x18 number.\n/// @return result The quotient as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction div(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {\n    int256 xInt = x.unwrap();\n    int256 yInt = y.unwrap();\n    if (xInt == uMIN_SD59x18 || yInt == uMIN_SD59x18) {\n        revert Errors.PRBMath_SD59x18_Div_InputTooSmall();\n    }\n\n    // Get hold of the absolute values of x and y.\n    uint256 xAbs;\n    uint256 yAbs;\n    unchecked {\n        xAbs = xInt < 0 ? uint256(-xInt) : uint256(xInt);\n        yAbs = yInt < 0 ? uint256(-yInt) : uint256(yInt);\n    }\n\n    // Compute the absolute value (x*UNIT÷y). The resulting value must fit in SD59x18.\n    uint256 resultAbs = Common.mulDiv(xAbs, uint256(uUNIT), yAbs);\n    if (resultAbs > uint256(uMAX_SD59x18)) {\n        revert Errors.PRBMath_SD59x18_Div_Overflow(x, y);\n    }\n\n    // Check if x and y have the same sign using two's complement representation. The left-most bit represents the sign (1 for\n    // negative, 0 for positive or zero).\n    bool sameSign = (xInt ^ yInt) > -1;\n\n    // If the inputs have the same sign, the result should be positive. Otherwise, it should be negative.\n    unchecked {\n        result = wrap(sameSign ? int256(resultAbs) : -int256(resultAbs));\n    }\n}\n\n/// @notice Calculates the natural exponent of x using the following formula:\n///\n/// $$\n/// e^x = 2^{x * log_2{e}}\n/// $$\n///\n/// @dev Notes:\n/// - Refer to the notes in {exp2}.\n///\n/// Requirements:\n/// - Refer to the requirements in {exp2}.\n/// - x < 133_084258667509499441.\n///\n/// @param x The exponent as an SD59x18 number.\n/// @return result The result as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction exp(SD59x18 x) pure returns (SD59x18 result) {\n    int256 xInt = x.unwrap();\n\n    // Any input less than the threshold returns zero.\n    // This check also prevents an overflow for very small numbers.\n    if (xInt < uEXP_MIN_THRESHOLD) {\n        return ZERO;\n    }\n\n    // This check prevents values greater than 192e18 from being passed to {exp2}.\n    if (xInt > uEXP_MAX_INPUT) {\n        revert Errors.PRBMath_SD59x18_Exp_InputTooBig(x);\n    }\n\n    unchecked {\n        // Inline the fixed-point multiplication to save gas.\n        int256 doubleUnitProduct = xInt * uLOG2_E;\n        result = exp2(wrap(doubleUnitProduct / uUNIT));\n    }\n}\n\n/// @notice Calculates the binary exponent of x using the binary fraction method using the following formula:\n///\n/// $$\n/// 2^{-x} = \\frac{1}{2^x}\n/// $$\n///\n/// @dev See https://ethereum.stackexchange.com/q/79903/24693.\n///\n/// Notes:\n/// - If x < -59_794705707972522261, the result is zero.\n///\n/// Requirements:\n/// - x < 192e18.\n/// - The result must fit in SD59x18.\n///\n/// @param x The exponent as an SD59x18 number.\n/// @return result The result as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction exp2(SD59x18 x) pure returns (SD59x18 result) {\n    int256 xInt = x.unwrap();\n    if (xInt < 0) {\n        // The inverse of any number less than the threshold is truncated to zero.\n        if (xInt < uEXP2_MIN_THRESHOLD) {\n            return ZERO;\n        }\n\n        unchecked {\n            // Inline the fixed-point inversion to save gas.\n            result = wrap(uUNIT_SQUARED / exp2(wrap(-xInt)).unwrap());\n        }\n    } else {\n        // Numbers greater than or equal to 192e18 don't fit in the 192.64-bit format.\n        if (xInt > uEXP2_MAX_INPUT) {\n            revert Errors.PRBMath_SD59x18_Exp2_InputTooBig(x);\n        }\n\n        unchecked {\n            // Convert x to the 192.64-bit fixed-point format.\n            uint256 x_192x64 = uint256((xInt << 64) / uUNIT);\n\n            // It is safe to cast the result to int256 due to the checks above.\n            result = wrap(int256(Common.exp2(x_192x64)));\n        }\n    }\n}\n\n/// @notice Yields the greatest whole number less than or equal to x.\n///\n/// @dev Optimized for fractional value inputs, because for every whole value there are (1e18 - 1) fractional\n/// counterparts. See https://en.wikipedia.org/wiki/Floor_and_ceiling_functions.\n///\n/// Requirements:\n/// - x ≥ MIN_WHOLE_SD59x18\n///\n/// @param x The SD59x18 number to floor.\n/// @return result The greatest whole number less than or equal to x, as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction floor(SD59x18 x) pure returns (SD59x18 result) {\n    int256 xInt = x.unwrap();\n    if (xInt < uMIN_WHOLE_SD59x18) {\n        revert Errors.PRBMath_SD59x18_Floor_Underflow(x);\n    }\n\n    int256 remainder = xInt % uUNIT;\n    if (remainder == 0) {\n        result = x;\n    } else {\n        unchecked {\n            // Solidity uses C fmod style, which returns a modulus with the same sign as x.\n            int256 resultInt = xInt - remainder;\n            if (xInt < 0) {\n                resultInt -= uUNIT;\n            }\n            result = wrap(resultInt);\n        }\n    }\n}\n\n/// @notice Yields the excess beyond the floor of x for positive numbers and the part of the number to the right.\n/// of the radix point for negative numbers.\n/// @dev Based on the odd function definition. https://en.wikipedia.org/wiki/Fractional_part\n/// @param x The SD59x18 number to get the fractional part of.\n/// @return result The fractional part of x as an SD59x18 number.\nfunction frac(SD59x18 x) pure returns (SD59x18 result) {\n    result = wrap(x.unwrap() % uUNIT);\n}\n\n/// @notice Calculates the geometric mean of x and y, i.e. $\\sqrt{x * y}$.\n///\n/// @dev Notes:\n/// - The result is rounded toward zero.\n///\n/// Requirements:\n/// - x * y must fit in SD59x18.\n/// - x * y must not be negative, since complex numbers are not supported.\n///\n/// @param x The first operand as an SD59x18 number.\n/// @param y The second operand as an SD59x18 number.\n/// @return result The result as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction gm(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {\n    int256 xInt = x.unwrap();\n    int256 yInt = y.unwrap();\n    if (xInt == 0 || yInt == 0) {\n        return ZERO;\n    }\n\n    unchecked {\n        // Equivalent to `xy / x != y`. Checking for overflow this way is faster than letting Solidity do it.\n        int256 xyInt = xInt * yInt;\n        if (xyInt / xInt != yInt) {\n            revert Errors.PRBMath_SD59x18_Gm_Overflow(x, y);\n        }\n\n        // The product must not be negative, since complex numbers are not supported.\n        if (xyInt < 0) {\n            revert Errors.PRBMath_SD59x18_Gm_NegativeProduct(x, y);\n        }\n\n        // We don't need to multiply the result by `UNIT` here because the x*y product picked up a factor of `UNIT`\n        // during multiplication. See the comments in {Common.sqrt}.\n        uint256 resultUint = Common.sqrt(uint256(xyInt));\n        result = wrap(int256(resultUint));\n    }\n}\n\n/// @notice Calculates the inverse of x.\n///\n/// @dev Notes:\n/// - The result is rounded toward zero.\n///\n/// Requirements:\n/// - x must not be zero.\n///\n/// @param x The SD59x18 number for which to calculate the inverse.\n/// @return result The inverse as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction inv(SD59x18 x) pure returns (SD59x18 result) {\n    result = wrap(uUNIT_SQUARED / x.unwrap());\n}\n\n/// @notice Calculates the natural logarithm of x using the following formula:\n///\n/// $$\n/// ln{x} = log_2{x} / log_2{e}\n/// $$\n///\n/// @dev Notes:\n/// - Refer to the notes in {log2}.\n/// - The precision isn't sufficiently fine-grained to return exactly `UNIT` when the input is `E`.\n///\n/// Requirements:\n/// - Refer to the requirements in {log2}.\n///\n/// @param x The SD59x18 number for which to calculate the natural logarithm.\n/// @return result The natural logarithm as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction ln(SD59x18 x) pure returns (SD59x18 result) {\n    // Inline the fixed-point multiplication to save gas. This is overflow-safe because the maximum value that\n    // {log2} can return is ~195_205294292027477728.\n    result = wrap(log2(x).unwrap() * uUNIT / uLOG2_E);\n}\n\n/// @notice Calculates the common logarithm of x using the following formula:\n///\n/// $$\n/// log_{10}{x} = log_2{x} / log_2{10}\n/// $$\n///\n/// However, if x is an exact power of ten, a hard coded value is returned.\n///\n/// @dev Notes:\n/// - Refer to the notes in {log2}.\n///\n/// Requirements:\n/// - Refer to the requirements in {log2}.\n///\n/// @param x The SD59x18 number for which to calculate the common logarithm.\n/// @return result The common logarithm as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction log10(SD59x18 x) pure returns (SD59x18 result) {\n    int256 xInt = x.unwrap();\n    if (xInt < 0) {\n        revert Errors.PRBMath_SD59x18_Log_InputTooSmall(x);\n    }\n\n    // Note that the `mul` in this block is the standard multiplication operation, not {SD59x18.mul}.\n    // prettier-ignore\n    assembly (\"memory-safe\") {\n        switch x\n        case 1 { result := mul(uUNIT, sub(0, 18)) }\n        case 10 { result := mul(uUNIT, sub(1, 18)) }\n        case 100 { result := mul(uUNIT, sub(2, 18)) }\n        case 1000 { result := mul(uUNIT, sub(3, 18)) }\n        case 10000 { result := mul(uUNIT, sub(4, 18)) }\n        case 100000 { result := mul(uUNIT, sub(5, 18)) }\n        case 1000000 { result := mul(uUNIT, sub(6, 18)) }\n        case 10000000 { result := mul(uUNIT, sub(7, 18)) }\n        case 100000000 { result := mul(uUNIT, sub(8, 18)) }\n        case 1000000000 { result := mul(uUNIT, sub(9, 18)) }\n        case 10000000000 { result := mul(uUNIT, sub(10, 18)) }\n        case 100000000000 { result := mul(uUNIT, sub(11, 18)) }\n        case 1000000000000 { result := mul(uUNIT, sub(12, 18)) }\n        case 10000000000000 { result := mul(uUNIT, sub(13, 18)) }\n        case 100000000000000 { result := mul(uUNIT, sub(14, 18)) }\n        case 1000000000000000 { result := mul(uUNIT, sub(15, 18)) }\n        case 10000000000000000 { result := mul(uUNIT, sub(16, 18)) }\n        case 100000000000000000 { result := mul(uUNIT, sub(17, 18)) }\n        case 1000000000000000000 { result := 0 }\n        case 10000000000000000000 { result := uUNIT }\n        case 100000000000000000000 { result := mul(uUNIT, 2) }\n        case 1000000000000000000000 { result := mul(uUNIT, 3) }\n        case 10000000000000000000000 { result := mul(uUNIT, 4) }\n        case 100000000000000000000000 { result := mul(uUNIT, 5) }\n        case 1000000000000000000000000 { result := mul(uUNIT, 6) }\n        case 10000000000000000000000000 { result := mul(uUNIT, 7) }\n        case 100000000000000000000000000 { result := mul(uUNIT, 8) }\n        case 1000000000000000000000000000 { result := mul(uUNIT, 9) }\n        case 10000000000000000000000000000 { result := mul(uUNIT, 10) }\n        case 100000000000000000000000000000 { result := mul(uUNIT, 11) }\n        case 1000000000000000000000000000000 { result := mul(uUNIT, 12) }\n        case 10000000000000000000000000000000 { result := mul(uUNIT, 13) }\n        case 100000000000000000000000000000000 { result := mul(uUNIT, 14) }\n        case 1000000000000000000000000000000000 { result := mul(uUNIT, 15) }\n        case 10000000000000000000000000000000000 { result := mul(uUNIT, 16) }\n        case 100000000000000000000000000000000000 { result := mul(uUNIT, 17) }\n        case 1000000000000000000000000000000000000 { result := mul(uUNIT, 18) }\n        case 10000000000000000000000000000000000000 { result := mul(uUNIT, 19) }\n        case 100000000000000000000000000000000000000 { result := mul(uUNIT, 20) }\n        case 1000000000000000000000000000000000000000 { result := mul(uUNIT, 21) }\n        case 10000000000000000000000000000000000000000 { result := mul(uUNIT, 22) }\n        case 100000000000000000000000000000000000000000 { result := mul(uUNIT, 23) }\n        case 1000000000000000000000000000000000000000000 { result := mul(uUNIT, 24) }\n        case 10000000000000000000000000000000000000000000 { result := mul(uUNIT, 25) }\n        case 100000000000000000000000000000000000000000000 { result := mul(uUNIT, 26) }\n        case 1000000000000000000000000000000000000000000000 { result := mul(uUNIT, 27) }\n        case 10000000000000000000000000000000000000000000000 { result := mul(uUNIT, 28) }\n        case 100000000000000000000000000000000000000000000000 { result := mul(uUNIT, 29) }\n        case 1000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 30) }\n        case 10000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 31) }\n        case 100000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 32) }\n        case 1000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 33) }\n        case 10000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 34) }\n        case 100000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 35) }\n        case 1000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 36) }\n        case 10000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 37) }\n        case 100000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 38) }\n        case 1000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 39) }\n        case 10000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 40) }\n        case 100000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 41) }\n        case 1000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 42) }\n        case 10000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 43) }\n        case 100000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 44) }\n        case 1000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 45) }\n        case 10000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 46) }\n        case 100000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 47) }\n        case 1000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 48) }\n        case 10000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 49) }\n        case 100000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 50) }\n        case 1000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 51) }\n        case 10000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 52) }\n        case 100000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 53) }\n        case 1000000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 54) }\n        case 10000000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 55) }\n        case 100000000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 56) }\n        case 1000000000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 57) }\n        case 10000000000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 58) }\n        default { result := uMAX_SD59x18 }\n    }\n\n    if (result.unwrap() == uMAX_SD59x18) {\n        unchecked {\n            // Inline the fixed-point division to save gas.\n            result = wrap(log2(x).unwrap() * uUNIT / uLOG2_10);\n        }\n    }\n}\n\n/// @notice Calculates the binary logarithm of x using the iterative approximation algorithm:\n///\n/// $$\n/// log_2{x} = n + log_2{y}, \\text{ where } y = x*2^{-n}, \\ y \\in [1, 2)\n/// $$\n///\n/// For $0 \\leq x \\lt 1$, the input is inverted:\n///\n/// $$\n/// log_2{x} = -log_2{\\frac{1}{x}}\n/// $$\n///\n/// @dev See https://en.wikipedia.org/wiki/Binary_logarithm#Iterative_approximation.\n///\n/// Notes:\n/// - Due to the lossy precision of the iterative approximation, the results are not perfectly accurate to the last decimal.\n///\n/// Requirements:\n/// - x > 0\n///\n/// @param x The SD59x18 number for which to calculate the binary logarithm.\n/// @return result The binary logarithm as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction log2(SD59x18 x) pure returns (SD59x18 result) {\n    int256 xInt = x.unwrap();\n    if (xInt <= 0) {\n        revert Errors.PRBMath_SD59x18_Log_InputTooSmall(x);\n    }\n\n    unchecked {\n        int256 sign;\n        if (xInt >= uUNIT) {\n            sign = 1;\n        } else {\n            sign = -1;\n            // Inline the fixed-point inversion to save gas.\n            xInt = uUNIT_SQUARED / xInt;\n        }\n\n        // Calculate the integer part of the logarithm.\n        uint256 n = Common.msb(uint256(xInt / uUNIT));\n\n        // This is the integer part of the logarithm as an SD59x18 number. The operation can't overflow\n        // because n is at most 255, `UNIT` is 1e18, and the sign is either 1 or -1.\n        int256 resultInt = int256(n) * uUNIT;\n\n        // Calculate $y = x * 2^{-n}$.\n        int256 y = xInt >> n;\n\n        // If y is the unit number, the fractional part is zero.\n        if (y == uUNIT) {\n            return wrap(resultInt * sign);\n        }\n\n        // Calculate the fractional part via the iterative approximation.\n        // The `delta >>= 1` part is equivalent to `delta /= 2`, but shifting bits is more gas efficient.\n        int256 DOUBLE_UNIT = 2e18;\n        for (int256 delta = uHALF_UNIT; delta > 0; delta >>= 1) {\n            y = (y * y) / uUNIT;\n\n            // Is y^2 >= 2e18 and so in the range [2e18, 4e18)?\n            if (y >= DOUBLE_UNIT) {\n                // Add the 2^{-m} factor to the logarithm.\n                resultInt = resultInt + delta;\n\n                // Halve y, which corresponds to z/2 in the Wikipedia article.\n                y >>= 1;\n            }\n        }\n        resultInt *= sign;\n        result = wrap(resultInt);\n    }\n}\n\n/// @notice Multiplies two SD59x18 numbers together, returning a new SD59x18 number.\n///\n/// @dev Notes:\n/// - Refer to the notes in {Common.mulDiv18}.\n///\n/// Requirements:\n/// - Refer to the requirements in {Common.mulDiv18}.\n/// - None of the inputs can be `MIN_SD59x18`.\n/// - The result must fit in SD59x18.\n///\n/// @param x The multiplicand as an SD59x18 number.\n/// @param y The multiplier as an SD59x18 number.\n/// @return result The product as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction mul(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {\n    int256 xInt = x.unwrap();\n    int256 yInt = y.unwrap();\n    if (xInt == uMIN_SD59x18 || yInt == uMIN_SD59x18) {\n        revert Errors.PRBMath_SD59x18_Mul_InputTooSmall();\n    }\n\n    // Get hold of the absolute values of x and y.\n    uint256 xAbs;\n    uint256 yAbs;\n    unchecked {\n        xAbs = xInt < 0 ? uint256(-xInt) : uint256(xInt);\n        yAbs = yInt < 0 ? uint256(-yInt) : uint256(yInt);\n    }\n\n    // Compute the absolute value (x*y÷UNIT). The resulting value must fit in SD59x18.\n    uint256 resultAbs = Common.mulDiv18(xAbs, yAbs);\n    if (resultAbs > uint256(uMAX_SD59x18)) {\n        revert Errors.PRBMath_SD59x18_Mul_Overflow(x, y);\n    }\n\n    // Check if x and y have the same sign using two's complement representation. The left-most bit represents the sign (1 for\n    // negative, 0 for positive or zero).\n    bool sameSign = (xInt ^ yInt) > -1;\n\n    // If the inputs have the same sign, the result should be positive. Otherwise, it should be negative.\n    unchecked {\n        result = wrap(sameSign ? int256(resultAbs) : -int256(resultAbs));\n    }\n}\n\n/// @notice Raises x to the power of y using the following formula:\n///\n/// $$\n/// x^y = 2^{log_2{x} * y}\n/// $$\n///\n/// @dev Notes:\n/// - Refer to the notes in {exp2}, {log2}, and {mul}.\n/// - Returns `UNIT` for 0^0.\n///\n/// Requirements:\n/// - Refer to the requirements in {exp2}, {log2}, and {mul}.\n///\n/// @param x The base as an SD59x18 number.\n/// @param y Exponent to raise x to, as an SD59x18 number\n/// @return result x raised to power y, as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction pow(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {\n    int256 xInt = x.unwrap();\n    int256 yInt = y.unwrap();\n\n    // If both x and y are zero, the result is `UNIT`. If just x is zero, the result is always zero.\n    if (xInt == 0) {\n        return yInt == 0 ? UNIT : ZERO;\n    }\n    // If x is `UNIT`, the result is always `UNIT`.\n    else if (xInt == uUNIT) {\n        return UNIT;\n    }\n\n    // If y is zero, the result is always `UNIT`.\n    if (yInt == 0) {\n        return UNIT;\n    }\n    // If y is `UNIT`, the result is always x.\n    else if (yInt == uUNIT) {\n        return x;\n    }\n\n    // Calculate the result using the formula.\n    result = exp2(mul(log2(x), y));\n}\n\n/// @notice Raises x (an SD59x18 number) to the power y (an unsigned basic integer) using the well-known\n/// algorithm \"exponentiation by squaring\".\n///\n/// @dev See https://en.wikipedia.org/wiki/Exponentiation_by_squaring.\n///\n/// Notes:\n/// - Refer to the notes in {Common.mulDiv18}.\n/// - Returns `UNIT` for 0^0.\n///\n/// Requirements:\n/// - Refer to the requirements in {abs} and {Common.mulDiv18}.\n/// - The result must fit in SD59x18.\n///\n/// @param x The base as an SD59x18 number.\n/// @param y The exponent as a uint256.\n/// @return result The result as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction powu(SD59x18 x, uint256 y) pure returns (SD59x18 result) {\n    uint256 xAbs = uint256(abs(x).unwrap());\n\n    // Calculate the first iteration of the loop in advance.\n    uint256 resultAbs = y & 1 > 0 ? xAbs : uint256(uUNIT);\n\n    // Equivalent to `for(y /= 2; y > 0; y /= 2)`.\n    uint256 yAux = y;\n    for (yAux >>= 1; yAux > 0; yAux >>= 1) {\n        xAbs = Common.mulDiv18(xAbs, xAbs);\n\n        // Equivalent to `y % 2 == 1`.\n        if (yAux & 1 > 0) {\n            resultAbs = Common.mulDiv18(resultAbs, xAbs);\n        }\n    }\n\n    // The result must fit in SD59x18.\n    if (resultAbs > uint256(uMAX_SD59x18)) {\n        revert Errors.PRBMath_SD59x18_Powu_Overflow(x, y);\n    }\n\n    unchecked {\n        // Is the base negative and the exponent odd? If yes, the result should be negative.\n        int256 resultInt = int256(resultAbs);\n        bool isNegative = x.unwrap() < 0 && y & 1 == 1;\n        if (isNegative) {\n            resultInt = -resultInt;\n        }\n        result = wrap(resultInt);\n    }\n}\n\n/// @notice Calculates the square root of x using the Babylonian method.\n///\n/// @dev See https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method.\n///\n/// Notes:\n/// - Only the positive root is returned.\n/// - The result is rounded toward zero.\n///\n/// Requirements:\n/// - x ≥ 0, since complex numbers are not supported.\n/// - x ≤ MAX_SD59x18 / UNIT\n///\n/// @param x The SD59x18 number for which to calculate the square root.\n/// @return result The result as an SD59x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction sqrt(SD59x18 x) pure returns (SD59x18 result) {\n    int256 xInt = x.unwrap();\n    if (xInt < 0) {\n        revert Errors.PRBMath_SD59x18_Sqrt_NegativeInput(x);\n    }\n    if (xInt > uMAX_SD59x18 / uUNIT) {\n        revert Errors.PRBMath_SD59x18_Sqrt_Overflow(x);\n    }\n\n    unchecked {\n        // Multiply x by `UNIT` to account for the factor of `UNIT` picked up when multiplying two SD59x18 numbers.\n        // In this case, the two numbers are both the square root.\n        uint256 resultUint = Common.sqrt(uint256(xInt * uUNIT));\n        result = wrap(int256(resultUint));\n    }\n}\n"
      },
      "@prb/math/src/sd59x18/ValueType.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport \"./Casting.sol\" as Casting;\nimport \"./Helpers.sol\" as Helpers;\nimport \"./Math.sol\" as Math;\n\n/// @notice The signed 59.18-decimal fixed-point number representation, which can have up to 59 digits and up to 18\n/// decimals. The values of this are bound by the minimum and the maximum values permitted by the underlying Solidity\n/// type int256.\ntype SD59x18 is int256;\n\n/*//////////////////////////////////////////////////////////////////////////\n                                    CASTING\n//////////////////////////////////////////////////////////////////////////*/\n\nusing {\n    Casting.intoInt256,\n    Casting.intoSD1x18,\n    Casting.intoSD21x18,\n    Casting.intoUD2x18,\n    Casting.intoUD21x18,\n    Casting.intoUD60x18,\n    Casting.intoUint256,\n    Casting.intoUint128,\n    Casting.intoUint40,\n    Casting.unwrap\n} for SD59x18 global;\n\n/*//////////////////////////////////////////////////////////////////////////\n                            MATHEMATICAL FUNCTIONS\n//////////////////////////////////////////////////////////////////////////*/\n\nusing {\n    Math.abs,\n    Math.avg,\n    Math.ceil,\n    Math.div,\n    Math.exp,\n    Math.exp2,\n    Math.floor,\n    Math.frac,\n    Math.gm,\n    Math.inv,\n    Math.log10,\n    Math.log2,\n    Math.ln,\n    Math.mul,\n    Math.pow,\n    Math.powu,\n    Math.sqrt\n} for SD59x18 global;\n\n/*//////////////////////////////////////////////////////////////////////////\n                                HELPER FUNCTIONS\n//////////////////////////////////////////////////////////////////////////*/\n\nusing {\n    Helpers.add,\n    Helpers.and,\n    Helpers.eq,\n    Helpers.gt,\n    Helpers.gte,\n    Helpers.isZero,\n    Helpers.lshift,\n    Helpers.lt,\n    Helpers.lte,\n    Helpers.mod,\n    Helpers.neq,\n    Helpers.not,\n    Helpers.or,\n    Helpers.rshift,\n    Helpers.sub,\n    Helpers.uncheckedAdd,\n    Helpers.uncheckedSub,\n    Helpers.uncheckedUnary,\n    Helpers.xor\n} for SD59x18 global;\n\n/*//////////////////////////////////////////////////////////////////////////\n                                    OPERATORS\n//////////////////////////////////////////////////////////////////////////*/\n\n// The global \"using for\" directive makes it possible to use these operators on the SD59x18 type.\nusing {\n    Helpers.add as +,\n    Helpers.and2 as &,\n    Math.div as /,\n    Helpers.eq as ==,\n    Helpers.gt as >,\n    Helpers.gte as >=,\n    Helpers.lt as <,\n    Helpers.lte as <=,\n    Helpers.mod as %,\n    Math.mul as *,\n    Helpers.neq as !=,\n    Helpers.not as ~,\n    Helpers.or as |,\n    Helpers.sub as -,\n    Helpers.unary as -,\n    Helpers.xor as ^\n} for SD59x18 global;\n"
      },
      "@prb/math/src/ud21x18/Casting.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport \"../Common.sol\" as Common;\nimport \"./Errors.sol\" as Errors;\nimport { SD59x18 } from \"../sd59x18/ValueType.sol\";\nimport { UD60x18 } from \"../ud60x18/ValueType.sol\";\nimport { UD21x18 } from \"./ValueType.sol\";\n\n/// @notice Casts a UD21x18 number into SD59x18.\n/// @dev There is no overflow check because UD21x18 ⊆ SD59x18.\nfunction intoSD59x18(UD21x18 x) pure returns (SD59x18 result) {\n    result = SD59x18.wrap(int256(uint256(UD21x18.unwrap(x))));\n}\n\n/// @notice Casts a UD21x18 number into UD60x18.\n/// @dev There is no overflow check because UD21x18 ⊆ UD60x18.\nfunction intoUD60x18(UD21x18 x) pure returns (UD60x18 result) {\n    result = UD60x18.wrap(UD21x18.unwrap(x));\n}\n\n/// @notice Casts a UD21x18 number into uint128.\n/// @dev This is basically an alias for {unwrap}.\nfunction intoUint128(UD21x18 x) pure returns (uint128 result) {\n    result = UD21x18.unwrap(x);\n}\n\n/// @notice Casts a UD21x18 number into uint256.\n/// @dev There is no overflow check because UD21x18 ⊆ uint256.\nfunction intoUint256(UD21x18 x) pure returns (uint256 result) {\n    result = uint256(UD21x18.unwrap(x));\n}\n\n/// @notice Casts a UD21x18 number into uint40.\n/// @dev Requirements:\n/// - x ≤ MAX_UINT40\nfunction intoUint40(UD21x18 x) pure returns (uint40 result) {\n    uint128 xUint = UD21x18.unwrap(x);\n    if (xUint > uint128(Common.MAX_UINT40)) {\n        revert Errors.PRBMath_UD21x18_IntoUint40_Overflow(x);\n    }\n    result = uint40(xUint);\n}\n\n/// @notice Alias for {wrap}.\nfunction ud21x18(uint128 x) pure returns (UD21x18 result) {\n    result = UD21x18.wrap(x);\n}\n\n/// @notice Unwrap a UD21x18 number into uint128.\nfunction unwrap(UD21x18 x) pure returns (uint128 result) {\n    result = UD21x18.unwrap(x);\n}\n\n/// @notice Wraps a uint128 number into UD21x18.\nfunction wrap(uint128 x) pure returns (UD21x18 result) {\n    result = UD21x18.wrap(x);\n}\n"
      },
      "@prb/math/src/ud21x18/Constants.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport { UD21x18 } from \"./ValueType.sol\";\n\n/// @dev Euler's number as a UD21x18 number.\nUD21x18 constant E = UD21x18.wrap(2_718281828459045235);\n\n/// @dev The maximum value a UD21x18 number can have.\nuint128 constant uMAX_UD21x18 = 340282366920938463463_374607431768211455;\nUD21x18 constant MAX_UD21x18 = UD21x18.wrap(uMAX_UD21x18);\n\n/// @dev PI as a UD21x18 number.\nUD21x18 constant PI = UD21x18.wrap(3_141592653589793238);\n\n/// @dev The unit number, which gives the decimal precision of UD21x18.\nuint256 constant uUNIT = 1e18;\nUD21x18 constant UNIT = UD21x18.wrap(1e18);\n"
      },
      "@prb/math/src/ud21x18/Errors.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport { UD21x18 } from \"./ValueType.sol\";\n\n/// @notice Thrown when trying to cast a UD21x18 number that doesn't fit in uint40.\nerror PRBMath_UD21x18_IntoUint40_Overflow(UD21x18 x);\n"
      },
      "@prb/math/src/ud21x18/ValueType.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport \"./Casting.sol\" as Casting;\n\n/// @notice The unsigned 21.18-decimal fixed-point number representation, which can have up to 21 digits and up to 18\n/// decimals. The values of this are bound by the minimum and the maximum values permitted by the underlying Solidity\n/// type uint128. This is useful when end users want to use uint128 to save gas, e.g. with tight variable packing in contract\n/// storage.\ntype UD21x18 is uint128;\n\n/*//////////////////////////////////////////////////////////////////////////\n                                    CASTING\n//////////////////////////////////////////////////////////////////////////*/\n\nusing {\n    Casting.intoSD59x18,\n    Casting.intoUD60x18,\n    Casting.intoUint128,\n    Casting.intoUint256,\n    Casting.intoUint40,\n    Casting.unwrap\n} for UD21x18 global;\n"
      },
      "@prb/math/src/ud2x18/Casting.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport \"../Common.sol\" as Common;\nimport \"./Errors.sol\" as Errors;\nimport { SD59x18 } from \"../sd59x18/ValueType.sol\";\nimport { UD60x18 } from \"../ud60x18/ValueType.sol\";\nimport { UD2x18 } from \"./ValueType.sol\";\n\n/// @notice Casts a UD2x18 number into SD59x18.\n/// @dev There is no overflow check because UD2x18 ⊆ SD59x18.\nfunction intoSD59x18(UD2x18 x) pure returns (SD59x18 result) {\n    result = SD59x18.wrap(int256(uint256(UD2x18.unwrap(x))));\n}\n\n/// @notice Casts a UD2x18 number into UD60x18.\n/// @dev There is no overflow check because UD2x18 ⊆ UD60x18.\nfunction intoUD60x18(UD2x18 x) pure returns (UD60x18 result) {\n    result = UD60x18.wrap(UD2x18.unwrap(x));\n}\n\n/// @notice Casts a UD2x18 number into uint128.\n/// @dev There is no overflow check because UD2x18 ⊆ uint128.\nfunction intoUint128(UD2x18 x) pure returns (uint128 result) {\n    result = uint128(UD2x18.unwrap(x));\n}\n\n/// @notice Casts a UD2x18 number into uint256.\n/// @dev There is no overflow check because UD2x18 ⊆ uint256.\nfunction intoUint256(UD2x18 x) pure returns (uint256 result) {\n    result = uint256(UD2x18.unwrap(x));\n}\n\n/// @notice Casts a UD2x18 number into uint40.\n/// @dev Requirements:\n/// - x ≤ MAX_UINT40\nfunction intoUint40(UD2x18 x) pure returns (uint40 result) {\n    uint64 xUint = UD2x18.unwrap(x);\n    if (xUint > uint64(Common.MAX_UINT40)) {\n        revert Errors.PRBMath_UD2x18_IntoUint40_Overflow(x);\n    }\n    result = uint40(xUint);\n}\n\n/// @notice Alias for {wrap}.\nfunction ud2x18(uint64 x) pure returns (UD2x18 result) {\n    result = UD2x18.wrap(x);\n}\n\n/// @notice Unwrap a UD2x18 number into uint64.\nfunction unwrap(UD2x18 x) pure returns (uint64 result) {\n    result = UD2x18.unwrap(x);\n}\n\n/// @notice Wraps a uint64 number into UD2x18.\nfunction wrap(uint64 x) pure returns (UD2x18 result) {\n    result = UD2x18.wrap(x);\n}\n"
      },
      "@prb/math/src/ud2x18/Constants.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport { UD2x18 } from \"./ValueType.sol\";\n\n/// @dev Euler's number as a UD2x18 number.\nUD2x18 constant E = UD2x18.wrap(2_718281828459045235);\n\n/// @dev The maximum value a UD2x18 number can have.\nuint64 constant uMAX_UD2x18 = 18_446744073709551615;\nUD2x18 constant MAX_UD2x18 = UD2x18.wrap(uMAX_UD2x18);\n\n/// @dev PI as a UD2x18 number.\nUD2x18 constant PI = UD2x18.wrap(3_141592653589793238);\n\n/// @dev The unit number, which gives the decimal precision of UD2x18.\nUD2x18 constant UNIT = UD2x18.wrap(1e18);\nuint64 constant uUNIT = 1e18;\n"
      },
      "@prb/math/src/ud2x18/Errors.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport { UD2x18 } from \"./ValueType.sol\";\n\n/// @notice Thrown when trying to cast a UD2x18 number that doesn't fit in uint40.\nerror PRBMath_UD2x18_IntoUint40_Overflow(UD2x18 x);\n"
      },
      "@prb/math/src/ud2x18/ValueType.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport \"./Casting.sol\" as Casting;\n\n/// @notice The unsigned 2.18-decimal fixed-point number representation, which can have up to 2 digits and up to 18\n/// decimals. The values of this are bound by the minimum and the maximum values permitted by the underlying Solidity\n/// type uint64. This is useful when end users want to use uint64 to save gas, e.g. with tight variable packing in contract\n/// storage.\ntype UD2x18 is uint64;\n\n/*//////////////////////////////////////////////////////////////////////////\n                                    CASTING\n//////////////////////////////////////////////////////////////////////////*/\n\nusing {\n    Casting.intoSD59x18,\n    Casting.intoUD60x18,\n    Casting.intoUint128,\n    Casting.intoUint256,\n    Casting.intoUint40,\n    Casting.unwrap\n} for UD2x18 global;\n"
      },
      "@prb/math/src/UD60x18.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\n/*\n\n██████╗ ██████╗ ██████╗ ███╗   ███╗ █████╗ ████████╗██╗  ██╗\n██╔══██╗██╔══██╗██╔══██╗████╗ ████║██╔══██╗╚══██╔══╝██║  ██║\n██████╔╝██████╔╝██████╔╝██╔████╔██║███████║   ██║   ███████║\n██╔═══╝ ██╔══██╗██╔══██╗██║╚██╔╝██║██╔══██║   ██║   ██╔══██║\n██║     ██║  ██║██████╔╝██║ ╚═╝ ██║██║  ██║   ██║   ██║  ██║\n╚═╝     ╚═╝  ╚═╝╚═════╝ ╚═╝     ╚═╝╚═╝  ╚═╝   ╚═╝   ╚═╝  ╚═╝\n\n██╗   ██╗██████╗  ██████╗  ██████╗ ██╗  ██╗ ██╗ █████╗\n██║   ██║██╔══██╗██╔════╝ ██╔═████╗╚██╗██╔╝███║██╔══██╗\n██║   ██║██║  ██║███████╗ ██║██╔██║ ╚███╔╝ ╚██║╚█████╔╝\n██║   ██║██║  ██║██╔═══██╗████╔╝██║ ██╔██╗  ██║██╔══██╗\n╚██████╔╝██████╔╝╚██████╔╝╚██████╔╝██╔╝ ██╗ ██║╚█████╔╝\n ╚═════╝ ╚═════╝  ╚═════╝  ╚═════╝ ╚═╝  ╚═╝ ╚═╝ ╚════╝\n\n*/\n\nimport \"./ud60x18/Casting.sol\";\nimport \"./ud60x18/Constants.sol\";\nimport \"./ud60x18/Conversions.sol\";\nimport \"./ud60x18/Errors.sol\";\nimport \"./ud60x18/Helpers.sol\";\nimport \"./ud60x18/Math.sol\";\nimport \"./ud60x18/ValueType.sol\";\n"
      },
      "@prb/math/src/ud60x18/Casting.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport \"./Errors.sol\" as CastingErrors;\nimport { MAX_UINT128, MAX_UINT40 } from \"../Common.sol\";\nimport { uMAX_SD1x18 } from \"../sd1x18/Constants.sol\";\nimport { SD1x18 } from \"../sd1x18/ValueType.sol\";\nimport { uMAX_SD21x18 } from \"../sd21x18/Constants.sol\";\nimport { SD21x18 } from \"../sd21x18/ValueType.sol\";\nimport { uMAX_SD59x18 } from \"../sd59x18/Constants.sol\";\nimport { SD59x18 } from \"../sd59x18/ValueType.sol\";\nimport { uMAX_UD2x18 } from \"../ud2x18/Constants.sol\";\nimport { uMAX_UD21x18 } from \"../ud21x18/Constants.sol\";\nimport { UD2x18 } from \"../ud2x18/ValueType.sol\";\nimport { UD21x18 } from \"../ud21x18/ValueType.sol\";\nimport { UD60x18 } from \"./ValueType.sol\";\n\n/// @notice Casts a UD60x18 number into SD1x18.\n/// @dev Requirements:\n/// - x ≤ uMAX_SD1x18\nfunction intoSD1x18(UD60x18 x) pure returns (SD1x18 result) {\n    uint256 xUint = UD60x18.unwrap(x);\n    if (xUint > uint256(int256(uMAX_SD1x18))) {\n        revert CastingErrors.PRBMath_UD60x18_IntoSD1x18_Overflow(x);\n    }\n    result = SD1x18.wrap(int64(uint64(xUint)));\n}\n\n/// @notice Casts a UD60x18 number into SD21x18.\n/// @dev Requirements:\n/// - x ≤ uMAX_SD21x18\nfunction intoSD21x18(UD60x18 x) pure returns (SD21x18 result) {\n    uint256 xUint = UD60x18.unwrap(x);\n    if (xUint > uint256(int256(uMAX_SD21x18))) {\n        revert CastingErrors.PRBMath_UD60x18_IntoSD21x18_Overflow(x);\n    }\n    result = SD21x18.wrap(int128(uint128(xUint)));\n}\n\n/// @notice Casts a UD60x18 number into UD2x18.\n/// @dev Requirements:\n/// - x ≤ uMAX_UD2x18\nfunction intoUD2x18(UD60x18 x) pure returns (UD2x18 result) {\n    uint256 xUint = UD60x18.unwrap(x);\n    if (xUint > uMAX_UD2x18) {\n        revert CastingErrors.PRBMath_UD60x18_IntoUD2x18_Overflow(x);\n    }\n    result = UD2x18.wrap(uint64(xUint));\n}\n\n/// @notice Casts a UD60x18 number into UD21x18.\n/// @dev Requirements:\n/// - x ≤ uMAX_UD21x18\nfunction intoUD21x18(UD60x18 x) pure returns (UD21x18 result) {\n    uint256 xUint = UD60x18.unwrap(x);\n    if (xUint > uMAX_UD21x18) {\n        revert CastingErrors.PRBMath_UD60x18_IntoUD21x18_Overflow(x);\n    }\n    result = UD21x18.wrap(uint128(xUint));\n}\n\n/// @notice Casts a UD60x18 number into SD59x18.\n/// @dev Requirements:\n/// - x ≤ uMAX_SD59x18\nfunction intoSD59x18(UD60x18 x) pure returns (SD59x18 result) {\n    uint256 xUint = UD60x18.unwrap(x);\n    if (xUint > uint256(uMAX_SD59x18)) {\n        revert CastingErrors.PRBMath_UD60x18_IntoSD59x18_Overflow(x);\n    }\n    result = SD59x18.wrap(int256(xUint));\n}\n\n/// @notice Casts a UD60x18 number into uint128.\n/// @dev This is basically an alias for {unwrap}.\nfunction intoUint256(UD60x18 x) pure returns (uint256 result) {\n    result = UD60x18.unwrap(x);\n}\n\n/// @notice Casts a UD60x18 number into uint128.\n/// @dev Requirements:\n/// - x ≤ MAX_UINT128\nfunction intoUint128(UD60x18 x) pure returns (uint128 result) {\n    uint256 xUint = UD60x18.unwrap(x);\n    if (xUint > MAX_UINT128) {\n        revert CastingErrors.PRBMath_UD60x18_IntoUint128_Overflow(x);\n    }\n    result = uint128(xUint);\n}\n\n/// @notice Casts a UD60x18 number into uint40.\n/// @dev Requirements:\n/// - x ≤ MAX_UINT40\nfunction intoUint40(UD60x18 x) pure returns (uint40 result) {\n    uint256 xUint = UD60x18.unwrap(x);\n    if (xUint > MAX_UINT40) {\n        revert CastingErrors.PRBMath_UD60x18_IntoUint40_Overflow(x);\n    }\n    result = uint40(xUint);\n}\n\n/// @notice Alias for {wrap}.\nfunction ud(uint256 x) pure returns (UD60x18 result) {\n    result = UD60x18.wrap(x);\n}\n\n/// @notice Alias for {wrap}.\nfunction ud60x18(uint256 x) pure returns (UD60x18 result) {\n    result = UD60x18.wrap(x);\n}\n\n/// @notice Unwraps a UD60x18 number into uint256.\nfunction unwrap(UD60x18 x) pure returns (uint256 result) {\n    result = UD60x18.unwrap(x);\n}\n\n/// @notice Wraps a uint256 number into the UD60x18 value type.\nfunction wrap(uint256 x) pure returns (UD60x18 result) {\n    result = UD60x18.wrap(x);\n}\n"
      },
      "@prb/math/src/ud60x18/Constants.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport { UD60x18 } from \"./ValueType.sol\";\n\n// NOTICE: the \"u\" prefix stands for \"unwrapped\".\n\n/// @dev Euler's number as a UD60x18 number.\nUD60x18 constant E = UD60x18.wrap(2_718281828459045235);\n\n/// @dev The maximum input permitted in {exp}.\nuint256 constant uEXP_MAX_INPUT = 133_084258667509499440;\nUD60x18 constant EXP_MAX_INPUT = UD60x18.wrap(uEXP_MAX_INPUT);\n\n/// @dev The maximum input permitted in {exp2}.\nuint256 constant uEXP2_MAX_INPUT = 192e18 - 1;\nUD60x18 constant EXP2_MAX_INPUT = UD60x18.wrap(uEXP2_MAX_INPUT);\n\n/// @dev Half the UNIT number.\nuint256 constant uHALF_UNIT = 0.5e18;\nUD60x18 constant HALF_UNIT = UD60x18.wrap(uHALF_UNIT);\n\n/// @dev $log_2(10)$ as a UD60x18 number.\nuint256 constant uLOG2_10 = 3_321928094887362347;\nUD60x18 constant LOG2_10 = UD60x18.wrap(uLOG2_10);\n\n/// @dev $log_2(e)$ as a UD60x18 number.\nuint256 constant uLOG2_E = 1_442695040888963407;\nUD60x18 constant LOG2_E = UD60x18.wrap(uLOG2_E);\n\n/// @dev The maximum value a UD60x18 number can have.\nuint256 constant uMAX_UD60x18 = 115792089237316195423570985008687907853269984665640564039457_584007913129639935;\nUD60x18 constant MAX_UD60x18 = UD60x18.wrap(uMAX_UD60x18);\n\n/// @dev The maximum whole value a UD60x18 number can have.\nuint256 constant uMAX_WHOLE_UD60x18 = 115792089237316195423570985008687907853269984665640564039457_000000000000000000;\nUD60x18 constant MAX_WHOLE_UD60x18 = UD60x18.wrap(uMAX_WHOLE_UD60x18);\n\n/// @dev PI as a UD60x18 number.\nUD60x18 constant PI = UD60x18.wrap(3_141592653589793238);\n\n/// @dev The unit number, which gives the decimal precision of UD60x18.\nuint256 constant uUNIT = 1e18;\nUD60x18 constant UNIT = UD60x18.wrap(uUNIT);\n\n/// @dev The unit number squared.\nuint256 constant uUNIT_SQUARED = 1e36;\nUD60x18 constant UNIT_SQUARED = UD60x18.wrap(uUNIT_SQUARED);\n\n/// @dev Zero as a UD60x18 number.\nUD60x18 constant ZERO = UD60x18.wrap(0);\n"
      },
      "@prb/math/src/ud60x18/Conversions.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport { uMAX_UD60x18, uUNIT } from \"./Constants.sol\";\nimport { PRBMath_UD60x18_Convert_Overflow } from \"./Errors.sol\";\nimport { UD60x18 } from \"./ValueType.sol\";\n\n/// @notice Converts a UD60x18 number to a simple integer by dividing it by `UNIT`.\n/// @dev The result is rounded toward zero.\n/// @param x The UD60x18 number to convert.\n/// @return result The same number in basic integer form.\nfunction convert(UD60x18 x) pure returns (uint256 result) {\n    result = UD60x18.unwrap(x) / uUNIT;\n}\n\n/// @notice Converts a simple integer to UD60x18 by multiplying it by `UNIT`.\n///\n/// @dev Requirements:\n/// - x ≤ MAX_UD60x18 / UNIT\n///\n/// @param x The basic integer to convert.\n/// @return result The same number converted to UD60x18.\nfunction convert(uint256 x) pure returns (UD60x18 result) {\n    if (x > uMAX_UD60x18 / uUNIT) {\n        revert PRBMath_UD60x18_Convert_Overflow(x);\n    }\n    unchecked {\n        result = UD60x18.wrap(x * uUNIT);\n    }\n}\n"
      },
      "@prb/math/src/ud60x18/Errors.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport { UD60x18 } from \"./ValueType.sol\";\n\n/// @notice Thrown when ceiling a number overflows UD60x18.\nerror PRBMath_UD60x18_Ceil_Overflow(UD60x18 x);\n\n/// @notice Thrown when converting a basic integer to the fixed-point format overflows UD60x18.\nerror PRBMath_UD60x18_Convert_Overflow(uint256 x);\n\n/// @notice Thrown when taking the natural exponent of a base greater than 133_084258667509499441.\nerror PRBMath_UD60x18_Exp_InputTooBig(UD60x18 x);\n\n/// @notice Thrown when taking the binary exponent of a base greater than 192e18.\nerror PRBMath_UD60x18_Exp2_InputTooBig(UD60x18 x);\n\n/// @notice Thrown when taking the geometric mean of two numbers and multiplying them overflows UD60x18.\nerror PRBMath_UD60x18_Gm_Overflow(UD60x18 x, UD60x18 y);\n\n/// @notice Thrown when trying to cast a UD60x18 number that doesn't fit in SD1x18.\nerror PRBMath_UD60x18_IntoSD1x18_Overflow(UD60x18 x);\n\n/// @notice Thrown when trying to cast a UD60x18 number that doesn't fit in SD21x18.\nerror PRBMath_UD60x18_IntoSD21x18_Overflow(UD60x18 x);\n\n/// @notice Thrown when trying to cast a UD60x18 number that doesn't fit in SD59x18.\nerror PRBMath_UD60x18_IntoSD59x18_Overflow(UD60x18 x);\n\n/// @notice Thrown when trying to cast a UD60x18 number that doesn't fit in UD2x18.\nerror PRBMath_UD60x18_IntoUD2x18_Overflow(UD60x18 x);\n\n/// @notice Thrown when trying to cast a UD60x18 number that doesn't fit in UD21x18.\nerror PRBMath_UD60x18_IntoUD21x18_Overflow(UD60x18 x);\n\n/// @notice Thrown when trying to cast a UD60x18 number that doesn't fit in uint128.\nerror PRBMath_UD60x18_IntoUint128_Overflow(UD60x18 x);\n\n/// @notice Thrown when trying to cast a UD60x18 number that doesn't fit in uint40.\nerror PRBMath_UD60x18_IntoUint40_Overflow(UD60x18 x);\n\n/// @notice Thrown when taking the logarithm of a number less than UNIT.\nerror PRBMath_UD60x18_Log_InputTooSmall(UD60x18 x);\n\n/// @notice Thrown when calculating the square root overflows UD60x18.\nerror PRBMath_UD60x18_Sqrt_Overflow(UD60x18 x);\n"
      },
      "@prb/math/src/ud60x18/Helpers.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport { wrap } from \"./Casting.sol\";\nimport { UD60x18 } from \"./ValueType.sol\";\n\n/// @notice Implements the checked addition operation (+) in the UD60x18 type.\nfunction add(UD60x18 x, UD60x18 y) pure returns (UD60x18 result) {\n    result = wrap(x.unwrap() + y.unwrap());\n}\n\n/// @notice Implements the AND (&) bitwise operation in the UD60x18 type.\nfunction and(UD60x18 x, uint256 bits) pure returns (UD60x18 result) {\n    result = wrap(x.unwrap() & bits);\n}\n\n/// @notice Implements the AND (&) bitwise operation in the UD60x18 type.\nfunction and2(UD60x18 x, UD60x18 y) pure returns (UD60x18 result) {\n    result = wrap(x.unwrap() & y.unwrap());\n}\n\n/// @notice Implements the equal operation (==) in the UD60x18 type.\nfunction eq(UD60x18 x, UD60x18 y) pure returns (bool result) {\n    result = x.unwrap() == y.unwrap();\n}\n\n/// @notice Implements the greater than operation (>) in the UD60x18 type.\nfunction gt(UD60x18 x, UD60x18 y) pure returns (bool result) {\n    result = x.unwrap() > y.unwrap();\n}\n\n/// @notice Implements the greater than or equal to operation (>=) in the UD60x18 type.\nfunction gte(UD60x18 x, UD60x18 y) pure returns (bool result) {\n    result = x.unwrap() >= y.unwrap();\n}\n\n/// @notice Implements a zero comparison check function in the UD60x18 type.\nfunction isZero(UD60x18 x) pure returns (bool result) {\n    // This wouldn't work if x could be negative.\n    result = x.unwrap() == 0;\n}\n\n/// @notice Implements the left shift operation (<<) in the UD60x18 type.\nfunction lshift(UD60x18 x, uint256 bits) pure returns (UD60x18 result) {\n    result = wrap(x.unwrap() << bits);\n}\n\n/// @notice Implements the lower than operation (<) in the UD60x18 type.\nfunction lt(UD60x18 x, UD60x18 y) pure returns (bool result) {\n    result = x.unwrap() < y.unwrap();\n}\n\n/// @notice Implements the lower than or equal to operation (<=) in the UD60x18 type.\nfunction lte(UD60x18 x, UD60x18 y) pure returns (bool result) {\n    result = x.unwrap() <= y.unwrap();\n}\n\n/// @notice Implements the checked modulo operation (%) in the UD60x18 type.\nfunction mod(UD60x18 x, UD60x18 y) pure returns (UD60x18 result) {\n    result = wrap(x.unwrap() % y.unwrap());\n}\n\n/// @notice Implements the not equal operation (!=) in the UD60x18 type.\nfunction neq(UD60x18 x, UD60x18 y) pure returns (bool result) {\n    result = x.unwrap() != y.unwrap();\n}\n\n/// @notice Implements the NOT (~) bitwise operation in the UD60x18 type.\nfunction not(UD60x18 x) pure returns (UD60x18 result) {\n    result = wrap(~x.unwrap());\n}\n\n/// @notice Implements the OR (|) bitwise operation in the UD60x18 type.\nfunction or(UD60x18 x, UD60x18 y) pure returns (UD60x18 result) {\n    result = wrap(x.unwrap() | y.unwrap());\n}\n\n/// @notice Implements the right shift operation (>>) in the UD60x18 type.\nfunction rshift(UD60x18 x, uint256 bits) pure returns (UD60x18 result) {\n    result = wrap(x.unwrap() >> bits);\n}\n\n/// @notice Implements the checked subtraction operation (-) in the UD60x18 type.\nfunction sub(UD60x18 x, UD60x18 y) pure returns (UD60x18 result) {\n    result = wrap(x.unwrap() - y.unwrap());\n}\n\n/// @notice Implements the unchecked addition operation (+) in the UD60x18 type.\nfunction uncheckedAdd(UD60x18 x, UD60x18 y) pure returns (UD60x18 result) {\n    unchecked {\n        result = wrap(x.unwrap() + y.unwrap());\n    }\n}\n\n/// @notice Implements the unchecked subtraction operation (-) in the UD60x18 type.\nfunction uncheckedSub(UD60x18 x, UD60x18 y) pure returns (UD60x18 result) {\n    unchecked {\n        result = wrap(x.unwrap() - y.unwrap());\n    }\n}\n\n/// @notice Implements the XOR (^) bitwise operation in the UD60x18 type.\nfunction xor(UD60x18 x, UD60x18 y) pure returns (UD60x18 result) {\n    result = wrap(x.unwrap() ^ y.unwrap());\n}\n"
      },
      "@prb/math/src/ud60x18/Math.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport \"../Common.sol\" as Common;\nimport \"./Errors.sol\" as Errors;\nimport { wrap } from \"./Casting.sol\";\nimport {\n    uEXP_MAX_INPUT,\n    uEXP2_MAX_INPUT,\n    uHALF_UNIT,\n    uLOG2_10,\n    uLOG2_E,\n    uMAX_UD60x18,\n    uMAX_WHOLE_UD60x18,\n    UNIT,\n    uUNIT,\n    uUNIT_SQUARED,\n    ZERO\n} from \"./Constants.sol\";\nimport { UD60x18 } from \"./ValueType.sol\";\n\n/*//////////////////////////////////////////////////////////////////////////\n                            MATHEMATICAL FUNCTIONS\n//////////////////////////////////////////////////////////////////////////*/\n\n/// @notice Calculates the arithmetic average of x and y using the following formula:\n///\n/// $$\n/// avg(x, y) = (x & y) + ((xUint ^ yUint) / 2)\n/// $$\n///\n/// In English, this is what this formula does:\n///\n/// 1. AND x and y.\n/// 2. Calculate half of XOR x and y.\n/// 3. Add the two results together.\n///\n/// This technique is known as SWAR, which stands for \"SIMD within a register\". You can read more about it here:\n/// https://devblogs.microsoft.com/oldnewthing/20220207-00/?p=106223\n///\n/// @dev Notes:\n/// - The result is rounded toward zero.\n///\n/// @param x The first operand as a UD60x18 number.\n/// @param y The second operand as a UD60x18 number.\n/// @return result The arithmetic average as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction avg(UD60x18 x, UD60x18 y) pure returns (UD60x18 result) {\n    uint256 xUint = x.unwrap();\n    uint256 yUint = y.unwrap();\n    unchecked {\n        result = wrap((xUint & yUint) + ((xUint ^ yUint) >> 1));\n    }\n}\n\n/// @notice Yields the smallest whole number greater than or equal to x.\n///\n/// @dev This is optimized for fractional value inputs, because for every whole value there are (1e18 - 1) fractional\n/// counterparts. See https://en.wikipedia.org/wiki/Floor_and_ceiling_functions.\n///\n/// Requirements:\n/// - x ≤ MAX_WHOLE_UD60x18\n///\n/// @param x The UD60x18 number to ceil.\n/// @return result The smallest whole number greater than or equal to x, as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction ceil(UD60x18 x) pure returns (UD60x18 result) {\n    uint256 xUint = x.unwrap();\n    if (xUint > uMAX_WHOLE_UD60x18) {\n        revert Errors.PRBMath_UD60x18_Ceil_Overflow(x);\n    }\n\n    assembly (\"memory-safe\") {\n        // Equivalent to `x % UNIT`.\n        let remainder := mod(x, uUNIT)\n\n        // Equivalent to `UNIT - remainder`.\n        let delta := sub(uUNIT, remainder)\n\n        // Equivalent to `x + remainder > 0 ? delta : 0`.\n        result := add(x, mul(delta, gt(remainder, 0)))\n    }\n}\n\n/// @notice Divides two UD60x18 numbers, returning a new UD60x18 number.\n///\n/// @dev Uses {Common.mulDiv} to enable overflow-safe multiplication and division.\n///\n/// Notes:\n/// - Refer to the notes in {Common.mulDiv}.\n///\n/// Requirements:\n/// - Refer to the requirements in {Common.mulDiv}.\n///\n/// @param x The numerator as a UD60x18 number.\n/// @param y The denominator as a UD60x18 number.\n/// @return result The quotient as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction div(UD60x18 x, UD60x18 y) pure returns (UD60x18 result) {\n    result = wrap(Common.mulDiv(x.unwrap(), uUNIT, y.unwrap()));\n}\n\n/// @notice Calculates the natural exponent of x using the following formula:\n///\n/// $$\n/// e^x = 2^{x * log_2{e}}\n/// $$\n///\n/// @dev Requirements:\n/// - x ≤ 133_084258667509499440\n///\n/// @param x The exponent as a UD60x18 number.\n/// @return result The result as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction exp(UD60x18 x) pure returns (UD60x18 result) {\n    uint256 xUint = x.unwrap();\n\n    // This check prevents values greater than 192e18 from being passed to {exp2}.\n    if (xUint > uEXP_MAX_INPUT) {\n        revert Errors.PRBMath_UD60x18_Exp_InputTooBig(x);\n    }\n\n    unchecked {\n        // Inline the fixed-point multiplication to save gas.\n        uint256 doubleUnitProduct = xUint * uLOG2_E;\n        result = exp2(wrap(doubleUnitProduct / uUNIT));\n    }\n}\n\n/// @notice Calculates the binary exponent of x using the binary fraction method.\n///\n/// @dev See https://ethereum.stackexchange.com/q/79903/24693\n///\n/// Requirements:\n/// - x < 192e18\n/// - The result must fit in UD60x18.\n///\n/// @param x The exponent as a UD60x18 number.\n/// @return result The result as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction exp2(UD60x18 x) pure returns (UD60x18 result) {\n    uint256 xUint = x.unwrap();\n\n    // Numbers greater than or equal to 192e18 don't fit in the 192.64-bit format.\n    if (xUint > uEXP2_MAX_INPUT) {\n        revert Errors.PRBMath_UD60x18_Exp2_InputTooBig(x);\n    }\n\n    // Convert x to the 192.64-bit fixed-point format.\n    uint256 x_192x64 = (xUint << 64) / uUNIT;\n\n    // Pass x to the {Common.exp2} function, which uses the 192.64-bit fixed-point number representation.\n    result = wrap(Common.exp2(x_192x64));\n}\n\n/// @notice Yields the greatest whole number less than or equal to x.\n/// @dev Optimized for fractional value inputs, because every whole value has (1e18 - 1) fractional counterparts.\n/// See https://en.wikipedia.org/wiki/Floor_and_ceiling_functions.\n/// @param x The UD60x18 number to floor.\n/// @return result The greatest whole number less than or equal to x, as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction floor(UD60x18 x) pure returns (UD60x18 result) {\n    assembly (\"memory-safe\") {\n        // Equivalent to `x % UNIT`.\n        let remainder := mod(x, uUNIT)\n\n        // Equivalent to `x - remainder > 0 ? remainder : 0)`.\n        result := sub(x, mul(remainder, gt(remainder, 0)))\n    }\n}\n\n/// @notice Yields the excess beyond the floor of x using the odd function definition.\n/// @dev See https://en.wikipedia.org/wiki/Fractional_part.\n/// @param x The UD60x18 number to get the fractional part of.\n/// @return result The fractional part of x as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction frac(UD60x18 x) pure returns (UD60x18 result) {\n    assembly (\"memory-safe\") {\n        result := mod(x, uUNIT)\n    }\n}\n\n/// @notice Calculates the geometric mean of x and y, i.e. $\\sqrt{x * y}$, rounding down.\n///\n/// @dev Requirements:\n/// - x * y must fit in UD60x18.\n///\n/// @param x The first operand as a UD60x18 number.\n/// @param y The second operand as a UD60x18 number.\n/// @return result The result as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction gm(UD60x18 x, UD60x18 y) pure returns (UD60x18 result) {\n    uint256 xUint = x.unwrap();\n    uint256 yUint = y.unwrap();\n    if (xUint == 0 || yUint == 0) {\n        return ZERO;\n    }\n\n    unchecked {\n        // Checking for overflow this way is faster than letting Solidity do it.\n        uint256 xyUint = xUint * yUint;\n        if (xyUint / xUint != yUint) {\n            revert Errors.PRBMath_UD60x18_Gm_Overflow(x, y);\n        }\n\n        // We don't need to multiply the result by `UNIT` here because the x*y product picked up a factor of `UNIT`\n        // during multiplication. See the comments in {Common.sqrt}.\n        result = wrap(Common.sqrt(xyUint));\n    }\n}\n\n/// @notice Calculates the inverse of x.\n///\n/// @dev Notes:\n/// - The result is rounded toward zero.\n///\n/// Requirements:\n/// - x must not be zero.\n///\n/// @param x The UD60x18 number for which to calculate the inverse.\n/// @return result The inverse as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction inv(UD60x18 x) pure returns (UD60x18 result) {\n    unchecked {\n        result = wrap(uUNIT_SQUARED / x.unwrap());\n    }\n}\n\n/// @notice Calculates the natural logarithm of x using the following formula:\n///\n/// $$\n/// ln{x} = log_2{x} / log_2{e}\n/// $$\n///\n/// @dev Notes:\n/// - Refer to the notes in {log2}.\n/// - The precision isn't sufficiently fine-grained to return exactly `UNIT` when the input is `E`.\n///\n/// Requirements:\n/// - Refer to the requirements in {log2}.\n///\n/// @param x The UD60x18 number for which to calculate the natural logarithm.\n/// @return result The natural logarithm as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction ln(UD60x18 x) pure returns (UD60x18 result) {\n    unchecked {\n        // Inline the fixed-point multiplication to save gas. This is overflow-safe because the maximum value that\n        // {log2} can return is ~196_205294292027477728.\n        result = wrap(log2(x).unwrap() * uUNIT / uLOG2_E);\n    }\n}\n\n/// @notice Calculates the common logarithm of x using the following formula:\n///\n/// $$\n/// log_{10}{x} = log_2{x} / log_2{10}\n/// $$\n///\n/// However, if x is an exact power of ten, a hard coded value is returned.\n///\n/// @dev Notes:\n/// - Refer to the notes in {log2}.\n///\n/// Requirements:\n/// - Refer to the requirements in {log2}.\n///\n/// @param x The UD60x18 number for which to calculate the common logarithm.\n/// @return result The common logarithm as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction log10(UD60x18 x) pure returns (UD60x18 result) {\n    uint256 xUint = x.unwrap();\n    if (xUint < uUNIT) {\n        revert Errors.PRBMath_UD60x18_Log_InputTooSmall(x);\n    }\n\n    // Note that the `mul` in this assembly block is the standard multiplication operation, not {UD60x18.mul}.\n    // prettier-ignore\n    assembly (\"memory-safe\") {\n        switch x\n        case 1 { result := mul(uUNIT, sub(0, 18)) }\n        case 10 { result := mul(uUNIT, sub(1, 18)) }\n        case 100 { result := mul(uUNIT, sub(2, 18)) }\n        case 1000 { result := mul(uUNIT, sub(3, 18)) }\n        case 10000 { result := mul(uUNIT, sub(4, 18)) }\n        case 100000 { result := mul(uUNIT, sub(5, 18)) }\n        case 1000000 { result := mul(uUNIT, sub(6, 18)) }\n        case 10000000 { result := mul(uUNIT, sub(7, 18)) }\n        case 100000000 { result := mul(uUNIT, sub(8, 18)) }\n        case 1000000000 { result := mul(uUNIT, sub(9, 18)) }\n        case 10000000000 { result := mul(uUNIT, sub(10, 18)) }\n        case 100000000000 { result := mul(uUNIT, sub(11, 18)) }\n        case 1000000000000 { result := mul(uUNIT, sub(12, 18)) }\n        case 10000000000000 { result := mul(uUNIT, sub(13, 18)) }\n        case 100000000000000 { result := mul(uUNIT, sub(14, 18)) }\n        case 1000000000000000 { result := mul(uUNIT, sub(15, 18)) }\n        case 10000000000000000 { result := mul(uUNIT, sub(16, 18)) }\n        case 100000000000000000 { result := mul(uUNIT, sub(17, 18)) }\n        case 1000000000000000000 { result := 0 }\n        case 10000000000000000000 { result := uUNIT }\n        case 100000000000000000000 { result := mul(uUNIT, 2) }\n        case 1000000000000000000000 { result := mul(uUNIT, 3) }\n        case 10000000000000000000000 { result := mul(uUNIT, 4) }\n        case 100000000000000000000000 { result := mul(uUNIT, 5) }\n        case 1000000000000000000000000 { result := mul(uUNIT, 6) }\n        case 10000000000000000000000000 { result := mul(uUNIT, 7) }\n        case 100000000000000000000000000 { result := mul(uUNIT, 8) }\n        case 1000000000000000000000000000 { result := mul(uUNIT, 9) }\n        case 10000000000000000000000000000 { result := mul(uUNIT, 10) }\n        case 100000000000000000000000000000 { result := mul(uUNIT, 11) }\n        case 1000000000000000000000000000000 { result := mul(uUNIT, 12) }\n        case 10000000000000000000000000000000 { result := mul(uUNIT, 13) }\n        case 100000000000000000000000000000000 { result := mul(uUNIT, 14) }\n        case 1000000000000000000000000000000000 { result := mul(uUNIT, 15) }\n        case 10000000000000000000000000000000000 { result := mul(uUNIT, 16) }\n        case 100000000000000000000000000000000000 { result := mul(uUNIT, 17) }\n        case 1000000000000000000000000000000000000 { result := mul(uUNIT, 18) }\n        case 10000000000000000000000000000000000000 { result := mul(uUNIT, 19) }\n        case 100000000000000000000000000000000000000 { result := mul(uUNIT, 20) }\n        case 1000000000000000000000000000000000000000 { result := mul(uUNIT, 21) }\n        case 10000000000000000000000000000000000000000 { result := mul(uUNIT, 22) }\n        case 100000000000000000000000000000000000000000 { result := mul(uUNIT, 23) }\n        case 1000000000000000000000000000000000000000000 { result := mul(uUNIT, 24) }\n        case 10000000000000000000000000000000000000000000 { result := mul(uUNIT, 25) }\n        case 100000000000000000000000000000000000000000000 { result := mul(uUNIT, 26) }\n        case 1000000000000000000000000000000000000000000000 { result := mul(uUNIT, 27) }\n        case 10000000000000000000000000000000000000000000000 { result := mul(uUNIT, 28) }\n        case 100000000000000000000000000000000000000000000000 { result := mul(uUNIT, 29) }\n        case 1000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 30) }\n        case 10000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 31) }\n        case 100000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 32) }\n        case 1000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 33) }\n        case 10000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 34) }\n        case 100000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 35) }\n        case 1000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 36) }\n        case 10000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 37) }\n        case 100000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 38) }\n        case 1000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 39) }\n        case 10000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 40) }\n        case 100000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 41) }\n        case 1000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 42) }\n        case 10000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 43) }\n        case 100000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 44) }\n        case 1000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 45) }\n        case 10000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 46) }\n        case 100000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 47) }\n        case 1000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 48) }\n        case 10000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 49) }\n        case 100000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 50) }\n        case 1000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 51) }\n        case 10000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 52) }\n        case 100000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 53) }\n        case 1000000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 54) }\n        case 10000000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 55) }\n        case 100000000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 56) }\n        case 1000000000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 57) }\n        case 10000000000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 58) }\n        case 100000000000000000000000000000000000000000000000000000000000000000000000000000 { result := mul(uUNIT, 59) }\n        default { result := uMAX_UD60x18 }\n    }\n\n    if (result.unwrap() == uMAX_UD60x18) {\n        unchecked {\n            // Inline the fixed-point division to save gas.\n            result = wrap(log2(x).unwrap() * uUNIT / uLOG2_10);\n        }\n    }\n}\n\n/// @notice Calculates the binary logarithm of x using the iterative approximation algorithm:\n///\n/// $$\n/// log_2{x} = n + log_2{y}, \\text{ where } y = x*2^{-n}, \\ y \\in [1, 2)\n/// $$\n///\n/// For $0 \\leq x \\lt 1$, the input is inverted:\n///\n/// $$\n/// log_2{x} = -log_2{\\frac{1}{x}}\n/// $$\n///\n/// @dev See https://en.wikipedia.org/wiki/Binary_logarithm#Iterative_approximation\n///\n/// Notes:\n/// - Due to the lossy precision of the iterative approximation, the results are not perfectly accurate to the last decimal.\n///\n/// Requirements:\n/// - x ≥ UNIT\n///\n/// @param x The UD60x18 number for which to calculate the binary logarithm.\n/// @return result The binary logarithm as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction log2(UD60x18 x) pure returns (UD60x18 result) {\n    uint256 xUint = x.unwrap();\n\n    if (xUint < uUNIT) {\n        revert Errors.PRBMath_UD60x18_Log_InputTooSmall(x);\n    }\n\n    unchecked {\n        // Calculate the integer part of the logarithm.\n        uint256 n = Common.msb(xUint / uUNIT);\n\n        // This is the integer part of the logarithm as a UD60x18 number. The operation can't overflow because n\n        // n is at most 255 and UNIT is 1e18.\n        uint256 resultUint = n * uUNIT;\n\n        // Calculate $y = x * 2^{-n}$.\n        uint256 y = xUint >> n;\n\n        // If y is the unit number, the fractional part is zero.\n        if (y == uUNIT) {\n            return wrap(resultUint);\n        }\n\n        // Calculate the fractional part via the iterative approximation.\n        // The `delta >>= 1` part is equivalent to `delta /= 2`, but shifting bits is more gas efficient.\n        uint256 DOUBLE_UNIT = 2e18;\n        for (uint256 delta = uHALF_UNIT; delta > 0; delta >>= 1) {\n            y = (y * y) / uUNIT;\n\n            // Is y^2 >= 2e18 and so in the range [2e18, 4e18)?\n            if (y >= DOUBLE_UNIT) {\n                // Add the 2^{-m} factor to the logarithm.\n                resultUint += delta;\n\n                // Halve y, which corresponds to z/2 in the Wikipedia article.\n                y >>= 1;\n            }\n        }\n        result = wrap(resultUint);\n    }\n}\n\n/// @notice Multiplies two UD60x18 numbers together, returning a new UD60x18 number.\n///\n/// @dev Uses {Common.mulDiv} to enable overflow-safe multiplication and division.\n///\n/// Notes:\n/// - Refer to the notes in {Common.mulDiv}.\n///\n/// Requirements:\n/// - Refer to the requirements in {Common.mulDiv}.\n///\n/// @dev See the documentation in {Common.mulDiv18}.\n/// @param x The multiplicand as a UD60x18 number.\n/// @param y The multiplier as a UD60x18 number.\n/// @return result The product as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction mul(UD60x18 x, UD60x18 y) pure returns (UD60x18 result) {\n    result = wrap(Common.mulDiv18(x.unwrap(), y.unwrap()));\n}\n\n/// @notice Raises x to the power of y.\n///\n/// For $1 \\leq x \\leq \\infty$, the following standard formula is used:\n///\n/// $$\n/// x^y = 2^{log_2{x} * y}\n/// $$\n///\n/// For $0 \\leq x \\lt 1$, since the unsigned {log2} is undefined, an equivalent formula is used:\n///\n/// $$\n/// i = \\frac{1}{x}\n/// w = 2^{log_2{i} * y}\n/// x^y = \\frac{1}{w}\n/// $$\n///\n/// @dev Notes:\n/// - Refer to the notes in {log2} and {mul}.\n/// - Returns `UNIT` for 0^0.\n/// - It may not perform well with very small values of x. Consider using SD59x18 as an alternative.\n///\n/// Requirements:\n/// - Refer to the requirements in {exp2}, {log2}, and {mul}.\n///\n/// @param x The base as a UD60x18 number.\n/// @param y The exponent as a UD60x18 number.\n/// @return result The result as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction pow(UD60x18 x, UD60x18 y) pure returns (UD60x18 result) {\n    uint256 xUint = x.unwrap();\n    uint256 yUint = y.unwrap();\n\n    // If both x and y are zero, the result is `UNIT`. If just x is zero, the result is always zero.\n    if (xUint == 0) {\n        return yUint == 0 ? UNIT : ZERO;\n    }\n    // If x is `UNIT`, the result is always `UNIT`.\n    else if (xUint == uUNIT) {\n        return UNIT;\n    }\n\n    // If y is zero, the result is always `UNIT`.\n    if (yUint == 0) {\n        return UNIT;\n    }\n    // If y is `UNIT`, the result is always x.\n    else if (yUint == uUNIT) {\n        return x;\n    }\n\n    // If x is > UNIT, use the standard formula.\n    if (xUint > uUNIT) {\n        result = exp2(mul(log2(x), y));\n    }\n    // Conversely, if x < UNIT, use the equivalent formula.\n    else {\n        UD60x18 i = wrap(uUNIT_SQUARED / xUint);\n        UD60x18 w = exp2(mul(log2(i), y));\n        result = wrap(uUNIT_SQUARED / w.unwrap());\n    }\n}\n\n/// @notice Raises x (a UD60x18 number) to the power y (an unsigned basic integer) using the well-known\n/// algorithm \"exponentiation by squaring\".\n///\n/// @dev See https://en.wikipedia.org/wiki/Exponentiation_by_squaring.\n///\n/// Notes:\n/// - Refer to the notes in {Common.mulDiv18}.\n/// - Returns `UNIT` for 0^0.\n///\n/// Requirements:\n/// - The result must fit in UD60x18.\n///\n/// @param x The base as a UD60x18 number.\n/// @param y The exponent as a uint256.\n/// @return result The result as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction powu(UD60x18 x, uint256 y) pure returns (UD60x18 result) {\n    // Calculate the first iteration of the loop in advance.\n    uint256 xUint = x.unwrap();\n    uint256 resultUint = y & 1 > 0 ? xUint : uUNIT;\n\n    // Equivalent to `for(y /= 2; y > 0; y /= 2)`.\n    for (y >>= 1; y > 0; y >>= 1) {\n        xUint = Common.mulDiv18(xUint, xUint);\n\n        // Equivalent to `y % 2 == 1`.\n        if (y & 1 > 0) {\n            resultUint = Common.mulDiv18(resultUint, xUint);\n        }\n    }\n    result = wrap(resultUint);\n}\n\n/// @notice Calculates the square root of x using the Babylonian method.\n///\n/// @dev See https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method.\n///\n/// Notes:\n/// - The result is rounded toward zero.\n///\n/// Requirements:\n/// - x ≤ MAX_UD60x18 / UNIT\n///\n/// @param x The UD60x18 number for which to calculate the square root.\n/// @return result The result as a UD60x18 number.\n/// @custom:smtchecker abstract-function-nondet\nfunction sqrt(UD60x18 x) pure returns (UD60x18 result) {\n    uint256 xUint = x.unwrap();\n\n    unchecked {\n        if (xUint > uMAX_UD60x18 / uUNIT) {\n            revert Errors.PRBMath_UD60x18_Sqrt_Overflow(x);\n        }\n        // Multiply x by `UNIT` to account for the factor of `UNIT` picked up when multiplying two UD60x18 numbers.\n        // In this case, the two numbers are both the square root.\n        result = wrap(Common.sqrt(xUint * uUNIT));\n    }\n}\n"
      },
      "@prb/math/src/ud60x18/ValueType.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\nimport \"./Casting.sol\" as Casting;\nimport \"./Helpers.sol\" as Helpers;\nimport \"./Math.sol\" as Math;\n\n/// @notice The unsigned 60.18-decimal fixed-point number representation, which can have up to 60 digits and up to 18\n/// decimals. The values of this are bound by the minimum and the maximum values permitted by the Solidity type uint256.\n/// @dev The value type is defined here so it can be imported in all other files.\ntype UD60x18 is uint256;\n\n/*//////////////////////////////////////////////////////////////////////////\n                                    CASTING\n//////////////////////////////////////////////////////////////////////////*/\n\nusing {\n    Casting.intoSD1x18,\n    Casting.intoSD21x18,\n    Casting.intoSD59x18,\n    Casting.intoUD2x18,\n    Casting.intoUD21x18,\n    Casting.intoUint128,\n    Casting.intoUint256,\n    Casting.intoUint40,\n    Casting.unwrap\n} for UD60x18 global;\n\n/*//////////////////////////////////////////////////////////////////////////\n                            MATHEMATICAL FUNCTIONS\n//////////////////////////////////////////////////////////////////////////*/\n\n// The global \"using for\" directive makes the functions in this library callable on the UD60x18 type.\nusing {\n    Math.avg,\n    Math.ceil,\n    Math.div,\n    Math.exp,\n    Math.exp2,\n    Math.floor,\n    Math.frac,\n    Math.gm,\n    Math.inv,\n    Math.ln,\n    Math.log10,\n    Math.log2,\n    Math.mul,\n    Math.pow,\n    Math.powu,\n    Math.sqrt\n} for UD60x18 global;\n\n/*//////////////////////////////////////////////////////////////////////////\n                                HELPER FUNCTIONS\n//////////////////////////////////////////////////////////////////////////*/\n\n// The global \"using for\" directive makes the functions in this library callable on the UD60x18 type.\nusing {\n    Helpers.add,\n    Helpers.and,\n    Helpers.eq,\n    Helpers.gt,\n    Helpers.gte,\n    Helpers.isZero,\n    Helpers.lshift,\n    Helpers.lt,\n    Helpers.lte,\n    Helpers.mod,\n    Helpers.neq,\n    Helpers.not,\n    Helpers.or,\n    Helpers.rshift,\n    Helpers.sub,\n    Helpers.uncheckedAdd,\n    Helpers.uncheckedSub,\n    Helpers.xor\n} for UD60x18 global;\n\n/*//////////////////////////////////////////////////////////////////////////\n                                    OPERATORS\n//////////////////////////////////////////////////////////////////////////*/\n\n// The global \"using for\" directive makes it possible to use these operators on the UD60x18 type.\nusing {\n    Helpers.add as +,\n    Helpers.and2 as &,\n    Math.div as /,\n    Helpers.eq as ==,\n    Helpers.gt as >,\n    Helpers.gte as >=,\n    Helpers.lt as <,\n    Helpers.lte as <=,\n    Helpers.or as |,\n    Helpers.mod as %,\n    Math.mul as *,\n    Helpers.neq as !=,\n    Helpers.not as ~,\n    Helpers.sub as -,\n    Helpers.xor as ^\n} for UD60x18 global;\n"
      },
      "contracts/Diamond.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\n//******************************************************************************\\\n//* Author: Nick Mudge <nick@perfectabstractions.com> (https://twitter.com/mudgen)\n//* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n//*\n//* Implementation of a diamond.\n//******************************************************************************/\n\nimport { LibDiamond } from \"./libraries/LibDiamond.sol\";\nimport { IDiamondCut } from \"./interfaces/IDiamondCut.sol\";\n\n// When no function exists for function called\nerror FunctionNotFound(bytes4 _functionSelector);\n\n// This is used in diamond constructor\n// more arguments are added to this struct\n// this avoids stack too deep errors\nstruct DiamondArgs {\n    address owner;\n    address init;\n    bytes initCalldata;\n}\n\ncontract Diamond {\n    constructor(IDiamondCut.FacetCut[] memory _diamondCut, DiamondArgs memory _args) payable {\n        LibDiamond.setContractOwner(_args.owner);\n        LibDiamond.diamondCut(_diamondCut, _args.init, _args.initCalldata);\n\n        // Code can be added here to perform actions and set state variables.\n    }\n\n    function diamondCut(IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata) external {\n        LibDiamond.diamondCut(_diamondCut, _init, _calldata);\n    }\n\n    // Find facet for function that is called and execute the\n    // function if a facet is found and return any value.\n    fallback() external payable {\n        LibDiamond.DiamondStorage storage ds;\n        bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;\n        // get diamond storage\n        assembly {\n            ds.slot := position\n        }\n        // get facet from function selector\n        address facet = ds.facetAddressAndSelectorPosition[msg.sig].facetAddress;\n        if (facet == address(0)) {\n            revert FunctionNotFound(msg.sig);\n        }\n        // Execute external function from facet using delegatecall and return any value.\n        assembly {\n            // copy function selector and any arguments\n            calldatacopy(0, 0, calldatasize())\n            // execute function call using the facet\n            let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)\n            // get any return value\n            returndatacopy(0, 0, returndatasize())\n            // return any return value or error back to the caller\n            switch result\n            case 0 { revert(0, returndatasize()) }\n            default { return(0, returndatasize()) }\n        }\n    }\n\n    receive() external payable { }\n}\n"
      },
      "contracts/DiamondTestContract.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\nimport \"./libraries/LibDiamond.sol\";\nimport \"./interfaces/IDiamondCut.sol\";\n\ncontract DiamondTestContract {\n    using LibDiamond for *;\n\n    function setContractOwner(address _newOwner) external {\n        LibDiamond.setContractOwner(_newOwner);\n    }\n\n    function contractOwner() external view returns (address) {\n        return LibDiamond.contractOwner();\n    }\n\n    function diamondCut(IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata) external {\n        LibDiamond.diamondCut(_diamondCut, _init, _calldata);\n    }\n\n    function enforceIsContractOwner() external view {\n        LibDiamond.enforceIsContractOwner();\n    }\n}\n"
      },
      "contracts/facets/BondFacet.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\nimport { ERC1155Facet } from \"./ERC1155Facet.sol\";\nimport \"@prb/math/src/UD60x18.sol\";\nimport { BokkyPooBahsDateTimeLibrary } from \"../libraries/BokkyPooBahsDateTimeLibrary.sol\";\nimport { BondInitParams } from \"../libraries/StructBondInit.sol\";\nimport { BondStorage } from \"./BondStorage.sol\";\nimport { OwnershipFacet } from \"./OwnershipFacet.sol\";\nimport { IERC1155Receiver } from \"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\";\nimport { ERC165, IERC165 } from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract BondFacet is BondStorage, OwnershipFacet, IERC1155Receiver, ERC165 {\n    address private __bond;\n    address private __currencyAddress;\n\n    // Events\n    event BondInitializedPart1(\n        uint256 bondId,\n        uint256 coupure,\n        uint256 interestNum,\n        uint256 interestDen,\n        uint256 withholdingTaxNum,\n        uint256 withholdingTaxDen,\n        address issuer\n    );\n\n    event BondInitializedPart2(\n        uint256 bondId,\n        uint256 periodicInterestRate,\n        uint256 netReturn,\n        uint256 periodicity,\n        uint256 duration,\n        uint256 methodOfRepayment,\n        uint256 maxSupply,\n        uint256 formOfFinancing\n    );\n\n    event MinAndMaxAmountSet(uint256 bondId, uint256 minAmount, uint256 maxAmount, uint256 maxAmountPerInvestor);\n\n    event BondParametersEditedPart1(\n        uint256 bondId,\n        uint256 coupure,\n        uint256 interestNum,\n        uint256 interestDen,\n        uint256 withholdingTaxNum,\n        uint256 withholdingTaxDen,\n        address issuer\n    );\n\n    event BondParametersEditedPart2(\n        uint256 bondId,\n        uint256 periodicInterestRate,\n        uint256 netReturn,\n        uint256 periodicity,\n        uint256 duration,\n        uint256 methodOfRepayment,\n        uint256 maxSupply,\n        uint256 formOfFinancing\n    );\n\n    event CampaignStartAndEndDateSet(uint256 bondId, uint256 startDate, uint256 endDate);\n    event IssueDateSet(uint256 bondId, uint256 issueDate);\n\n    event CouponsComputed(\n        uint256 bondId,\n        uint256[] couponDates,\n        uint256[] remainingCapital,\n        uint256[] capitalRepayments,\n        uint256[] grossCouponRates,\n        uint256[] netCouponRates\n    );\n\n    event BondIssued(uint256 bondId, uint256 timestamp, uint256 issuedAmount);\n    event BondsWithdrawn(string bondPurchaseId, uint256 bondId, address holder, uint256 amount);\n    event BalloonRateSet(uint256 bondId, uint256 balloonRateNum, uint256 balloonRateDen);\n    event GracePeriodSet(uint256 bondId, uint256 gracePeriodDuration);\n    event CapitalAmortizationFreePeriodSet(uint256 bondId, uint256 capitalAmortizationFreePeriodDuration);\n    event InvestorsCountChanged(uint256 bondId, uint256 investorsCount);\n    event RevocationsCountChanged(uint256 bondId, uint256 revocationsCount);\n\n    event CampaignPaused(uint256 bondId);\n    event CampaignUnpaused(uint256 bondId);\n\n    event PeriodicInterestRateSet(uint256 bondId, uint256 periodicInterest);\n\n    event BondTransferred(\n        string bondTransferId, uint256 bondId, address oldAccount, address newAccount, uint256 amount\n    );\n    event ReservedAmountChanged(uint256 bondId, uint256 reservedAmount);\n\n    event CapitalClaimAmountSet(uint256 bondId, string capitalClaimId, uint256 capitalAmount);\n\n    // Errors\n    error CampaignIsPaused();\n    error CampaignNotPaused();\n    error CampaignAlreadyPaused();\n    error CampaignIsClosed();\n\n    error BondAlreadyInitialized();\n    error BondAlreadyIssued();\n    error BondHasNotBeenIssued();\n    error NoMoreBondsToBuy();\n\n    error DurationIsNotAMultpleOfTwelve();\n    error DurationIsNotAMultpleOfThree();\n\n    error GracePeriodDurationIsNotAMultpleOfTwelve();\n    error GracePeriodDurationIsNotAMultpleOfThree();\n\n    error CapitalAmortizationFreePeriodDurationIsNotAMultpleOfTwelve();\n    error CapitalAmortizationFreePeriodDurationIsNotAMultpleOfThree();\n\n    error OldAccountDoesNotHaveEnoughBonds();\n\n    error CannotReserveBeforeSignupDate();\n    error CannotReserveAfterCampaignEnd();\n    error ExceedingMaxAmountPerInvestor();\n    error DivideByZero();\n\n    modifier campaignNotPaused(uint256 _bondId) {\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        if (_bondDetails.__paused) {\n            revert CampaignIsPaused();\n        }\n        _;\n    }\n\n    function setCurrencyAddress(address _currencyAddress) external {\n        __currencyAddress = _currencyAddress;\n    }\n\n    function setCouponDatesFromIssueDate(uint256 _bondId, uint256 _issueTimeStamp) internal {\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        if (_bondDetails.__issued == true) {\n            revert BondAlreadyIssued();\n        }\n        uint256 year;\n        uint256 month;\n        uint256 day;\n        (year, month, day) = BokkyPooBahsDateTimeLibrary.timestampToDate(_issueTimeStamp);\n\n        uint256 nbrOfPayments;\n        if (_bondDetails.__periodicity == Periodicity.Annual) {\n            nbrOfPayments = _bondDetails.__duration / 12;\n        } else if (_bondDetails.__periodicity == Periodicity.Quarterly) {\n            nbrOfPayments = _bondDetails.__duration / 3;\n        } else {\n            nbrOfPayments = _bondDetails.__duration;\n        }\n\n        uint256 couponMonth = 0;\n        uint256 couponYear = year;\n        uint256 couponDay = day;\n\n        delete _bondDetails.__couponDates;\n        delete _bondDetails.__couponStatus;\n\n        for (uint256 i = 0; i < nbrOfPayments; ++i) {\n            if (_bondDetails.__periodicity == Periodicity.Monthly) {\n                if (i == 0) {\n                    if (month % 12 == 0) {\n                        couponYear = year + 1;\n                    } else {\n                        couponYear = year;\n                    }\n                    couponMonth = (month + 1) % 12;\n                    if (couponMonth == 0) {\n                        couponMonth = 12;\n                    }\n                } else {\n                    if (couponMonth % 12 == 0) {\n                        couponYear = couponYear + 1;\n                    } else {\n                        couponYear = couponYear;\n                    }\n                    couponMonth = (couponMonth + 1) % 12;\n                    if (couponMonth == 0) {\n                        couponMonth = 12;\n                    }\n                }\n            } else if (_bondDetails.__periodicity == Periodicity.Quarterly) {\n                if (i == 0) {\n                    if (month >= 10) {\n                        couponYear = year + 1;\n                    } else {\n                        couponYear = year;\n                    }\n                    couponMonth = (month + 3) % 12;\n                    if (couponMonth == 0) {\n                        couponMonth = 12;\n                    }\n                } else {\n                    if (couponMonth >= 10) {\n                        couponYear = couponYear + 1;\n                    }\n                    couponMonth = (couponMonth + 3) % 12;\n                    if (couponMonth == 0) {\n                        couponMonth = 12;\n                    }\n                }\n            } else if (_bondDetails.__periodicity == Periodicity.Annual) {\n                if (i == 0) {\n                    couponYear = year;\n                    couponMonth = month;\n                } else {\n                    couponYear = couponYear + 1;\n                }\n            }\n            _bondDetails.__couponDates.push(\n                BokkyPooBahsDateTimeLibrary.timestampFromDate(couponYear, couponMonth, couponDay)\n            );\n\n            if (i == nbrOfPayments - 1) {\n                _bondDetails.__maturityDate =\n                    BokkyPooBahsDateTimeLibrary.timestampFromDate(couponYear, couponMonth, couponDay);\n            }\n            _bondDetails.__couponStatus.push(CouponStatus.Todo);\n        }\n\n        _bondDetails.__issueDate = _issueTimeStamp;\n        emit IssueDateSet(_bondId, _issueTimeStamp);\n    }\n\n    function setCouponRates(uint256 _bondId) internal returns (uint256[] memory, uint256[] memory, uint256[] memory) {\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        if (_bondDetails.__issued == true) {\n            revert BondAlreadyIssued();\n        }\n\n        uint256 nbrOfPayments;\n        uint256 capitalRepayment = 0;\n        uint256 remainingCapital = _bondDetails.__coupure;\n        if (_bondDetails.__periodicity == Periodicity.Annual) {\n            nbrOfPayments = _bondDetails.__duration / 12;\n        } else if (_bondDetails.__periodicity == Periodicity.Quarterly) {\n            nbrOfPayments = _bondDetails.__duration / 3;\n        } else {\n            nbrOfPayments = _bondDetails.__duration;\n        }\n\n        delete _bondDetails.__grossCouponRates;\n        delete _bondDetails.__netCouponRates;\n        delete _bondDetails.__capitalRepayment;\n        delete _bondDetails.__remainingCapital;\n\n        _bondDetails.__capitalRepayment.push(0);\n        _bondDetails.__remainingCapital.push(_bondDetails.__coupure);\n        _bondDetails.__grossCouponRates.push(0);\n        _bondDetails.__netCouponRates.push(0);\n        _bondDetails.__totalToBeRepaid = _bondDetails.__coupure;\n\n        for (uint256 i = 0; i < nbrOfPayments; ++i) {\n            if (_bondDetails.__methodOfRepayment == MethodOfRepayment.Bullet) {\n                capitalRepayment = 0;\n            } else if (_bondDetails.__methodOfRepayment == MethodOfRepayment.Degressive) {\n                capitalRepayment = convert(div(ud60x18(_bondDetails.__coupure), ud60x18(nbrOfPayments)));\n            } else if (\n                _bondDetails.__methodOfRepayment == MethodOfRepayment.WithCapitalAmortizationFreePeriod\n                    || _bondDetails.__methodOfRepayment == MethodOfRepayment.CapitalAmortizationAndGracePeriod\n            ) {\n                if (_bondDetails.__periodicity == Periodicity.Annual) {\n                    capitalRepayment = convert(\n                        div(\n                            ud60x18(_bondDetails.__coupure),\n                            ud60x18(nbrOfPayments - _bondDetails.__capitalAmortizationDuration / 12)\n                        )\n                    );\n                } else if (_bondDetails.__periodicity == Periodicity.Quarterly) {\n                    capitalRepayment = convert(\n                        div(\n                            ud60x18(_bondDetails.__coupure),\n                            ud60x18(nbrOfPayments - _bondDetails.__capitalAmortizationDuration / 3)\n                        )\n                    );\n                } else {\n                    capitalRepayment = convert(\n                        div(\n                            ud60x18(_bondDetails.__coupure),\n                            ud60x18(nbrOfPayments - _bondDetails.__capitalAmortizationDuration)\n                        )\n                    );\n                }\n            } else if (_bondDetails.__methodOfRepayment == MethodOfRepayment.GracePeriod) {\n                if (_bondDetails.__periodicity == Periodicity.Annual) {\n                    capitalRepayment = convert(\n                        div(\n                            ud60x18(_bondDetails.__coupure),\n                            ud60x18(nbrOfPayments - _bondDetails.__gracePeriodDuration / 12)\n                        )\n                    );\n                } else if (_bondDetails.__periodicity == Periodicity.Quarterly) {\n                    capitalRepayment = convert(\n                        div(\n                            ud60x18(_bondDetails.__coupure),\n                            ud60x18(nbrOfPayments - _bondDetails.__gracePeriodDuration / 3)\n                        )\n                    );\n                } else {\n                    capitalRepayment = convert(\n                        div(\n                            ud60x18(_bondDetails.__coupure), ud60x18(nbrOfPayments - _bondDetails.__gracePeriodDuration)\n                        )\n                    );\n                }\n            }\n\n            uint256 grossInterest =\n                mul(ud60x18(_bondDetails.__periodicInterestRate), ud60x18(remainingCapital)).unwrap() * 1e18;\n\n            uint256 taxMultiplier = 1 * 10 ** 18 - _bondDetails.__withholdingTax;\n\n            UD60x18 taxableInterest = mul(ud60x18(grossInterest), ud60x18(taxMultiplier));\n\n            uint256 netInterest = taxableInterest.unwrap();\n\n            if (_bondDetails.__methodOfRepayment == MethodOfRepayment.Bullet) {\n                if (i < nbrOfPayments - 1) {\n                    _bondDetails.__capitalRepayment.push(0);\n                    _bondDetails.__remainingCapital.push(remainingCapital);\n                } else {\n                    _bondDetails.__remainingCapital.push(0);\n                    _bondDetails.__capitalRepayment.push(remainingCapital);\n                }\n            } else if (_bondDetails.__methodOfRepayment == MethodOfRepayment.Balloon) {\n                if (i == 0) {\n                    uint256 balloonRate = _bondDetails.__balloonRate;\n                    uint256 temp = convert(mul(ud60x18(balloonRate), ud60x18(remainingCapital)));\n                    remainingCapital = remainingCapital - temp;\n                    _bondDetails.__remainingCapital.push(remainingCapital);\n                    _bondDetails.__capitalRepayment.push(temp);\n                } else if (i == nbrOfPayments - 1) {\n                    _bondDetails.__remainingCapital.push(0);\n                    _bondDetails.__capitalRepayment.push(remainingCapital);\n                } else {\n                    _bondDetails.__remainingCapital.push(remainingCapital);\n                    _bondDetails.__capitalRepayment.push(0);\n                }\n            } else if (_bondDetails.__methodOfRepayment == MethodOfRepayment.Degressive) {\n                if (i < nbrOfPayments - 1) {\n                    remainingCapital = remainingCapital - capitalRepayment;\n                    _bondDetails.__remainingCapital.push(remainingCapital);\n                    _bondDetails.__capitalRepayment.push(capitalRepayment);\n                } else {\n                    _bondDetails.__remainingCapital.push(0);\n                    _bondDetails.__capitalRepayment.push(_bondDetails.__remainingCapital[i]);\n                }\n            } else if (_bondDetails.__methodOfRepayment == MethodOfRepayment.WithCapitalAmortizationFreePeriod) {\n                if (\n                    (\n                        _bondDetails.__periodicity == Periodicity.Annual\n                            && i >= _bondDetails.__capitalAmortizationDuration / 12\n                    )\n                        || (\n                            _bondDetails.__periodicity == Periodicity.Quarterly\n                                && i >= _bondDetails.__capitalAmortizationDuration / 3\n                        )\n                        || (\n                            _bondDetails.__periodicity == Periodicity.Monthly\n                                && i >= _bondDetails.__capitalAmortizationDuration\n                        )\n                ) {\n                    if (i < nbrOfPayments - 1) {\n                        remainingCapital = remainingCapital - capitalRepayment;\n                        _bondDetails.__capitalRepayment.push(capitalRepayment);\n                        _bondDetails.__remainingCapital.push(remainingCapital);\n                    } else {\n                        remainingCapital = 0;\n                        _bondDetails.__remainingCapital.push(remainingCapital);\n                        _bondDetails.__capitalRepayment.push(_bondDetails.__remainingCapital[i]);\n                    }\n                } else {\n                    _bondDetails.__capitalRepayment.push(0);\n                    _bondDetails.__remainingCapital.push(remainingCapital);\n                }\n            } else if (_bondDetails.__methodOfRepayment == MethodOfRepayment.GracePeriod) {\n                if (\n                    (_bondDetails.__periodicity == Periodicity.Annual && i >= _bondDetails.__gracePeriodDuration / 12)\n                        || (\n                            _bondDetails.__periodicity == Periodicity.Quarterly\n                                && i >= _bondDetails.__gracePeriodDuration / 3\n                        ) || (_bondDetails.__periodicity == Periodicity.Monthly && i >= _bondDetails.__gracePeriodDuration)\n                ) {\n                    if (i < nbrOfPayments - 1) {\n                        remainingCapital = remainingCapital - capitalRepayment;\n                        _bondDetails.__capitalRepayment.push(capitalRepayment);\n                        _bondDetails.__remainingCapital.push(remainingCapital);\n                    } else {\n                        remainingCapital = 0;\n                        _bondDetails.__remainingCapital.push(remainingCapital);\n                        _bondDetails.__capitalRepayment.push(_bondDetails.__remainingCapital[i]);\n                    }\n                } else {\n                    grossInterest = 0;\n                    netInterest = 0;\n                    _bondDetails.__capitalRepayment.push(0);\n                    _bondDetails.__remainingCapital.push(remainingCapital);\n                }\n            } else if (_bondDetails.__methodOfRepayment == MethodOfRepayment.CapitalAmortizationAndGracePeriod) {\n                if (\n                    (\n                        _bondDetails.__periodicity == Periodicity.Annual\n                            && i >= _bondDetails.__capitalAmortizationDuration / 12\n                    )\n                        || (\n                            _bondDetails.__periodicity == Periodicity.Quarterly\n                                && i >= _bondDetails.__capitalAmortizationDuration / 3\n                        )\n                        || (\n                            _bondDetails.__periodicity == Periodicity.Monthly\n                                && i >= _bondDetails.__capitalAmortizationDuration\n                        )\n                ) {\n                    if (i < nbrOfPayments - 1) {\n                        remainingCapital = remainingCapital - capitalRepayment;\n                        _bondDetails.__capitalRepayment.push(capitalRepayment);\n                        _bondDetails.__remainingCapital.push(remainingCapital);\n                    } else {\n                        remainingCapital = 0;\n                        _bondDetails.__remainingCapital.push(remainingCapital);\n                        _bondDetails.__capitalRepayment.push(_bondDetails.__remainingCapital[i]);\n                    }\n                } else {\n                    _bondDetails.__capitalRepayment.push(0);\n                    _bondDetails.__remainingCapital.push(remainingCapital);\n                }\n                if (\n                    (_bondDetails.__periodicity == Periodicity.Annual && i < _bondDetails.__gracePeriodDuration / 12)\n                        || (\n                            _bondDetails.__periodicity == Periodicity.Quarterly\n                                && i < _bondDetails.__gracePeriodDuration / 3\n                        ) || (_bondDetails.__periodicity == Periodicity.Monthly && i < _bondDetails.__gracePeriodDuration)\n                ) {\n                    grossInterest = 0;\n                    netInterest = 0;\n                }\n            }\n            _bondDetails.__grossCouponRates.push(grossInterest);\n\n            _bondDetails.__netCouponRates.push(netInterest);\n            _bondDetails.__totalToBeRepaid += netInterest;\n        }\n\n        emit PeriodicInterestRateSet(_bondId, _bondDetails.__periodicInterestRate);\n\n        emit CouponsComputed(\n            _bondId,\n            _bondDetails.__couponDates,\n            _bondDetails.__remainingCapital,\n            _bondDetails.__capitalRepayment,\n            _bondDetails.__grossCouponRates,\n            _bondDetails.__netCouponRates\n        );\n        return (_bondDetails.__couponDates, _bondDetails.__grossCouponRates, _bondDetails.__netCouponRates);\n    }\n\n    function setParameters(BondInitParams.BondInit memory bi, bool replacementBond) internal {\n        //BondDetails storage _bondDetails = __bondDetails[bi.__bondId];\n        BondParams storage _bondDetails = bondStorage(bi.__bondId);\n        _bondDetails.__issuer = bi.__issuer;\n        _bondDetails.__coupure = bi.__coupure;\n        if (bi.__interestDen == 0) {\n            revert DivideByZero();\n        }\n        if (bi.__periodicity == uint256(Periodicity.Annual)) {\n            if (bi.__duration % 12 != 0) {\n                revert DurationIsNotAMultpleOfTwelve();\n            }\n        } else if (bi.__periodicity == uint256(Periodicity.Quarterly)) {\n            if (bi.__duration % 3 != 0) {\n                revert DurationIsNotAMultpleOfThree();\n            }\n        }\n        if (bi.__gracePeriodDuration != 0) {\n            if (bi.__periodicity == uint256(Periodicity.Annual)) {\n                if (bi.__gracePeriodDuration % 12 != 0) {\n                    revert GracePeriodDurationIsNotAMultpleOfTwelve();\n                } else {\n                    this.setGracePeriodDuration(bi.__bondId, bi.__gracePeriodDuration);\n                }\n            } else if (bi.__periodicity == uint256(Periodicity.Quarterly)) {\n                if (bi.__gracePeriodDuration % 3 != 0) {\n                    revert GracePeriodDurationIsNotAMultpleOfThree();\n                } else {\n                    this.setGracePeriodDuration(bi.__bondId, bi.__gracePeriodDuration);\n                }\n            }\n        }\n        if (bi.__capitalAmortizationDuration != 0) {\n            if (bi.__periodicity == uint256(Periodicity.Annual)) {\n                if (bi.__capitalAmortizationDuration % 12 != 0) {\n                    revert CapitalAmortizationFreePeriodDurationIsNotAMultpleOfTwelve();\n                } else {\n                    this.setCapitalAmortizationFreeDuration(bi.__bondId, bi.__capitalAmortizationDuration);\n                }\n            } else if (bi.__periodicity == uint256(Periodicity.Quarterly)) {\n                if (bi.__capitalAmortizationDuration % 3 != 0) {\n                    revert CapitalAmortizationFreePeriodDurationIsNotAMultpleOfThree();\n                } else {\n                    this.setCapitalAmortizationFreeDuration(bi.__bondId, bi.__capitalAmortizationDuration);\n                }\n            }\n        }\n        _bondDetails.__interestRate = div(ud60x18(bi.__interestNum), ud60x18(bi.__interestDen)).unwrap();\n        _bondDetails.__withholdingTax = div(ud60x18(bi.__withholdingTaxNum), ud60x18(bi.__withholdingTaxDen)).unwrap();\n\n        _bondDetails.__campaignMaxAmount = bi.__campaignMaxAmount;\n        _bondDetails.__campaignMinAmount = bi.__campaignMinAmount;\n        _bondDetails.__maxSupply = convert(div(ud60x18(bi.__campaignMaxAmount), ud60x18(bi.__coupure)));\n        //_bondDetails.__maxAmountPerInvestor = ud60x18(bi.__maxAmountPerInvestor);\n        _bondDetails.__maxAmountPerInvestor = bi.__maxAmountPerInvestor;\n        _bondDetails.__duration = bi.__duration;\n\n        _bondDetails.__campaignStartDate = bi.__campaignStartDate;\n        _bondDetails.__campaignEndDate = BokkyPooBahsDateTimeLibrary.addDays(bi.__campaignStartDate, 60);\n\n        if (bi.__periodicity == uint256(Periodicity.Annual)) {\n            _bondDetails.__periodicity = Periodicity.Annual;\n            _bondDetails.__periodicInterestRate = _bondDetails.__interestRate;\n        } else if (bi.__periodicity == uint256(Periodicity.Quarterly)) {\n            _bondDetails.__periodicity = Periodicity.Quarterly;\n            UD60x18 a = ud60x18(bi.__interestDen + bi.__interestNum);\n            UD60x18 b = ud60x18(bi.__interestDen);\n            UD60x18 c = ud60x18(1);\n            UD60x18 d = ud60x18(4);\n            _bondDetails.__periodicInterestRate = (pow(div(a, b), div(c, d)) - ud60x18(1)).unwrap();\n        } else if (bi.__periodicity == uint256(Periodicity.Monthly)) {\n            _bondDetails.__periodicity = Periodicity.Monthly;\n            UD60x18 a = ud60x18(bi.__interestDen + bi.__interestNum);\n            UD60x18 b = ud60x18(bi.__interestDen);\n            UD60x18 c = ud60x18(1);\n            UD60x18 d = ud60x18(12);\n            _bondDetails.__periodicInterestRate = (pow(div(a, b), div(c, d)) - ud60x18(1)).unwrap();\n        }\n\n        if (bi.__methodOfRepayment == uint256(MethodOfRepayment.Degressive)) {\n            if (bi.__capitalAmortizationDuration != 0) {\n                _bondDetails.__methodOfRepayment = MethodOfRepayment.WithCapitalAmortizationFreePeriod;\n            } else if (bi.__gracePeriodDuration != 0) {\n                _bondDetails.__methodOfRepayment = MethodOfRepayment.GracePeriod;\n            } else {\n                _bondDetails.__methodOfRepayment = MethodOfRepayment.Degressive;\n            }\n        } else if (bi.__methodOfRepayment == uint256(MethodOfRepayment.Bullet)) {\n            _bondDetails.__methodOfRepayment = MethodOfRepayment.Bullet;\n        } else if (bi.__methodOfRepayment == uint256(MethodOfRepayment.Balloon)) {\n            _bondDetails.__methodOfRepayment = MethodOfRepayment.Balloon;\n        }\n        _bondDetails.__capitalAmortizationDuration = bi.__capitalAmortizationDuration;\n        _bondDetails.__gracePeriodDuration = bi.__gracePeriodDuration;\n        if (bi.__balloonRateNum != 0 && bi.__balloonRateDen != 0) {\n            _bondDetails.__balloonRate = div(ud60x18(bi.__balloonRateNum), ud60x18(bi.__balloonRateDen)).unwrap();\n            this.setBalloonRate(bi.__bondId, bi.__balloonRateNum, bi.__balloonRateDen);\n        }\n\n        _bondDetails.__isSub = replacementBond;\n\n        _bondDetails.__netReturn = _bondDetails.__interestRate\n            - mul(\n                ud60x18(_bondDetails.__interestRate), div(ud60x18(bi.__withholdingTaxNum), ud60x18(bi.__withholdingTaxDen))\n            ).unwrap();\n\n        emit GracePeriodSet(bi.__bondId, bi.__gracePeriodDuration);\n        emit BalloonRateSet(bi.__bondId, bi.__balloonRateNum, bi.__balloonRateDen);\n        emit CapitalAmortizationFreePeriodSet(bi.__bondId, bi.__capitalAmortizationDuration);\n        emit MinAndMaxAmountSet(\n            bi.__bondId,\n            _bondDetails.__campaignMinAmount,\n            _bondDetails.__campaignMaxAmount,\n            _bondDetails.__maxAmountPerInvestor\n        );\n        emit CampaignStartAndEndDateSet(bi.__bondId, _bondDetails.__campaignStartDate, _bondDetails.__campaignEndDate);\n    }\n\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n        return interfaceId == type(IERC1155Receiver).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    // Implement onERC1155Received to handle single token type receipt\n    function onERC1155Received(\n        address, /*  operator */\n        address, /*  from */\n        uint256, /*  id */\n        uint256, /*  value */\n        bytes calldata /*  data */\n    )\n        external\n        override\n        returns (bytes4)\n    {\n        // Handle the receipt of the ERC1155 token(s) here\n\n        // Return the acceptance magic value\n        return this.onERC1155Received.selector;\n    }\n\n    // Implement onERC1155BatchReceived to handle multiple token type receipt\n    function onERC1155BatchReceived(\n        address, /*  operator */\n        address, /*  from */\n        uint256[] calldata, /*  ids */\n        uint256[] calldata, /*  values */\n        bytes calldata /*  data */\n    )\n        external\n        override\n        returns (bytes4)\n    {\n        // Handle the receipt of the ERC1155 tokens here\n\n        // Return the acceptance magic value\n        return this.onERC1155BatchReceived.selector;\n    }\n\n    function initializeBond(BondInitParams.BondInit memory bi) external {\n        //BondDetails storage _bondDetails = __bondDetails[bi.__bondId];\n        __bond = address(this);\n        BondParams storage _bondDetails = bondStorage(bi.__bondId);\n        if (_bondDetails.__initDone) {\n            revert BondAlreadyInitialized();\n        }\n        setParameters(bi, false);\n        _bondDetails.__initDone = true;\n        _bondDetails.__currencyAddress = __currencyAddress;\n        emit BondInitializedPart1(\n            bi.__bondId,\n            bi.__coupure,\n            bi.__interestNum,\n            bi.__interestDen,\n            bi.__withholdingTaxNum,\n            bi.__withholdingTaxDen,\n            bi.__issuer\n        );\n        emit BondInitializedPart2(\n            bi.__bondId,\n            _bondDetails.__periodicInterestRate,\n            _bondDetails.__netReturn,\n            bi.__periodicity,\n            bi.__duration,\n            bi.__methodOfRepayment,\n            _bondDetails.__maxSupply,\n            uint256(_bondDetails.__formOfFinancing)\n        );\n        setCouponDatesFromIssueDate(bi.__bondId, bi.__expectedIssueDate);\n        setCouponRates(bi.__bondId);\n    }\n\n    function editBondParameters(BondInitParams.BondInit memory bi) external {\n        //BondDetails storage _bondDetails = __bondDetails[bi.__bondId];\n        BondParams storage _bondDetails = bondStorage(bi.__bondId);\n        if (_bondDetails.__issued) {\n            revert BondAlreadyIssued();\n        }\n        setParameters(bi, false);\n        emit CampaignStartAndEndDateSet(bi.__bondId, _bondDetails.__campaignStartDate, _bondDetails.__campaignEndDate);\n        emit MinAndMaxAmountSet(\n            bi.__bondId,\n            _bondDetails.__campaignMinAmount,\n            _bondDetails.__campaignMaxAmount,\n            _bondDetails.__maxAmountPerInvestor\n        );\n        emit BondParametersEditedPart1(\n            bi.__bondId,\n            bi.__coupure,\n            bi.__interestNum,\n            bi.__interestDen,\n            bi.__withholdingTaxNum,\n            bi.__withholdingTaxDen,\n            bi.__issuer\n        );\n        emit BondParametersEditedPart2(\n            bi.__bondId,\n            _bondDetails.__periodicInterestRate,\n            _bondDetails.__netReturn,\n            bi.__periodicity,\n            bi.__duration,\n            bi.__methodOfRepayment,\n            _bondDetails.__maxSupply,\n            uint256(_bondDetails.__formOfFinancing)\n        );\n\n        setCouponDatesFromIssueDate(bi.__bondId, bi.__expectedIssueDate);\n        setCouponRates(bi.__bondId);\n    }\n\n    function setBalloonRate(uint256 _bondId, uint256 _balloonRateNum, uint256 _balloonRateDen) external {\n        //BondDetails storage _bondDetails = __bondDetails[_bondId];\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        _bondDetails.__balloonRate = convert(div(ud60x18(_balloonRateNum), ud60x18(_balloonRateDen)));\n        emit BalloonRateSet(_bondId, _balloonRateNum, _balloonRateDen);\n    }\n\n    function setCapitalAmortizationFreeDuration(uint256 _bondId, uint256 _duration) external {\n        //BondDetails storage _bondDetails = __bondDetails[_bondId];\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        _bondDetails.__capitalAmortizationDuration = _duration;\n        emit CapitalAmortizationFreePeriodSet(_bondId, _duration);\n    }\n\n    function setGracePeriodDuration(uint256 _bondId, uint256 _duration) external {\n        //BondDetails storage _bondDetails = __bondDetails[_bondId];\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        _bondDetails.__gracePeriodDuration = _duration;\n        emit GracePeriodSet(_bondId, _duration);\n    }\n\n    function reserve(\n        string memory _bondPurchaseId,\n        uint256 _bondId,\n        uint256 _bondAmount,\n        address _buyer\n    )\n        external\n        campaignNotPaused(_bondId)\n        returns (uint256)\n    {\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        uint256 availableAmountOfBonds;\n        if (_bondDetails.__maxSupply > _bondDetails.__reservedAmount) {\n            availableAmountOfBonds = _bondDetails.__maxSupply - _bondDetails.__reservedAmount;\n        } else {\n            availableAmountOfBonds = 0;\n        }\n        uint256 actualAmountOfBonds;\n        if (_bondAmount > availableAmountOfBonds) {\n            actualAmountOfBonds = availableAmountOfBonds;\n        } else {\n            actualAmountOfBonds = _bondAmount;\n        }\n\n        if (block.timestamp < _bondDetails.__campaignStartDate) {\n            revert CannotReserveBeforeSignupDate();\n        }\n        if (block.timestamp > _bondDetails.__campaignEndDate) {\n            revert CannotReserveAfterCampaignEnd();\n        }\n        if (actualAmountOfBonds == 0) {\n            revert NoMoreBondsToBuy();\n        }\n        if (_bondDetails.__reservedAmountByAddress[_buyer] + actualAmountOfBonds > _bondDetails.__maxAmountPerInvestor)\n        {\n            revert ExceedingMaxAmountPerInvestor();\n        }\n        if (_bondDetails.__reservedAmountByAddress[_buyer] == 0) {\n            _bondDetails.__investorsCount += 1;\n            emit InvestorsCountChanged(_bondId, _bondDetails.__investorsCount);\n        }\n        _bondDetails.__reservedAmount += actualAmountOfBonds;\n        _bondDetails.__reservedAmountByAddress[_buyer] += actualAmountOfBonds;\n        _bondDetails.__reservedAmountByPurchaseId[_bondPurchaseId] = actualAmountOfBonds;\n        emit ReservedAmountChanged(_bondId, _bondDetails.__reservedAmount);\n        return actualAmountOfBonds;\n    }\n\n    function pauseCampaign(uint256 _bondId) external {\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        if (_bondDetails.__paused) {\n            revert CampaignAlreadyPaused();\n        }\n\n        if (_bondDetails.__campaignStartDate >= block.timestamp || _bondDetails.__campaignEndDate <= block.timestamp) {\n            revert CampaignIsClosed();\n        }\n        _bondDetails.__paused = true;\n        emit CampaignPaused(_bondId);\n    }\n\n    function unpauseCampaign(uint256 _bondId) external {\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        if (!_bondDetails.__paused) {\n            revert CampaignNotPaused();\n        }\n        if (_bondDetails.__campaignStartDate >= block.timestamp || _bondDetails.__campaignEndDate <= block.timestamp) {\n            revert CampaignIsClosed();\n        }\n        _bondDetails.__paused = false;\n        emit CampaignUnpaused(_bondId);\n    }\n\n    function rescindReservation(string memory _bondPurchaseId, uint256 _bondId, address _buyer) external {\n        BondParams storage _bondDetails = bondStorage(_bondId);\n\n        require(\n            _bondDetails.__reservedAmount >= _bondDetails.__reservedAmountByPurchaseId[_bondPurchaseId],\n            \"Underflow: reserved amount\"\n        );\n        require(\n            _bondDetails.__reservedAmountByAddress[_buyer] >= _bondDetails.__reservedAmountByPurchaseId[_bondPurchaseId],\n            \"Underflow: reserved amount by address\"\n        );\n\n        _bondDetails.__reservedAmount -= _bondDetails.__reservedAmountByPurchaseId[_bondPurchaseId];\n        _bondDetails.__reservedAmountByAddress[_buyer] -= _bondDetails.__reservedAmountByPurchaseId[_bondPurchaseId];\n\n        if (_bondDetails.__reservedAmountByAddress[_buyer] == 0) {\n            _bondDetails.__investorsCount -= 1;\n            emit InvestorsCountChanged(_bondId, _bondDetails.__investorsCount);\n        }\n        _bondDetails.__revocationsCount += 1;\n        _bondDetails.__reservedAmountByPurchaseId[_bondPurchaseId] = 0;\n        emit RevocationsCountChanged(_bondId, _bondDetails.__revocationsCount);\n        emit ReservedAmountChanged(_bondId, _bondDetails.__reservedAmount);\n    }\n\n    function issueBond(uint256 _bondId, uint256 _issueDate) external onlyOwner {\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        _bondDetails.__currentLine = 1;\n        if (_bondDetails.__issued) {\n            revert BondAlreadyIssued();\n        }\n        setCouponDatesFromIssueDate(_bondId, _issueDate);\n        setCouponRates(_bondId);\n        _bondDetails.__issued = true;\n        _bondDetails.__status = BondStatus.Issued;\n        _bondDetails.__issuedAmount = _bondDetails.__reservedAmount;\n        ERC1155Facet(__bond).mint(address(this), _bondId, _bondDetails.__issuedAmount, \"\");\n\n        emit BondIssued(_bondId, _issueDate, _bondDetails.__issuedAmount);\n    }\n\n    function withdrawBondsPurchased(string memory _bondPurchaseId, uint256 _bondId, address holder) external {\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        if (!_bondDetails.__issued) {\n            revert BondHasNotBeenIssued();\n        }\n        uint256 amount = _bondDetails.__reservedAmountByPurchaseId[_bondPurchaseId];\n        uint256 tokenAmount = amount * _bondDetails.__coupure;\n        uint256 currentAllowance = ERC20(__currencyAddress).allowance(holder, address(this));\n        require(currentAllowance >= tokenAmount, \"ERC20: transfer amount exceeds allowance\");\n        // slither-disable-next-line all\n        bool success = ERC20(__currencyAddress).transferFrom(holder, _bondDetails.__issuer, tokenAmount);\n        require(success, \"ERC20: transfer failed\");\n        ERC1155Facet(__bond).mint(holder, _bondId, amount, \"\");\n        //_bondDetails.__confirmedReservationByAddress[holder] = 0;\n        _bondDetails.__isHolder[holder] = true;\n        emit BondsWithdrawn(_bondPurchaseId, _bondId, holder, amount);\n    }\n\n    function transferBond(\n        string memory _bondTransferId,\n        uint256 _bondId,\n        address _old,\n        address _new,\n        uint256 _amount\n    )\n        external\n        onlyOwner\n    {\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        if (!_bondDetails.__issued) {\n            revert BondHasNotBeenIssued();\n        }\n        if (ERC1155Facet(__bond).balanceOf(_old, _bondId) < _amount) {\n            revert OldAccountDoesNotHaveEnoughBonds();\n        }\n        uint256 _tokenAmount = _amount * _bondDetails.__coupure;\n        uint256 currentAllowance = ERC20(__currencyAddress).allowance(_new, address(this));\n        require(currentAllowance >= _tokenAmount, \"ERC20: transfer amount exceeds allowance\");\n        // slither-disable-next-line all\n        bool success = ERC20(__currencyAddress).transferFrom(_new, _old, _tokenAmount);\n        require(success, \"ERC20: transfer failed\");\n        ERC1155Facet(__bond).safeTransferFrom(_old, _new, _bondId, _amount, \"\");\n        emit BondTransferred(_bondTransferId, _bondId, _old, _new, _amount);\n    }\n\n    function getSelectors() external pure returns (bytes4[] memory) {\n        bytes4[] memory selectors = new bytes4[](15);\n        selectors[0] = BondFacet.initializeBond.selector;\n        selectors[1] = BondFacet.setCurrencyAddress.selector;\n        selectors[2] = BondFacet.editBondParameters.selector;\n        selectors[3] = BondFacet.setBalloonRate.selector;\n        selectors[4] = BondFacet.setCapitalAmortizationFreeDuration.selector;\n        selectors[5] = BondFacet.setGracePeriodDuration.selector;\n        selectors[6] = BondFacet.reserve.selector;\n        selectors[7] = BondFacet.pauseCampaign.selector;\n        selectors[8] = BondFacet.unpauseCampaign.selector;\n        selectors[9] = BondFacet.rescindReservation.selector;\n        selectors[10] = BondFacet.transferBond.selector;\n        selectors[11] = BondFacet.withdrawBondsPurchased.selector;\n        selectors[12] = BondFacet.issueBond.selector;\n        selectors[13] = BondFacet.onERC1155Received.selector;\n        selectors[14] = BondFacet.onERC1155BatchReceived.selector;\n\n        return selectors;\n    }\n}\n"
      },
      "contracts/facets/BondManagerFacet.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\nimport \"@prb/math/src/UD60x18.sol\";\nimport { BondStorage } from \"./BondStorage.sol\";\n\ncontract BondManagerFacet is BondStorage {\n    event BondTerminated(uint256 bondId);\n    event Cancelled(uint256 bondId);\n\n    function terminate(uint256 _bondId) external {\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        _bondDetails.__status = BondStatus.Terminated;\n        emit BondTerminated(_bondId);\n    }\n\n    function cancel(uint256 _bondId) external {\n        BondParams storage _bondDetails = bondStorage(_bondId);\n\n        //BondDetails storage _bondDetails = __bondDetails[_bondId];\n        _bondDetails.__cancelled = true;\n        //_bondDetails2.__cancelled = true;\n        emit Cancelled(_bondId);\n    }\n\n    function getSelectors() external pure returns (bytes4[] memory) {\n        bytes4[] memory selectors = new bytes4[](2);\n        selectors[0] = BondManagerFacet.terminate.selector;\n        selectors[1] = BondManagerFacet.cancel.selector;\n        return selectors;\n    }\n}\n"
      },
      "contracts/facets/BondReaderFacet.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\nimport \"@prb/math/src/UD60x18.sol\";\nimport { BokkyPooBahsDateTimeLibrary } from \"../libraries/BokkyPooBahsDateTimeLibrary.sol\";\nimport { BondStorage } from \"./BondStorage.sol\";\n\ncontract BondReaderFacet is BondStorage {\n    function getCouponsDates(uint256 _bondId)\n        external\n        view\n        returns (uint256[] memory, uint256[] memory, uint256[] memory)\n    {\n        //BondDetails storage _bondDetails = __bondDetails[_bondId];\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        uint256 dateLength = _bondDetails.__couponDates.length;\n        uint256[] memory day = new uint256[](dateLength);\n        uint256[] memory month = new uint256[](dateLength);\n        uint256[] memory year = new uint256[](dateLength);\n        for (uint256 i = 0; i < dateLength; i++) {\n            (uint256 y, uint256 m, uint256 d) =\n                BokkyPooBahsDateTimeLibrary.timestampToDate(_bondDetails.__couponDates[i]);\n            day[i] = d;\n            month[i] = m;\n            year[i] = y;\n        }\n        return (day, month, year);\n    }\n\n    function getCouponsRates(uint256 _bondId)\n        external\n        view\n        returns (uint256[] memory, uint256[] memory, uint256[] memory, uint256[] memory)\n    {\n        BondParams storage _bondDetails = bondStorage(_bondId);\n\n        uint256[] memory gross = new uint256[](_bondDetails.__grossCouponRates.length);\n        uint256[] memory net = new uint256[](_bondDetails.__grossCouponRates.length);\n        uint256[] memory capital = new uint256[](_bondDetails.__capitalRepayment.length);\n        uint256[] memory remainingCapital = new uint256[](_bondDetails.__remainingCapital.length);\n        for (uint256 i = 0; i < _bondDetails.__grossCouponRates.length; i++) {\n            gross[i] = _bondDetails.__grossCouponRates[i];\n            net[i] = _bondDetails.__netCouponRates[i];\n            capital[i] = _bondDetails.__capitalRepayment[i];\n            remainingCapital[i] = _bondDetails.__remainingCapital[i];\n        }\n        return (gross, net, capital, remainingCapital);\n    }\n\n    function getSelectors() external pure returns (bytes4[] memory) {\n        bytes4[] memory selectors = new bytes4[](2);\n        selectors[0] = BondReaderFacet.getCouponsDates.selector;\n        selectors[1] = BondReaderFacet.getCouponsRates.selector;\n        return selectors;\n    }\n}\n"
      },
      "contracts/facets/BondStorage.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\nimport { Strings } from \"@openzeppelin/contracts/utils/Strings.sol\";\n\ncontract BondStorage {\n    enum BondStatus {\n        Unset,\n        Issued,\n        Terminated,\n        Maturity\n    }\n\n    enum CouponStatus {\n        Todo,\n        Executed\n    }\n\n    enum Periodicity {\n        Annual,\n        Quarterly,\n        Monthly\n    }\n\n    enum FormOfFinancing {\n        Bond,\n        SubordinatedBond\n    }\n\n    enum MethodOfRepayment {\n        Bullet,\n        Degressive,\n        Balloon,\n        WithCapitalAmortizationFreePeriod,\n        GracePeriod,\n        CapitalAmortizationAndGracePeriod\n    }\n\n    struct BondParams {\n        uint256 __campaignMinAmount;\n        uint256 __campaignMaxAmount;\n        uint256 __campaignStartDate;\n        uint256 __campaignEndDate;\n        uint256 __costEmittent;\n        uint256 __coupure;\n        uint256 __interestRate;\n        uint256 __netReturn;\n        uint256 __periodicInterestRate;\n        uint256 __withholdingTax;\n        uint256 __balloonRate;\n        uint256 __issueDate;\n        uint256 __maturityDate;\n        uint256 __duration;\n        uint256 __capitalAmortizationDuration;\n        uint256 __gracePeriodDuration;\n        uint256 __maxSupply;\n        uint256 __reservedAmount;\n        uint256 __maxAmountPerInvestor;\n        uint256 __previousId;\n        uint256 __investorsCount;\n        uint256 __revocationsCount;\n        uint256 __totalToBeRepaid;\n        uint256 __issuedAmount;\n        uint256 __currentLine;\n        uint256 __nextInterestAmount;\n        uint256 __nextCapitalAmount;\n        bool __allClaimsReceived;\n        bool __isSub;\n        bool __initDone;\n        bool __paused;\n        bool __issued;\n        bool __cancelled;\n        uint256[] __grossCouponRates;\n        uint256[] __couponDates;\n        uint256[] __netCouponRates;\n        uint256[] __capitalRepayment;\n        uint256[] __remainingCapital;\n        CouponStatus[] __couponStatus;\n        mapping(address => bool) __isHolder;\n        mapping(address => uint256) __reservedAmountByAddress;\n        mapping(string => uint256) __reservedAmountByPurchaseId;\n        Periodicity __periodicity;\n        FormOfFinancing __formOfFinancing;\n        MethodOfRepayment __methodOfRepayment;\n        BondStatus __status;\n        address __currencyAddress;\n        address __issuer;\n    }\n\n    function bondStorage(uint256 slot) internal pure returns (BondParams storage bs) {\n        bytes32 bsSlot = keccak256(abi.encodePacked(\"storage.bond\", Strings.toString(slot)));\n        assembly {\n            bs.slot := bsSlot\n        }\n    }\n}\n"
      },
      "contracts/facets/ContextFacet.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\ncontract ContextFacet {\n    function _msgSender() internal view returns (address) {\n        return msg.sender;\n    }\n\n    // You might also want to implement _msgData()\n    function _msgData() internal pure returns (bytes calldata) {\n        return msg.data;\n    }\n}\n"
      },
      "contracts/facets/CouponFacet.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\nimport { ERC1155Facet } from \"./ERC1155Facet.sol\";\nimport \"@prb/math/src/UD60x18.sol\";\nimport { BondStorage } from \"./BondStorage.sol\";\nimport { OwnershipFacet } from \"./OwnershipFacet.sol\";\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { ContextFacet } from \"./ContextFacet.sol\";\n\ncontract CouponFacet is BondStorage, OwnershipFacet, ContextFacet {\n    event CouponStatusChanged(uint256 bondId, uint256 lineNumber);\n\n    error NotAllClaimsReceivedForNextPayment();\n    // claim coupon (+ interest)\n\n    function claimCoupon(uint256 _bondId, address _buyer) external returns (uint256) {\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        uint256 userBalance = ERC1155Facet(address(this)).balanceOf(_buyer, _bondId);\n        require(userBalance != 0);\n        uint256 interestAmount =\n            convert(mul(ud60x18(userBalance), ud60x18(_bondDetails.__netCouponRates[_bondDetails.__currentLine])));\n        uint256 capitalAmount =\n            convert(mul(ud60x18(userBalance), ud60x18(_bondDetails.__capitalRepayment[_bondDetails.__currentLine])));\n        _bondDetails.__nextInterestAmount += userBalance;\n        _bondDetails.__nextCapitalAmount += userBalance;\n\n        if (\n            _bondDetails.__nextCapitalAmount == _bondDetails.__issuedAmount\n                && _bondDetails.__nextInterestAmount == _bondDetails.__issuedAmount\n        ) {\n            _bondDetails.__allClaimsReceived = true;\n        }\n        return interestAmount + capitalAmount;\n    }\n\n    // withdraw coupon (with interest)\n    function withdrawCouponClaim(uint256 _bondId, address _buyer) external {\n        BondParams storage _bondDetails = bondStorage(_bondId);\n        if (!_bondDetails.__allClaimsReceived) {\n            revert NotAllClaimsReceivedForNextPayment();\n        }\n\n        uint256 userBalance = ERC1155Facet(address(this)).balanceOf(_buyer, _bondId);\n        uint256 interestAmount =\n            convert(mul(ud60x18(userBalance), ud60x18(_bondDetails.__netCouponRates[_bondDetails.__currentLine])));\n        uint256 tokenAmount = userBalance * _bondDetails.__coupure + interestAmount;\n        uint256 currentAllowance = ERC20(_bondDetails.__currencyAddress).allowance(_bondDetails.__issuer, address(this));\n        require(currentAllowance >= tokenAmount, \"ERC20: transfer amount exceeds allowance\");\n        // slither-disable-next-line all\n        bool success = ERC20(_bondDetails.__currencyAddress).transferFrom(_bondDetails.__issuer, _buyer, tokenAmount);\n        require(success, \"ERC20: transfer failed\");\n        require(_bondDetails.__nextInterestAmount >= userBalance, \"Underflow detected in next interest amount\");\n\n        require(_bondDetails.__nextCapitalAmount >= userBalance, \"Underflow detected in next capital amount\");\n        unchecked {\n            _bondDetails.__nextCapitalAmount -= userBalance;\n            _bondDetails.__nextInterestAmount -= userBalance;\n        }\n        if (_bondDetails.__nextInterestAmount == 0 && _bondDetails.__nextCapitalAmount == 0) {\n            _bondDetails.__couponStatus[_bondDetails.__currentLine] = CouponStatus.Executed;\n            emit CouponStatusChanged(_bondId, _bondDetails.__currentLine);\n            _bondDetails.__currentLine += 1;\n            _bondDetails.__allClaimsReceived = false;\n        }\n    }\n\n    function getSelectors() external pure returns (bytes4[] memory) {\n        bytes4[] memory selectors = new bytes4[](2);\n\n        selectors[0] = CouponFacet.claimCoupon.selector;\n        selectors[1] = CouponFacet.withdrawCouponClaim.selector;\n\n        return selectors;\n    }\n}\n"
      },
      "contracts/facets/DiamondLoupeFacet.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n/**\n * \\\n * Author: Nick Mudge <nick@perfectabstractions.com> (https://twitter.com/mudgen)\n * EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n * /*****************************************************************************\n */\n\n// The functions in DiamondLoupeFacet MUST be added to a diamond.\n// The EIP-2535 Diamond standard requires these functions.\n\nimport { LibDiamond } from \"../libraries/LibDiamond.sol\";\nimport { IDiamondLoupe } from \"../interfaces/IDiamondLoupe.sol\";\nimport { IERC165 } from \"@openzeppelin/contracts/interfaces/IERC165.sol\";\n\ncontract DiamondLoupeFacet is IDiamondLoupe, IERC165 {\n    // Diamond Loupe Functions\n    ////////////////////////////////////////////////////////////////////\n    /// These functions are expected to be called frequently by tools.\n    //\n    // struct Facet {\n    //     address facetAddress;\n    //     bytes4[] functionSelectors;\n    // }\n    /// @notice Gets all facets and their selectors.\n    /// @return facets_ Facet\n    function facets() external view override returns (Facet[] memory facets_) {\n        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();\n        uint256 selectorCount = ds.selectors.length;\n        // create an array set to the maximum size possible\n        facets_ = new Facet[](selectorCount);\n        // create an array for counting the number of selectors for each facet\n        uint8[] memory numFacetSelectors = new uint8[](selectorCount);\n        // total number of facets\n        uint256 numFacets;\n        // loop through function selectors\n        for (uint256 selectorIndex; selectorIndex < selectorCount; selectorIndex++) {\n            bytes4 selector = ds.selectors[selectorIndex];\n            address facetAddress_ = ds.facetAddressAndSelectorPosition[selector].facetAddress;\n            bool continueLoop = false;\n            // find the functionSelectors array for selector and add selector to it\n            for (uint256 facetIndex; facetIndex < numFacets; facetIndex++) {\n                if (facets_[facetIndex].facetAddress == facetAddress_) {\n                    facets_[facetIndex].functionSelectors[numFacetSelectors[facetIndex]] = selector;\n                    // probably will never have more than 256 functions from one facet contract\n                    require(numFacetSelectors[facetIndex] < 255, \"amount of function has to be less than 255\");\n                    numFacetSelectors[facetIndex]++;\n                    continueLoop = true;\n                    break;\n                }\n            }\n            // if functionSelectors array exists for selector then continue loop\n            if (continueLoop) {\n                continueLoop = false;\n                continue;\n            }\n            // create a new functionSelectors array for selector\n            facets_[numFacets].facetAddress = facetAddress_;\n            facets_[numFacets].functionSelectors = new bytes4[](selectorCount);\n            facets_[numFacets].functionSelectors[0] = selector;\n            numFacetSelectors[numFacets] = 1;\n            numFacets++;\n        }\n        for (uint256 facetIndex; facetIndex < numFacets; facetIndex++) {\n            uint256 numSelectors = numFacetSelectors[facetIndex];\n            bytes4[] memory selectors = facets_[facetIndex].functionSelectors;\n            // setting the number of selectors\n            assembly {\n                mstore(selectors, numSelectors)\n            }\n        }\n        // setting the number of facets\n        assembly {\n            mstore(facets_, numFacets)\n        }\n    }\n\n    /// @notice Gets all the function selectors supported by a specific facet.\n    /// @param _facet The facet address.\n    /// @return _facetFunctionSelectors The selectors associated with a facet address.\n    function facetFunctionSelectors(address _facet)\n        external\n        view\n        override\n        returns (bytes4[] memory _facetFunctionSelectors)\n    {\n        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();\n        uint256 selectorCount = ds.selectors.length;\n        uint256 numSelectors;\n        _facetFunctionSelectors = new bytes4[](selectorCount);\n        // loop through function selectors\n        for (uint256 selectorIndex; selectorIndex < selectorCount; selectorIndex++) {\n            bytes4 selector = ds.selectors[selectorIndex];\n            address facetAddress_ = ds.facetAddressAndSelectorPosition[selector].facetAddress;\n            if (_facet == facetAddress_) {\n                _facetFunctionSelectors[numSelectors] = selector;\n                numSelectors++;\n            }\n        }\n        // Set the number of selectors in the array\n        assembly {\n            mstore(_facetFunctionSelectors, numSelectors)\n        }\n    }\n\n    /// @notice Get all the facet addresses used by a diamond.\n    /// @return facetAddresses_\n    function facetAddresses() external view override returns (address[] memory facetAddresses_) {\n        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();\n        uint256 selectorCount = ds.selectors.length;\n        // create an array set to the maximum size possible\n        facetAddresses_ = new address[](selectorCount);\n        uint256 numFacets;\n        // loop through function selectors\n        for (uint256 selectorIndex; selectorIndex < selectorCount; selectorIndex++) {\n            bytes4 selector = ds.selectors[selectorIndex];\n            address facetAddress_ = ds.facetAddressAndSelectorPosition[selector].facetAddress;\n            bool continueLoop = false;\n            // see if we have collected the address already and break out of loop if we have\n            for (uint256 facetIndex; facetIndex < numFacets; facetIndex++) {\n                if (facetAddress_ == facetAddresses_[facetIndex]) {\n                    continueLoop = true;\n                    break;\n                }\n            }\n            // continue loop if we already have the address\n            if (continueLoop) {\n                continueLoop = false;\n                continue;\n            }\n            // include address\n            facetAddresses_[numFacets] = facetAddress_;\n            numFacets++;\n        }\n        // Set the number of facet addresses in the array\n        assembly {\n            mstore(facetAddresses_, numFacets)\n        }\n    }\n\n    /// @notice Gets the facet address that supports the given selector.\n    /// @dev If facet is not found return address(0).\n    /// @param _functionSelector The function selector.\n    /// @return facetAddress_ The facet address.\n    function facetAddress(bytes4 _functionSelector) external view override returns (address facetAddress_) {\n        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();\n        facetAddress_ = ds.facetAddressAndSelectorPosition[_functionSelector].facetAddress;\n    }\n\n    // This implements ERC-165.\n    function supportsInterface(bytes4 _interfaceId) external view override returns (bool) {\n        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();\n        return ds.supportedInterfaces[_interfaceId];\n    }\n\n    function getSelectors() external pure returns (bytes4[] memory) {\n        bytes4[] memory selectors = new bytes4[](5);\n        selectors[0] = DiamondLoupeFacet.facets.selector;\n        selectors[1] = DiamondLoupeFacet.facetAddress.selector;\n        selectors[2] = DiamondLoupeFacet.facetFunctionSelectors.selector;\n        selectors[3] = DiamondLoupeFacet.facetAddresses.selector;\n        selectors[4] = DiamondLoupeFacet.supportsInterface.selector;\n\n        return selectors;\n    }\n}\n"
      },
      "contracts/facets/ERC1155Facet.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\nimport { Context } from \"@openzeppelin/contracts/utils/Context.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { ERC165, IERC165 } from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\nimport { IERC1155 } from \"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\";\nimport { IERC1155Receiver } from \"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\";\n\ncontract ERC1155Facet is Context, ERC165, IERC1155 {\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC1155InvalidReceiver(address receiver);\n\n    using Address for address;\n\n    mapping(uint256 => mapping(address => uint256)) private _balances;\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n        return interfaceId == type(IERC1155).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    function balanceOf(address account, uint256 id) external view override returns (uint256) {\n        require(account != address(0), \"ERC1155: balance query for the zero address\");\n        return _balances[id][account];\n    }\n\n    function balanceOfBatch(\n        address[] calldata accounts,\n        uint256[] calldata ids\n    )\n        external\n        view\n        override\n        returns (uint256[] memory)\n    {\n        require(accounts.length == ids.length, \"ERC1155: accounts and ids length mismatch\");\n\n        uint256[] memory batchBalances = new uint256[](accounts.length);\n\n        for (uint256 i = 0; i < accounts.length; ++i) {\n            batchBalances[i] = _balances[ids[i]][accounts[i]];\n        }\n\n        return batchBalances;\n    }\n\n    function setApprovalForAll(address operator, bool approved) external override {\n        _setApprovalForAll(_msgSender(), operator, approved);\n    }\n\n    function isApprovedForAll(address account, address operator) external view override returns (bool) {\n        return _operatorApprovals[account][operator];\n    }\n\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes calldata data\n    )\n        external\n        override\n    {\n        require(\n            from == _msgSender() || _operatorApprovals[from][_msgSender()], \"ERC1155: caller is not owner nor approved\"\n        );\n        _safeTransferFrom(from, to, id, amount, data);\n    }\n\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata amounts,\n        bytes calldata data\n    )\n        external\n        override\n    {\n        require(\n            from == _msgSender() || _operatorApprovals[from][_msgSender()],\n            \"ERC1155: transfer caller is not owner nor approved\"\n        );\n        _safeBatchTransferFrom(from, to, ids, amounts, data);\n    }\n\n    function _safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes memory data) internal {\n        require(to != address(0), \"ERC1155: transfer to the zero address\");\n\n        address operator = _msgSender();\n        uint256 fromBalance = _balances[id][from];\n        require(fromBalance >= amount, \"ERC1155: insufficient balance for transfer\");\n        unchecked {\n            _balances[id][from] = fromBalance - amount;\n        }\n        _balances[id][to] += amount;\n\n        emit TransferSingle(operator, from, to, id, amount);\n\n        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);\n    }\n\n    function _safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory amounts,\n        bytes memory data\n    )\n        internal\n    {\n        require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n        require(to != address(0), \"ERC1155: transfer to the zero address\");\n\n        address operator = _msgSender();\n\n        for (uint256 i = 0; i < ids.length; ++i) {\n            uint256 id = ids[i];\n            uint256 amount = amounts[i];\n\n            uint256 fromBalance = _balances[id][from];\n            require(fromBalance >= amount, \"ERC1155: insufficient balance for transfer\");\n            unchecked {\n                _balances[id][from] = fromBalance - amount;\n            }\n            _balances[id][to] += amount;\n        }\n\n        emit TransferBatch(operator, from, to, ids, amounts);\n\n        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);\n    }\n\n    function _setApprovalForAll(address owner, address operator, bool approved) internal {\n        require(owner != operator, \"ERC1155: setting approval status for self\");\n        _operatorApprovals[owner][operator] = approved;\n        emit ApprovalForAll(owner, operator, approved);\n    }\n\n    function _doSafeTransferAcceptanceCheck(\n        address operator,\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    )\n        private\n    {\n        if (to.code.length > 0) {\n            try IERC1155Receiver(to).onERC1155Received(operator, from, id, value, data) returns (bytes4 response) {\n                if (response != IERC1155Receiver.onERC1155Received.selector) {\n                    // Tokens rejected\n                    revert ERC1155InvalidReceiver(to);\n                }\n            } catch (bytes memory reason) {\n                if (reason.length == 0) {\n                    // non-ERC1155Receiver implementer\n                    revert ERC1155InvalidReceiver(to);\n                } else {\n                    /// @solidity memory-safe-assembly\n                    assembly {\n                        revert(add(32, reason), mload(reason))\n                    }\n                }\n            }\n        }\n    }\n\n    function _doSafeBatchTransferAcceptanceCheck(\n        address operator,\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    )\n        private\n    {\n        if (to.code.length > 0) {\n            try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, values, data) returns (bytes4 response)\n            {\n                if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {\n                    // Tokens rejected\n                    revert ERC1155InvalidReceiver(to);\n                }\n            } catch (bytes memory reason) {\n                if (reason.length == 0) {\n                    // non-ERC1155Receiver implementer\n                    revert ERC1155InvalidReceiver(to);\n                } else {\n                    /// @solidity memory-safe-assembly\n                    assembly {\n                        revert(add(32, reason), mload(reason))\n                    }\n                }\n            }\n        }\n    }\n\n    // Additional functions for minting and burning\n    function mint(address to, uint256 id, uint256 amount, bytes calldata data) external {\n        require(to != address(0), \"ERC1155: mint to the zero address\");\n\n        address operator = _msgSender();\n\n        _balances[id][to] += amount;\n        emit TransferSingle(operator, address(0), to, id, amount);\n\n        _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);\n    }\n\n    function burn(address from, uint256 id, uint256 amount) external {\n        require(from != address(0), \"ERC1155: burn from the zero address\");\n        require(\n            from == _msgSender() || _operatorApprovals[from][_msgSender()], \"ERC1155: caller is not owner nor approved\"\n        );\n\n        uint256 fromBalance = _balances[id][from];\n        require(fromBalance >= amount, \"ERC1155: burn amount exceeds balance\");\n        unchecked {\n            _balances[id][from] = fromBalance - amount;\n        }\n\n        emit TransferSingle(_msgSender(), from, address(0), id, amount);\n    }\n\n    function getSelectors() external pure returns (bytes4[] memory) {\n        bytes4[] memory selectors = new bytes4[](8);\n        selectors[0] = this.balanceOf.selector;\n        selectors[1] = this.balanceOfBatch.selector;\n        selectors[2] = this.setApprovalForAll.selector;\n        selectors[3] = this.isApprovedForAll.selector;\n        selectors[4] = this.safeTransferFrom.selector;\n        selectors[5] = this.safeBatchTransferFrom.selector;\n        selectors[6] = this.mint.selector;\n        selectors[7] = this.burn.selector;\n        return selectors;\n    }\n}\n"
      },
      "contracts/facets/OwnershipFacet.sol": {
        "content": "pragma solidity ^0.8.24;\n\ncontract OwnershipFacet {\n    bytes32 constant OWNERSHIP_STORAGE_POSITION = keccak256(\"diamond.standard.ownership.storage\");\n\n    struct OwnershipStorage {\n        address owner;\n    }\n\n    function initializeOwner(address _newOwner) external {\n        OwnershipStorage storage os = ownershipStorage();\n        require(os.owner == address(0), \"Owner already set\");\n        os.owner = _newOwner;\n    }\n\n    function setOwner(address _newOwner) internal onlyOwner {\n        OwnershipStorage storage os = ownershipStorage();\n        os.owner = _newOwner;\n    }\n\n    function owner() external view returns (address) {\n        return ownershipStorage().owner;\n    }\n\n    function transferOwnership(address _newOwner) external onlyOwner {\n        require(_newOwner != address(0), \"New owner cannot be the zero address\");\n        setOwner(_newOwner);\n    }\n\n    function ownershipStorage() internal pure returns (OwnershipStorage storage os) {\n        bytes32 position = OWNERSHIP_STORAGE_POSITION;\n        assembly {\n            os.slot := position\n        }\n    }\n\n    modifier onlyOwner() {\n        require(msg.sender == ownershipStorage().owner, \"Only the owner can call this function\");\n        _;\n    }\n\n    function getSelectorsOwnership() public pure returns (bytes4[] memory) {\n        bytes4[] memory selectors = new bytes4[](3);\n        selectors[0] = OwnershipFacet.owner.selector;\n        selectors[1] = OwnershipFacet.transferOwnership.selector;\n        selectors[2] = OwnershipFacet.initializeOwner.selector;\n        return selectors;\n    }\n}\n"
      },
      "contracts/GenericToken.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\n// SettleMint.com\n\npragma solidity ^0.8.24;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { ERC20Burnable } from \"@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\n/**\n * @title GenericToken\n * @notice This contract is a generic token adhering to the ERC20 standard,\n *  using the OpenZeppelin template libary for battletested functionality.\n *\n *  It incorporates the standard ERC20 functions, enhanced with Minting\n *  and Burning, Pausable in case of emergencies and AccessControl for locking\n *  down the administrative functions.\n *\n *  For demonstrative purposes, 1 million GT tokens are pre-mined to the address\n *  deploying this contract.\n */\ncontract GenericToken is ERC20, ERC20Burnable, ERC20Pausable, Ownable {\n    constructor(string memory name_, string memory symbol_) ERC20(name_, symbol_) Ownable(msg.sender) {\n        _mint(msg.sender, 1_000_000 * 10 ** decimals());\n    }\n\n    function mint(address to, uint256 amount) public whenNotPaused {\n        _mint(to, amount);\n    }\n\n    /**\n     * @dev Destroys `amount` tokens from `account`, reducing the total supply.\n     *\n     * Emits a Transfer event with `to` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     * - `account` must have at least `amount` tokens.\n     *\n     * @param amount       The amount of tokens to burn from the sender of the transaction, denominated by the\n     * decimals() function\n     */\n    function burn(uint256 amount) public virtual override {\n        _burn(_msgSender(), amount);\n    }\n\n    /**\n     * @dev Hook that is called before any transfer of tokens. This includes minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero, `amount` of `from`'s tokens will be transferred to `to`.\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\n     * - when `to` is zero, `amount` of `from`'s tokens will be burned.\n     * - `from` and `to` are never both zero.\n     */\n    function _update(address from, address to, uint256 amount) internal override(ERC20, ERC20Pausable) {\n        super._update(from, to, amount);\n    }\n\n    /// @dev Pauses all token transfers.\n    /// @notice This function can only be called by the contract owner.\n    function pause() public onlyOwner {\n        _pause();\n    }\n\n    /// @dev Unpauses all token transfers.\n    /// @notice This function can only be called by the contract owner.\n    function unpause() public onlyOwner {\n        _unpause();\n    }\n}\n"
      },
      "contracts/interfaces/IDiamond.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\n//*****************************************************************************\\\n//* Author: Nick Mudge <nick@perfectabstractions.com> (https://twitter.com/mudgen)\n//* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n//******************************************************************************/\n\ninterface IDiamond {\n    enum FacetCutAction {\n        Add,\n        Replace,\n        Remove\n    }\n    // Add=0, Replace=1, Remove=2\n\n    struct FacetCut {\n        address facetAddress;\n        FacetCutAction action;\n        bytes4[] functionSelectors;\n    }\n\n    event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);\n}\n"
      },
      "contracts/interfaces/IDiamondCut.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\n//******************************************************************************\\\n//* Author: Nick Mudge <nick@perfectabstractions.com> (https://twitter.com/mudgen)\n//* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n//******************************************************************************/\n\nimport { IDiamond } from \"./IDiamond.sol\";\n\ninterface IDiamondCut is IDiamond {\n    /// @notice Add/replace/remove any number of functions and optionally execute\n    ///         a function with delegatecall\n    /// @param _diamondCut Contains the facet addresses and function selectors\n    /// @param _init The address of the contract or facet to execute _calldata\n    /// @param _calldata A function call, including function selector and arguments\n    ///                  _calldata is executed with delegatecall on _init\n    function diamondCut(FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata) external;\n}\n"
      },
      "contracts/interfaces/IDiamondLoupe.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\n//******************************************************************************\\\n//* Author: Nick Mudge <nick@perfectabstractions.com> (https://twitter.com/mudgen)\n//* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n//******************************************************************************/\n\n// A loupe is a small magnifying glass used to look at diamonds.\n// These functions look at diamonds\ninterface IDiamondLoupe {\n    /// These functions are expected to be called frequently\n    /// by tools.\n\n    struct Facet {\n        address facetAddress;\n        bytes4[] functionSelectors;\n    }\n\n    /// @notice Gets all facet addresses and their four byte function selectors.\n    /// @return facets_ Facet\n    function facets() external view returns (Facet[] memory facets_);\n\n    /// @notice Gets all the function selectors supported by a specific facet.\n    /// @param _facet The facet address.\n    /// @return facetFunctionSelectors_\n    function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory facetFunctionSelectors_);\n\n    /// @notice Get all the facet addresses used by a diamond.\n    /// @return facetAddresses_\n    function facetAddresses() external view returns (address[] memory facetAddresses_);\n\n    /// @notice Gets the facet that supports the given selector.\n    /// @dev If facet is not found return address(0).\n    /// @param _functionSelector The function selector.\n    /// @return facetAddress_ The facet address.\n    function facetAddress(bytes4 _functionSelector) external view returns (address facetAddress_);\n}\n"
      },
      "contracts/interfaces/IERC173.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\n/// @title ERC-173 Contract Ownership Standard\n///  Note: the ERC-165 identifier for this interface is 0x7f5828d0\n/* is ERC165 */\ninterface IERC173 {\n    /// @dev This emits when ownership of a contract changes.\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /// @notice Get the address of the owner\n    /// @return owner_ The address of the owner.\n    function owner() external view returns (address owner_);\n\n    /// @notice Set the address of the new owner of the contract\n    /// @dev Set _newOwner to address(0) to renounce any ownership.\n    /// @param _newOwner The address of the new owner of the contract\n    function transferOwnership(address _newOwner) external;\n}\n"
      },
      "contracts/libraries/BokkyPooBahsDateTimeLibrary.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity >=0.6.0 <0.9.0;\n\n// ----------------------------------------------------------------------------\n// BokkyPooBah's DateTime Library v1.01\n//\n// A gas-efficient Solidity date and time library\n//\n// https://github.com/bokkypoobah/BokkyPooBahsDateTimeLibrary\n//\n// Tested date range 1970/01/01 to 2345/12/31\n//\n// Conventions:\n// Unit      | Range         | Notes\n// :-------- |:-------------:|:-----\n// timestamp | >= 0          | Unix timestamp, number of seconds since 1970/01/01 00:00:00 UTC\n// year      | 1970 ... 2345 |\n// month     | 1 ... 12      |\n// day       | 1 ... 31      |\n// hour      | 0 ... 23      |\n// minute    | 0 ... 59      |\n// second    | 0 ... 59      |\n// dayOfWeek | 1 ... 7       | 1 = Monday, ..., 7 = Sunday\n//\n//\n// Enjoy. (c) BokkyPooBah / Bok Consulting Pty Ltd 2018-2019. The MIT Licence.\n// ----------------------------------------------------------------------------\n\nlibrary BokkyPooBahsDateTimeLibrary {\n    uint256 internal constant SECONDS_PER_DAY = 24 * 60 * 60;\n    uint256 internal constant SECONDS_PER_HOUR = 60 * 60;\n    uint256 internal constant SECONDS_PER_MINUTE = 60;\n    int256 internal constant OFFSET19700101 = 2_440_588;\n\n    uint256 internal constant DOW_MON = 1;\n    uint256 internal constant DOW_TUE = 2;\n    uint256 internal constant DOW_WED = 3;\n    uint256 internal constant DOW_THU = 4;\n    uint256 internal constant DOW_FRI = 5;\n    uint256 internal constant DOW_SAT = 6;\n    uint256 internal constant DOW_SUN = 7;\n\n    // ------------------------------------------------------------------------\n    // Calculate the number of days from 1970/01/01 to year/month/day using\n    // the date conversion algorithm from\n    //   https://aa.usno.navy.mil/faq/JD_formula.html\n    // and subtracting the offset 2440588 so that 1970/01/01 is day 0\n    //\n    // days = day\n    //      - 32075\n    //      + 1461 * (year + 4800 + (month - 14) / 12) / 4\n    //      + 367 * (month - 2 - (month - 14) / 12 * 12) / 12\n    //      - 3 * ((year + 4900 + (month - 14) / 12) / 100) / 4\n    //      - offset\n    // ------------------------------------------------------------------------\n    function _daysFromDate(uint256 year, uint256 month, uint256 day) internal pure returns (uint256 _days) {\n        require(year >= 1970, \"Year cannot be earlier than 1970\");\n        int256 _year = int256(year);\n        int256 _month = int256(month);\n        int256 _day = int256(day);\n\n        // slither-disable-next-line all\n        int256 monthAdjustment = (_month - 14) / 12;\n        int256 adjustedYear = _year + 4800 + monthAdjustment;\n        // slither-disable-next-line all\n        int256 adjustedMonth = _month - 2 - (monthAdjustment * 12);\n\n        // Refactor to avoid divide-before-multiply\n        int256 temp1 = 1461 * adjustedYear;\n        int256 temp2 = 367 * adjustedMonth;\n        // slither-disable-next-line all\n        int256 temp3 = 3 * ((adjustedYear + 100) / 100);\n\n        int256 __days = _day - 32_075 + temp1 / 4 + temp2 / 12 - temp3 / 4 - OFFSET19700101;\n\n        _days = uint256(__days);\n    }\n\n    // ------------------------------------------------------------------------\n    // Calculate year/month/day from the number of days since 1970/01/01 using\n    // the date conversion algorithm from\n    //   http://aa.usno.navy.mil/faq/docs/JD_Formula.php\n    // and adding the offset 2440588 so that 1970/01/01 is day 0\n    // ------------------------------------------------------------------------\n    function _daysToDate(uint256 _days) internal pure returns (uint256 year, uint256 month, uint256 day) {\n        int256 __days = int256(_days);\n\n        int256 length = __days + 68_569 + OFFSET19700101;\n        // slither-disable-next-line all\n        int256 n = (4 * length) / 146_097;\n        // slither-disable-next-line all\n        length = length - (146_097 * n + 3) / 4;\n        // slither-disable-next-line all\n        int256 _year = (4000 * (length + 1)) / 1_461_001;\n        // slither-disable-next-line all\n        length = length - (1461 * _year) / 4 + 31;\n\n        // Refactored the following two lines to avoid divide-before-multiply\n        int256 tempMonth = (80 * length);\n        // slither-disable-next-line all\n        int256 _month = tempMonth / 2447;\n        // slither-disable-next-line all\n        int256 _day = length - ((2447 * _month) / 80);\n\n        // slither-disable-next-line all\n        length = _month / 11;\n        _month = _month + 2 - 12 * length;\n        // slither-disable-next-line all\n        _year = 100 * (n - 49) + _year + length;\n\n        year = uint256(_year);\n        month = uint256(_month);\n        day = uint256(_day);\n    }\n\n    function timestampFromDate(uint256 year, uint256 month, uint256 day) internal pure returns (uint256 timestamp) {\n        timestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY;\n    }\n\n    function timestampFromDateTime(\n        uint256 year,\n        uint256 month,\n        uint256 day,\n        uint256 hour,\n        uint256 minute,\n        uint256 second\n    )\n        internal\n        pure\n        returns (uint256 timestamp)\n    {\n        timestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY + hour * SECONDS_PER_HOUR\n            + minute * SECONDS_PER_MINUTE + second;\n    }\n\n    function timestampToDate(uint256 timestamp) internal pure returns (uint256 year, uint256 month, uint256 day) {\n        (year, month, day) = _daysToDate(timestamp / SECONDS_PER_DAY);\n    }\n\n    function timestampToDateTime(uint256 timestamp)\n        internal\n        pure\n        returns (uint256 year, uint256 month, uint256 day, uint256 hour, uint256 minute, uint256 second)\n    {\n        (year, month, day) = _daysToDate(timestamp / SECONDS_PER_DAY);\n        uint256 secs = timestamp % SECONDS_PER_DAY;\n        hour = secs / SECONDS_PER_HOUR;\n        secs = secs % SECONDS_PER_HOUR;\n        minute = secs / SECONDS_PER_MINUTE;\n        second = secs % SECONDS_PER_MINUTE;\n    }\n\n    function isValidDate(uint256 year, uint256 month, uint256 day) internal pure returns (bool valid) {\n        if (year >= 1970 && month > 0 && month <= 12) {\n            uint256 daysInMonth = _getDaysInMonth(year, month);\n            if (day > 0 && day <= daysInMonth) {\n                valid = true;\n            }\n        }\n    }\n\n    function isValidDateTime(\n        uint256 year,\n        uint256 month,\n        uint256 day,\n        uint256 hour,\n        uint256 minute,\n        uint256 second\n    )\n        internal\n        pure\n        returns (bool valid)\n    {\n        if (isValidDate(year, month, day)) {\n            if (hour < 24 && minute < 60 && second < 60) {\n                valid = true;\n            }\n        }\n    }\n\n    function isLeapYear(uint256 timestamp) internal pure returns (bool leapYear) {\n        (uint256 year,,) = _daysToDate(timestamp / SECONDS_PER_DAY);\n        leapYear = _isLeapYear(year);\n    }\n\n    function _isLeapYear(uint256 year) internal pure returns (bool leapYear) {\n        leapYear = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);\n    }\n\n    function isWeekDay(uint256 timestamp) internal pure returns (bool weekDay) {\n        weekDay = getDayOfWeek(timestamp) <= DOW_FRI;\n    }\n\n    function isWeekEnd(uint256 timestamp) internal pure returns (bool weekEnd) {\n        weekEnd = getDayOfWeek(timestamp) >= DOW_SAT;\n    }\n\n    function getDaysInMonth(uint256 timestamp) internal pure returns (uint256 daysInMonth) {\n        (uint256 year, uint256 month,) = _daysToDate(timestamp / SECONDS_PER_DAY);\n        daysInMonth = _getDaysInMonth(year, month);\n    }\n\n    function _getDaysInMonth(uint256 year, uint256 month) internal pure returns (uint256 daysInMonth) {\n        if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {\n            daysInMonth = 31;\n        } else if (month != 2) {\n            daysInMonth = 30;\n        } else {\n            daysInMonth = _isLeapYear(year) ? 29 : 28;\n        }\n    }\n\n    // 1 = Monday, 7 = Sunday\n    function getDayOfWeek(uint256 timestamp) internal pure returns (uint256 dayOfWeek) {\n        uint256 _days = timestamp / SECONDS_PER_DAY;\n        dayOfWeek = ((_days + 3) % 7) + 1;\n    }\n\n    function getYear(uint256 timestamp) internal pure returns (uint256 year) {\n        (year,,) = _daysToDate(timestamp / SECONDS_PER_DAY);\n    }\n\n    function getMonth(uint256 timestamp) internal pure returns (uint256 month) {\n        (, month,) = _daysToDate(timestamp / SECONDS_PER_DAY);\n    }\n\n    function getDay(uint256 timestamp) internal pure returns (uint256 day) {\n        (,, day) = _daysToDate(timestamp / SECONDS_PER_DAY);\n    }\n\n    function getHour(uint256 timestamp) internal pure returns (uint256 hour) {\n        uint256 secs = timestamp % SECONDS_PER_DAY;\n        hour = secs / SECONDS_PER_HOUR;\n    }\n\n    function getMinute(uint256 timestamp) internal pure returns (uint256 minute) {\n        uint256 secs = timestamp % SECONDS_PER_HOUR;\n        minute = secs / SECONDS_PER_MINUTE;\n    }\n\n    function getSecond(uint256 timestamp) internal pure returns (uint256 second) {\n        second = timestamp % SECONDS_PER_MINUTE;\n    }\n\n    function addYears(uint256 timestamp, uint256 _years) internal pure returns (uint256 newTimestamp) {\n        (uint256 year, uint256 month, uint256 day) = _daysToDate(timestamp / SECONDS_PER_DAY);\n        year += _years;\n        uint256 daysInMonth = _getDaysInMonth(year, month);\n        if (day > daysInMonth) {\n            day = daysInMonth;\n        }\n        newTimestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY + (timestamp % SECONDS_PER_DAY);\n        require(newTimestamp >= timestamp, \"Timestamp should be earlier or equal to the current timestamp\");\n    }\n\n    function addMonths(uint256 timestamp, uint256 _months) internal pure returns (uint256 newTimestamp) {\n        (uint256 year, uint256 month, uint256 day) = _daysToDate(timestamp / SECONDS_PER_DAY);\n        month += _months;\n        year += (month - 1) / 12;\n        month = ((month - 1) % 12) + 1;\n        uint256 daysInMonth = _getDaysInMonth(year, month);\n        if (day > daysInMonth) {\n            day = daysInMonth;\n        }\n        newTimestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY + (timestamp % SECONDS_PER_DAY);\n        require(newTimestamp >= timestamp, \"Timestamp should be earlier or equal to the current timestamp\");\n    }\n\n    function addDays(uint256 timestamp, uint256 _days) internal pure returns (uint256 newTimestamp) {\n        newTimestamp = timestamp + _days * SECONDS_PER_DAY;\n        require(newTimestamp >= timestamp, \"Timestamp should be earlier or equal to the current timestamp\");\n    }\n\n    function addHours(uint256 timestamp, uint256 _hours) internal pure returns (uint256 newTimestamp) {\n        newTimestamp = timestamp + _hours * SECONDS_PER_HOUR;\n        require(newTimestamp >= timestamp, \"Timestamp should be earlier or equal to the current timestamp\");\n    }\n\n    function addMinutes(uint256 timestamp, uint256 _minutes) internal pure returns (uint256 newTimestamp) {\n        newTimestamp = timestamp + _minutes * SECONDS_PER_MINUTE;\n        require(newTimestamp >= timestamp, \"Timestamp should be earlier or equal to the current timestamp\");\n    }\n\n    function addSeconds(uint256 timestamp, uint256 _seconds) internal pure returns (uint256 newTimestamp) {\n        newTimestamp = timestamp + _seconds;\n        require(newTimestamp >= timestamp, \"Timestamp should be earlier or equal to the current timestamp\");\n    }\n\n    function subYears(uint256 timestamp, uint256 _years) internal pure returns (uint256 newTimestamp) {\n        (uint256 year, uint256 month, uint256 day) = _daysToDate(timestamp / SECONDS_PER_DAY);\n        year -= _years;\n        uint256 daysInMonth = _getDaysInMonth(year, month);\n        if (day > daysInMonth) {\n            day = daysInMonth;\n        }\n        newTimestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY + (timestamp % SECONDS_PER_DAY);\n        require(newTimestamp <= timestamp, \"New timestamp should be later or equal to the current timestamp\");\n    }\n\n    function subMonths(uint256 timestamp, uint256 _months) internal pure returns (uint256 newTimestamp) {\n        (uint256 year, uint256 month, uint256 day) = _daysToDate(timestamp / SECONDS_PER_DAY);\n        uint256 yearMonth = year * 12 + (month - 1) - _months;\n        // slither-disable-next-line all\n        year = yearMonth / 12;\n        // slither-disable-next-line all\n        month = (yearMonth % 12) + 1;\n        uint256 daysInMonth = _getDaysInMonth(year, month);\n        if (day > daysInMonth) {\n            day = daysInMonth;\n        }\n        newTimestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY + (timestamp % SECONDS_PER_DAY);\n        require(newTimestamp <= timestamp, \"New timestamp should be later or equal to the current timestamp\");\n    }\n\n    function subDays(uint256 timestamp, uint256 _days) internal pure returns (uint256 newTimestamp) {\n        newTimestamp = timestamp - _days * SECONDS_PER_DAY;\n        require(newTimestamp <= timestamp, \"New timestamp should be later or equal to the current timestamp\");\n    }\n\n    function subHours(uint256 timestamp, uint256 _hours) internal pure returns (uint256 newTimestamp) {\n        newTimestamp = timestamp - _hours * SECONDS_PER_HOUR;\n        require(newTimestamp <= timestamp, \"New timestamp should be later or equal to the current timestamp\");\n    }\n\n    function subMinutes(uint256 timestamp, uint256 _minutes) internal pure returns (uint256 newTimestamp) {\n        newTimestamp = timestamp - _minutes * SECONDS_PER_MINUTE;\n        require(newTimestamp <= timestamp, \"New timestamp should be later or equal to the current timestamp\");\n    }\n\n    function subSeconds(uint256 timestamp, uint256 _seconds) internal pure returns (uint256 newTimestamp) {\n        newTimestamp = timestamp - _seconds;\n        require(newTimestamp <= timestamp, \"New timestamp should be later or equal to the current timestamp\");\n    }\n\n    function diffYears(uint256 fromTimestamp, uint256 toTimestamp) internal pure returns (uint256 _years) {\n        require(fromTimestamp <= toTimestamp, \"New timestamp should be later or equal to the current timestamp\");\n        (uint256 fromYear,,) = _daysToDate(fromTimestamp / SECONDS_PER_DAY);\n        (uint256 toYear,,) = _daysToDate(toTimestamp / SECONDS_PER_DAY);\n        _years = toYear - fromYear;\n    }\n\n    function diffMonths(uint256 fromTimestamp, uint256 toTimestamp) internal pure returns (uint256 _months) {\n        require(fromTimestamp <= toTimestamp, \"New timestamp should be later or equal to the current timestamp\");\n        (uint256 fromYear, uint256 fromMonth,) = _daysToDate(fromTimestamp / SECONDS_PER_DAY);\n        (uint256 toYear, uint256 toMonth,) = _daysToDate(toTimestamp / SECONDS_PER_DAY);\n        _months = toYear * 12 + toMonth - fromYear * 12 - fromMonth;\n    }\n\n    function diffDays(uint256 fromTimestamp, uint256 toTimestamp) internal pure returns (uint256 _days) {\n        require(fromTimestamp <= toTimestamp, \"New timestamp should be later or equal to the current timestamp\");\n        _days = (toTimestamp - fromTimestamp) / SECONDS_PER_DAY;\n    }\n\n    function diffHours(uint256 fromTimestamp, uint256 toTimestamp) internal pure returns (uint256 _hours) {\n        require(fromTimestamp <= toTimestamp, \"New timestamp should be later or equal to the current timestamp\");\n        _hours = (toTimestamp - fromTimestamp) / SECONDS_PER_HOUR;\n    }\n\n    function diffMinutes(uint256 fromTimestamp, uint256 toTimestamp) internal pure returns (uint256 _minutes) {\n        require(fromTimestamp <= toTimestamp, \"New timestamp should be later or equal to the current timestamp\");\n        _minutes = (toTimestamp - fromTimestamp) / SECONDS_PER_MINUTE;\n    }\n\n    function diffSeconds(uint256 fromTimestamp, uint256 toTimestamp) internal pure returns (uint256 _seconds) {\n        require(fromTimestamp <= toTimestamp, \"New timestamp should be later or equal to the current timestamp\");\n        _seconds = toTimestamp - fromTimestamp;\n    }\n}\n"
      },
      "contracts/libraries/LibDiamond.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\n//******************************************************************************\\\n//* Author: Nick Mudge <nick@perfectabstractions.com> (https://twitter.com/mudgen)\n//* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n//******************************************************************************/\nimport { IDiamond } from \"../interfaces/IDiamond.sol\";\nimport { IDiamondCut } from \"../interfaces/IDiamondCut.sol\";\n\n// Remember to add the loupe functions from DiamondLoupeFacet to the diamond.\n// The loupe functions are required by the EIP2535 Diamonds standard\n\nerror NoSelectorsGivenToAdd();\nerror NotContractOwner(address _user, address _contractOwner);\nerror NoSelectorsProvidedForFacetForCut(address _facetAddress);\nerror CannotAddSelectorsToZeroAddress(bytes4[] _selectors);\nerror NoBytecodeAtAddress(address _contractAddress, string _message);\nerror IncorrectFacetCutAction(uint8 _action);\nerror CannotAddFunctionToDiamondThatAlreadyExists(bytes4 _selector);\nerror CannotReplaceFunctionsFromFacetWithZeroAddress(bytes4[] _selectors);\nerror CannotReplaceImmutableFunction(bytes4 _selector);\nerror CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet(bytes4 _selector);\nerror CannotReplaceFunctionThatDoesNotExists(bytes4 _selector);\nerror RemoveFacetAddressMustBeZeroAddress(address _facetAddress);\nerror CannotRemoveFunctionThatDoesNotExist(bytes4 _selector);\nerror CannotRemoveImmutableFunction(bytes4 _selector);\nerror InitializationFunctionReverted(address _initializationContractAddress, bytes _calldata);\n\nlibrary LibDiamond {\n    bytes32 constant DIAMOND_STORAGE_POSITION = keccak256(\"diamond.standard.diamond.storage\");\n\n    struct FacetAddressAndSelectorPosition {\n        address facetAddress;\n        uint16 selectorPosition;\n    }\n\n    struct DiamondStorage {\n        // function selector => facet address and selector position in selectors array\n        mapping(bytes4 => FacetAddressAndSelectorPosition) facetAddressAndSelectorPosition;\n        bytes4[] selectors;\n        mapping(bytes4 => bool) supportedInterfaces;\n        // owner of the contract\n        address contractOwner;\n    }\n\n    function diamondStorage() internal pure returns (DiamondStorage storage ds) {\n        bytes32 position = DIAMOND_STORAGE_POSITION;\n        assembly {\n            ds.slot := position\n        }\n    }\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    function setContractOwner(address _newOwner) internal {\n        DiamondStorage storage ds = diamondStorage();\n        address previousOwner = ds.contractOwner;\n        ds.contractOwner = _newOwner;\n        emit OwnershipTransferred(previousOwner, _newOwner);\n    }\n\n    function contractOwner() internal view returns (address contractOwner_) {\n        contractOwner_ = diamondStorage().contractOwner;\n    }\n\n    function enforceIsContractOwner() internal view {\n        if (msg.sender != diamondStorage().contractOwner) {\n            revert NotContractOwner(msg.sender, diamondStorage().contractOwner);\n        }\n    }\n\n    event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata);\n\n    // Internal function version of diamondCut\n    function diamondCut(IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata) internal {\n        for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) {\n            bytes4[] memory functionSelectors = _diamondCut[facetIndex].functionSelectors;\n            address facetAddress = _diamondCut[facetIndex].facetAddress;\n            if (functionSelectors.length == 0) {\n                revert NoSelectorsProvidedForFacetForCut(facetAddress);\n            }\n            IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;\n            if (action == IDiamond.FacetCutAction.Add) {\n                addFunctions(facetAddress, functionSelectors);\n            } else if (action == IDiamond.FacetCutAction.Replace) {\n                replaceFunctions(facetAddress, functionSelectors);\n            } else if (action == IDiamond.FacetCutAction.Remove) {\n                removeFunctions(facetAddress, functionSelectors);\n            } else {\n                revert IncorrectFacetCutAction(uint8(action));\n            }\n        }\n        emit DiamondCut(_diamondCut, _init, _calldata);\n        initializeDiamondCut(_init, _calldata);\n    }\n\n    function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\n        if (_facetAddress == address(0)) {\n            revert CannotAddSelectorsToZeroAddress(_functionSelectors);\n        }\n        DiamondStorage storage ds = diamondStorage();\n        uint16 selectorCount = uint16(ds.selectors.length);\n        enforceHasContractCode(_facetAddress, \"LibDiamondCut: Add facet has no code\");\n        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\n            bytes4 selector = _functionSelectors[selectorIndex];\n            address oldFacetAddress = ds.facetAddressAndSelectorPosition[selector].facetAddress;\n            if (oldFacetAddress != address(0)) {\n                revert CannotAddFunctionToDiamondThatAlreadyExists(selector);\n            }\n            ds.facetAddressAndSelectorPosition[selector] = FacetAddressAndSelectorPosition(_facetAddress, selectorCount);\n            ds.selectors.push(selector);\n            selectorCount++;\n        }\n    }\n\n    function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\n        DiamondStorage storage ds = diamondStorage();\n        if (_facetAddress == address(0)) {\n            revert CannotReplaceFunctionsFromFacetWithZeroAddress(_functionSelectors);\n        }\n        enforceHasContractCode(_facetAddress, \"LibDiamondCut: Replace facet has no code\");\n        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\n            bytes4 selector = _functionSelectors[selectorIndex];\n            address oldFacetAddress = ds.facetAddressAndSelectorPosition[selector].facetAddress;\n            // can't replace immutable functions -- functions defined directly in the diamond in this case\n            if (oldFacetAddress == address(this)) {\n                revert CannotReplaceImmutableFunction(selector);\n            }\n            if (oldFacetAddress == _facetAddress) {\n                revert CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet(selector);\n            }\n            if (oldFacetAddress == address(0)) {\n                revert CannotReplaceFunctionThatDoesNotExists(selector);\n            }\n            // replace old facet address\n            ds.facetAddressAndSelectorPosition[selector].facetAddress = _facetAddress;\n        }\n    }\n\n    function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\n        DiamondStorage storage ds = diamondStorage();\n        uint256 selectorCount = ds.selectors.length;\n        if (_facetAddress != address(0)) {\n            revert RemoveFacetAddressMustBeZeroAddress(_facetAddress);\n        }\n        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\n            bytes4 selector = _functionSelectors[selectorIndex];\n            FacetAddressAndSelectorPosition memory oldFacetAddressAndSelectorPosition =\n                ds.facetAddressAndSelectorPosition[selector];\n            if (oldFacetAddressAndSelectorPosition.facetAddress == address(0)) {\n                revert CannotRemoveFunctionThatDoesNotExist(selector);\n            }\n\n            // can't remove immutable functions -- functions defined directly in the diamond\n            if (oldFacetAddressAndSelectorPosition.facetAddress == address(this)) {\n                revert CannotRemoveImmutableFunction(selector);\n            }\n            // replace selector with last selector\n            selectorCount--;\n            if (oldFacetAddressAndSelectorPosition.selectorPosition != selectorCount) {\n                bytes4 lastSelector = ds.selectors[selectorCount];\n                ds.selectors[oldFacetAddressAndSelectorPosition.selectorPosition] = lastSelector;\n                ds.facetAddressAndSelectorPosition[lastSelector].selectorPosition =\n                    oldFacetAddressAndSelectorPosition.selectorPosition;\n            }\n            // delete last selector\n            ds.selectors.pop();\n            delete ds.facetAddressAndSelectorPosition[selector];\n        }\n    }\n\n    function initializeDiamondCut(address _init, bytes memory _calldata) internal {\n        if (_init == address(0)) {\n            return;\n        }\n        enforceHasContractCode(_init, \"LibDiamondCut: _init address has no code\");\n        (bool success, bytes memory error) = _init.delegatecall(_calldata);\n        if (!success) {\n            if (error.length > 0) {\n                // bubble up error\n                /// @solidity memory-safe-assembly\n                assembly {\n                    let returndata_size := mload(error)\n                    revert(add(32, error), returndata_size)\n                }\n            } else {\n                revert InitializationFunctionReverted(_init, _calldata);\n            }\n        }\n    }\n\n    function enforceHasContractCode(address _contract, string memory _errorMessage) internal view {\n        uint256 contractSize;\n        assembly {\n            contractSize := extcodesize(_contract)\n        }\n        if (contractSize == 0) {\n            revert NoBytecodeAtAddress(_contract, _errorMessage);\n        }\n    }\n}\n"
      },
      "contracts/libraries/StructBondInit.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\nlibrary BondInitParams {\n    struct BondInit {\n        uint256 __bondId;\n        uint256 __campaignMinAmount;\n        uint256 __campaignMaxAmount;\n        uint256 __campaignStartDate;\n        uint256 __expectedIssueDate;\n        uint256 __coupure;\n        uint256 __interestNum;\n        uint256 __interestDen;\n        uint256 __withholdingTaxNum;\n        uint256 __withholdingTaxDen;\n        uint256 __balloonRateNum;\n        uint256 __balloonRateDen;\n        uint256 __duration;\n        uint256 __capitalAmortizationDuration;\n        uint256 __gracePeriodDuration;\n        uint256 __maxAmountPerInvestor;\n        uint256 __periodicity;\n        uint256 __formOfFinancing;\n        uint256 __methodOfRepayment;\n        address __issuer;\n    }\n}\n"
      },
      "contracts/libraries/structClaim.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\nlibrary ClaimParams {\n    struct Claim {\n        string claimId;\n        uint256 bondId;\n        uint256 amount;\n        bytes32 hashLockWithdrawPayment;\n        uint256 withdrawPaymentTimestampEnd;\n        address beneficiary;\n    }\n}\n"
      },
      "contracts/upgradeInitializers/DiamondInit.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.24;\n\n/**\n * \\\n * Author: Nick Mudge <nick@perfectabstractions.com> (https://twitter.com/mudgen)\n * EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n *\n * Implementation of a diamond.\n * /*****************************************************************************\n */\nimport { LibDiamond } from \"../libraries/LibDiamond.sol\";\nimport { IDiamondLoupe } from \"../interfaces/IDiamondLoupe.sol\";\nimport { IDiamondCut } from \"../interfaces/IDiamondCut.sol\";\nimport { IERC173 } from \"../interfaces/IERC173.sol\";\n//import { IERC165 } from \"../interfaces/IERC165.sol\";\nimport { IERC165 } from \"@openzeppelin/contracts/interfaces/IERC165.sol\";\n\n// It is expected that this contract is customized if you want to deploy your diamond\n// with data from a deployment script. Use the init function to initialize state variables\n// of your diamond. Add parameters to the init funciton if you need to.\n\ncontract DiamondInit {\n    // You can add parameters to this function in order to pass in\n    // data to set your own state variables\n    function init() external {\n        // adding ERC165 data\n        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();\n        ds.supportedInterfaces[type(IERC165).interfaceId] = true;\n        ds.supportedInterfaces[type(IDiamondCut).interfaceId] = true;\n        ds.supportedInterfaces[type(IDiamondLoupe).interfaceId] = true;\n        ds.supportedInterfaces[type(IERC173).interfaceId] = true;\n\n        // add your own state variables\n        // EIP-2535 specifies that the `diamondCut` function takes two optional\n        // arguments: address _init and bytes calldata _calldata\n        // These arguments are used to execute an arbitrary function using delegatecall\n        // in order to set state variables in the diamond during deployment or an upgrade\n        // More info here: https://eips.ethereum.org/EIPS/eip-2535#diamond-interface\n    }\n}\n"
      }
    },
    "settings": {
      "viaIR": true,
      "optimizer": {
        "enabled": true,
        "runs": 10000
      },
      "evmVersion": "paris",
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "errors": [
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/facets/OwnershipFacet.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/facets/OwnershipFacet.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2018",
        "formattedMessage": "Warning: Function state mutability can be restricted to pure\n   --> contracts/facets/BondFacet.sol:582:5:\n    |\n582 |     function onERC1155Received(\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 27146,
          "file": "contracts/facets/BondFacet.sol",
          "start": 26735
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2018",
        "formattedMessage": "Warning: Function state mutability can be restricted to pure\n   --> contracts/facets/BondFacet.sol:600:5:\n    |\n600 |     function onERC1155BatchReceived(\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 27673,
          "file": "contracts/facets/BondFacet.sol",
          "start": 27230
        },
        "type": "Warning"
      }
    ],
    "sources": {
      "@openzeppelin/contracts/access/Ownable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
          "exportedSymbols": {
            "Context": [
              1442
            ],
            "Ownable": [
              147
            ]
          },
          "id": 148,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "102:24:0"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
              "file": "../utils/Context.sol",
              "id": 3,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 148,
              "sourceUnit": 1443,
              "src": "128:45:0",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2,
                    "name": "Context",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1442,
                    "src": "136:7:0",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5,
                    "name": "Context",
                    "nameLocations": [
                      "692:7:0"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1442,
                    "src": "692:7:0"
                  },
                  "id": 6,
                  "nodeType": "InheritanceSpecifier",
                  "src": "692:7:0"
                }
              ],
              "canonicalName": "Ownable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 4,
                "nodeType": "StructuredDocumentation",
                "src": "175:487:0",
                "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."
              },
              "fullyImplemented": true,
              "id": 147,
              "linearizedBaseContracts": [
                147,
                1442
              ],
              "name": "Ownable",
              "nameLocation": "681:7:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 8,
                  "mutability": "mutable",
                  "name": "_owner",
                  "nameLocation": "722:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 147,
                  "src": "706:22:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "706:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "documentation": {
                    "id": 9,
                    "nodeType": "StructuredDocumentation",
                    "src": "735:85:0",
                    "text": " @dev The caller account is not authorized to perform an operation."
                  },
                  "errorSelector": "118cdaa7",
                  "id": 13,
                  "name": "OwnableUnauthorizedAccount",
                  "nameLocation": "831:26:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 12,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "866:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 13,
                        "src": "858:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "858:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "857:17:0"
                  },
                  "src": "825:50:0"
                },
                {
                  "documentation": {
                    "id": 14,
                    "nodeType": "StructuredDocumentation",
                    "src": "881:82:0",
                    "text": " @dev The owner is not a valid owner account. (eg. `address(0)`)"
                  },
                  "errorSelector": "1e4fbdf7",
                  "id": 18,
                  "name": "OwnableInvalidOwner",
                  "nameLocation": "974:19:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 17,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1002:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 18,
                        "src": "994:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "994:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "993:15:0"
                  },
                  "src": "968:41:0"
                },
                {
                  "anonymous": false,
                  "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
                  "id": 24,
                  "name": "OwnershipTransferred",
                  "nameLocation": "1021:20:0",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 23,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nameLocation": "1058:13:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 24,
                        "src": "1042:29:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1042:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "1089:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 24,
                        "src": "1073:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1073:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1041:57:0"
                  },
                  "src": "1015:84:0"
                },
                {
                  "body": {
                    "id": 49,
                    "nodeType": "Block",
                    "src": "1259:153:0",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 35,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 30,
                            "name": "initialOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27,
                            "src": "1273:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 33,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1297:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 32,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1289:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 31,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1289:7:0",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 34,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1289:10:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1273:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 44,
                        "nodeType": "IfStatement",
                        "src": "1269:95:0",
                        "trueBody": {
                          "id": 43,
                          "nodeType": "Block",
                          "src": "1301:63:0",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 39,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1350:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 38,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1342:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 37,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1342:7:0",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 40,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1342:10:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 36,
                                  "name": "OwnableInvalidOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18,
                                  "src": "1322:19:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                    "typeString": "function (address) pure returns (error)"
                                  }
                                },
                                "id": 41,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1322:31:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 42,
                              "nodeType": "RevertStatement",
                              "src": "1315:38:0"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 46,
                              "name": "initialOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27,
                              "src": "1392:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 45,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 146,
                            "src": "1373:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 47,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1373:32:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 48,
                        "nodeType": "ExpressionStatement",
                        "src": "1373:32:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25,
                    "nodeType": "StructuredDocumentation",
                    "src": "1105:115:0",
                    "text": " @dev Initializes the contract setting the address provided by the deployer as the initial owner."
                  },
                  "id": 50,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27,
                        "mutability": "mutable",
                        "name": "initialOwner",
                        "nameLocation": "1245:12:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 50,
                        "src": "1237:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1237:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1236:22:0"
                  },
                  "returnParameters": {
                    "id": 29,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1259:0:0"
                  },
                  "scope": 147,
                  "src": "1225:187:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 57,
                    "nodeType": "Block",
                    "src": "1521:41:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 53,
                            "name": "_checkOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 84,
                            "src": "1531:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 54,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1531:13:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 55,
                        "nodeType": "ExpressionStatement",
                        "src": "1531:13:0"
                      },
                      {
                        "id": 56,
                        "nodeType": "PlaceholderStatement",
                        "src": "1554:1:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 51,
                    "nodeType": "StructuredDocumentation",
                    "src": "1418:77:0",
                    "text": " @dev Throws if called by any account other than the owner."
                  },
                  "id": 58,
                  "name": "onlyOwner",
                  "nameLocation": "1509:9:0",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 52,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1518:2:0"
                  },
                  "src": "1500:62:0",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 66,
                    "nodeType": "Block",
                    "src": "1693:30:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 64,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8,
                          "src": "1710:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 63,
                        "id": 65,
                        "nodeType": "Return",
                        "src": "1703:13:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 59,
                    "nodeType": "StructuredDocumentation",
                    "src": "1568:65:0",
                    "text": " @dev Returns the address of the current owner."
                  },
                  "functionSelector": "8da5cb5b",
                  "id": 67,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nameLocation": "1647:5:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 60,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1652:2:0"
                  },
                  "returnParameters": {
                    "id": 63,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 62,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 67,
                        "src": "1684:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 61,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1684:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1683:9:0"
                  },
                  "scope": 147,
                  "src": "1638:85:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 83,
                    "nodeType": "Block",
                    "src": "1841:117:0",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 75,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 71,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 67,
                              "src": "1855:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 72,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1855:7:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 73,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1424,
                              "src": "1866:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 74,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1866:12:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1855:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 82,
                        "nodeType": "IfStatement",
                        "src": "1851:101:0",
                        "trueBody": {
                          "id": 81,
                          "nodeType": "Block",
                          "src": "1880:72:0",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 77,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1424,
                                      "src": "1928:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                        "typeString": "function () view returns (address)"
                                      }
                                    },
                                    "id": 78,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1928:12:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 76,
                                  "name": "OwnableUnauthorizedAccount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13,
                                  "src": "1901:26:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                    "typeString": "function (address) pure returns (error)"
                                  }
                                },
                                "id": 79,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1901:40:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 80,
                              "nodeType": "RevertStatement",
                              "src": "1894:47:0"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 68,
                    "nodeType": "StructuredDocumentation",
                    "src": "1729:62:0",
                    "text": " @dev Throws if the sender is not the owner."
                  },
                  "id": 84,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkOwner",
                  "nameLocation": "1805:11:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 69,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1816:2:0"
                  },
                  "returnParameters": {
                    "id": 70,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1841:0:0"
                  },
                  "scope": 147,
                  "src": "1796:162:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 97,
                    "nodeType": "Block",
                    "src": "2347:47:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 93,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2384:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 92,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2376:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 91,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2376:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 94,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2376:10:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 90,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 146,
                            "src": "2357:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 95,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2357:30:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 96,
                        "nodeType": "ExpressionStatement",
                        "src": "2357:30:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 85,
                    "nodeType": "StructuredDocumentation",
                    "src": "1964:324:0",
                    "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."
                  },
                  "functionSelector": "715018a6",
                  "id": 98,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 88,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 87,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "2337:9:0"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 58,
                        "src": "2337:9:0"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2337:9:0"
                    }
                  ],
                  "name": "renounceOwnership",
                  "nameLocation": "2302:17:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 86,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2319:2:0"
                  },
                  "returnParameters": {
                    "id": 89,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2347:0:0"
                  },
                  "scope": 147,
                  "src": "2293:101:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 125,
                    "nodeType": "Block",
                    "src": "2613:145:0",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 106,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 101,
                            "src": "2627:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2647:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 108,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2639:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 107,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2639:7:0",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 110,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2639:10:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2627:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 120,
                        "nodeType": "IfStatement",
                        "src": "2623:91:0",
                        "trueBody": {
                          "id": 119,
                          "nodeType": "Block",
                          "src": "2651:63:0",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 115,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2700:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 114,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2692:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 113,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2692:7:0",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 116,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2692:10:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 112,
                                  "name": "OwnableInvalidOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18,
                                  "src": "2672:19:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                    "typeString": "function (address) pure returns (error)"
                                  }
                                },
                                "id": 117,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2672:31:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 118,
                              "nodeType": "RevertStatement",
                              "src": "2665:38:0"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 122,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 101,
                              "src": "2742:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 121,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 146,
                            "src": "2723:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2723:28:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 124,
                        "nodeType": "ExpressionStatement",
                        "src": "2723:28:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 99,
                    "nodeType": "StructuredDocumentation",
                    "src": "2400:138:0",
                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
                  },
                  "functionSelector": "f2fde38b",
                  "id": 126,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 104,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 103,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "2603:9:0"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 58,
                        "src": "2603:9:0"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2603:9:0"
                    }
                  ],
                  "name": "transferOwnership",
                  "nameLocation": "2552:17:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 102,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 101,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "2578:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 126,
                        "src": "2570:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 100,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2570:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2569:18:0"
                  },
                  "returnParameters": {
                    "id": 105,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2613:0:0"
                  },
                  "scope": 147,
                  "src": "2543:215:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 145,
                    "nodeType": "Block",
                    "src": "2975:124:0",
                    "statements": [
                      {
                        "assignments": [
                          133
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 133,
                            "mutability": "mutable",
                            "name": "oldOwner",
                            "nameLocation": "2993:8:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 145,
                            "src": "2985:16:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 132,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2985:7:0",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 135,
                        "initialValue": {
                          "id": 134,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8,
                          "src": "3004:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2985:25:0"
                      },
                      {
                        "expression": {
                          "id": 138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 136,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8,
                            "src": "3020:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 137,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 129,
                            "src": "3029:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3020:17:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 139,
                        "nodeType": "ExpressionStatement",
                        "src": "3020:17:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 141,
                              "name": "oldOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 133,
                              "src": "3073:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 142,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 129,
                              "src": "3083:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 140,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24,
                            "src": "3052:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3052:40:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 144,
                        "nodeType": "EmitStatement",
                        "src": "3047:45:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 127,
                    "nodeType": "StructuredDocumentation",
                    "src": "2764:143:0",
                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."
                  },
                  "id": 146,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferOwnership",
                  "nameLocation": "2921:18:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 129,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "2948:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 146,
                        "src": "2940:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 128,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2940:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2939:18:0"
                  },
                  "returnParameters": {
                    "id": 131,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2975:0:0"
                  },
                  "scope": 147,
                  "src": "2912:187:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 148,
              "src": "663:2438:0",
              "usedErrors": [
                13,
                18
              ],
              "usedEvents": [
                24
              ]
            }
          ],
          "src": "102:3000:0"
        },
        "id": 0
      },
      "@openzeppelin/contracts/interfaces/IERC165.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/interfaces/IERC165.sol",
          "exportedSymbols": {
            "IERC165": [
              3062
            ]
          },
          "id": 152,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 149,
              "literals": [
                "solidity",
                ">=",
                "0.4",
                ".16"
              ],
              "nodeType": "PragmaDirective",
              "src": "106:25:1"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "../utils/introspection/IERC165.sol",
              "id": 151,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 152,
              "sourceUnit": 3063,
              "src": "133:59:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 150,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3062,
                    "src": "141:7:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            }
          ],
          "src": "106:87:1"
        },
        "id": 1
      },
      "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol",
          "exportedSymbols": {
            "IERC1155Errors": [
              288
            ],
            "IERC20Errors": [
              193
            ],
            "IERC721Errors": [
              241
            ]
          },
          "id": 289,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 153,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "112:24:2"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC20Errors",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 154,
                "nodeType": "StructuredDocumentation",
                "src": "138:141:2",
                "text": " @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens."
              },
              "fullyImplemented": true,
              "id": 193,
              "linearizedBaseContracts": [
                193
              ],
              "name": "IERC20Errors",
              "nameLocation": "290:12:2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 155,
                    "nodeType": "StructuredDocumentation",
                    "src": "309:309:2",
                    "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."
                  },
                  "errorSelector": "e450d38c",
                  "id": 163,
                  "name": "ERC20InsufficientBalance",
                  "nameLocation": "629:24:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 162,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 157,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "662:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 163,
                        "src": "654:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 156,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "654:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 159,
                        "mutability": "mutable",
                        "name": "balance",
                        "nameLocation": "678:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 163,
                        "src": "670:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 158,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "670:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 161,
                        "mutability": "mutable",
                        "name": "needed",
                        "nameLocation": "695:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 163,
                        "src": "687:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 160,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "687:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "653:49:2"
                  },
                  "src": "623:80:2"
                },
                {
                  "documentation": {
                    "id": 164,
                    "nodeType": "StructuredDocumentation",
                    "src": "709:152:2",
                    "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."
                  },
                  "errorSelector": "96c6fd1e",
                  "id": 168,
                  "name": "ERC20InvalidSender",
                  "nameLocation": "872:18:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 167,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 166,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "899:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 168,
                        "src": "891:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 165,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "891:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "890:16:2"
                  },
                  "src": "866:41:2"
                },
                {
                  "documentation": {
                    "id": 169,
                    "nodeType": "StructuredDocumentation",
                    "src": "913:159:2",
                    "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."
                  },
                  "errorSelector": "ec442f05",
                  "id": 173,
                  "name": "ERC20InvalidReceiver",
                  "nameLocation": "1083:20:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 172,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 171,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "1112:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 173,
                        "src": "1104:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 170,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1104:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1103:18:2"
                  },
                  "src": "1077:45:2"
                },
                {
                  "documentation": {
                    "id": 174,
                    "nodeType": "StructuredDocumentation",
                    "src": "1128:345:2",
                    "text": " @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."
                  },
                  "errorSelector": "fb8f41b2",
                  "id": 182,
                  "name": "ERC20InsufficientAllowance",
                  "nameLocation": "1484:26:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 181,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 176,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "1519:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 182,
                        "src": "1511:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 175,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1511:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 178,
                        "mutability": "mutable",
                        "name": "allowance",
                        "nameLocation": "1536:9:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 182,
                        "src": "1528:17:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 177,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1528:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 180,
                        "mutability": "mutable",
                        "name": "needed",
                        "nameLocation": "1555:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 182,
                        "src": "1547:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 179,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1547:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1510:52:2"
                  },
                  "src": "1478:85:2"
                },
                {
                  "documentation": {
                    "id": 183,
                    "nodeType": "StructuredDocumentation",
                    "src": "1569:174:2",
                    "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."
                  },
                  "errorSelector": "e602df05",
                  "id": 187,
                  "name": "ERC20InvalidApprover",
                  "nameLocation": "1754:20:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 186,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 185,
                        "mutability": "mutable",
                        "name": "approver",
                        "nameLocation": "1783:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 187,
                        "src": "1775:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 184,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1775:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1774:18:2"
                  },
                  "src": "1748:45:2"
                },
                {
                  "documentation": {
                    "id": 188,
                    "nodeType": "StructuredDocumentation",
                    "src": "1799:195:2",
                    "text": " @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."
                  },
                  "errorSelector": "94280d62",
                  "id": 192,
                  "name": "ERC20InvalidSpender",
                  "nameLocation": "2005:19:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 191,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 190,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "2033:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 192,
                        "src": "2025:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 189,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2025:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2024:17:2"
                  },
                  "src": "1999:43:2"
                }
              ],
              "scope": 289,
              "src": "280:1764:2",
              "usedErrors": [
                163,
                168,
                173,
                182,
                187,
                192
              ],
              "usedEvents": []
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC721Errors",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 194,
                "nodeType": "StructuredDocumentation",
                "src": "2046:143:2",
                "text": " @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens."
              },
              "fullyImplemented": true,
              "id": 241,
              "linearizedBaseContracts": [
                241
              ],
              "name": "IERC721Errors",
              "nameLocation": "2200:13:2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 195,
                    "nodeType": "StructuredDocumentation",
                    "src": "2220:219:2",
                    "text": " @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."
                  },
                  "errorSelector": "89c62b64",
                  "id": 199,
                  "name": "ERC721InvalidOwner",
                  "nameLocation": "2450:18:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 198,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 197,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "2477:5:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 199,
                        "src": "2469:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 196,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2469:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2468:15:2"
                  },
                  "src": "2444:40:2"
                },
                {
                  "documentation": {
                    "id": 200,
                    "nodeType": "StructuredDocumentation",
                    "src": "2490:132:2",
                    "text": " @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."
                  },
                  "errorSelector": "7e273289",
                  "id": 204,
                  "name": "ERC721NonexistentToken",
                  "nameLocation": "2633:22:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 203,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 202,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "2664:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 204,
                        "src": "2656:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 201,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2656:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2655:17:2"
                  },
                  "src": "2627:46:2"
                },
                {
                  "documentation": {
                    "id": 205,
                    "nodeType": "StructuredDocumentation",
                    "src": "2679:289:2",
                    "text": " @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."
                  },
                  "errorSelector": "64283d7b",
                  "id": 213,
                  "name": "ERC721IncorrectOwner",
                  "nameLocation": "2979:20:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 212,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 207,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "3008:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 213,
                        "src": "3000:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 206,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3000:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 209,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3024:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 213,
                        "src": "3016:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 208,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3016:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 211,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "3041:5:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 213,
                        "src": "3033:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 210,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3033:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2999:48:2"
                  },
                  "src": "2973:75:2"
                },
                {
                  "documentation": {
                    "id": 214,
                    "nodeType": "StructuredDocumentation",
                    "src": "3054:152:2",
                    "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."
                  },
                  "errorSelector": "73c6ac6e",
                  "id": 218,
                  "name": "ERC721InvalidSender",
                  "nameLocation": "3217:19:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 217,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 216,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "3245:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 218,
                        "src": "3237:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 215,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3237:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3236:16:2"
                  },
                  "src": "3211:42:2"
                },
                {
                  "documentation": {
                    "id": 219,
                    "nodeType": "StructuredDocumentation",
                    "src": "3259:159:2",
                    "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."
                  },
                  "errorSelector": "64a0ae92",
                  "id": 223,
                  "name": "ERC721InvalidReceiver",
                  "nameLocation": "3429:21:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 221,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "3459:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 223,
                        "src": "3451:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 220,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3451:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3450:18:2"
                  },
                  "src": "3423:46:2"
                },
                {
                  "documentation": {
                    "id": 224,
                    "nodeType": "StructuredDocumentation",
                    "src": "3475:247:2",
                    "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."
                  },
                  "errorSelector": "177e802f",
                  "id": 230,
                  "name": "ERC721InsufficientApproval",
                  "nameLocation": "3733:26:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 229,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 226,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "3768:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 230,
                        "src": "3760:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 225,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3760:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 228,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3786:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 230,
                        "src": "3778:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 227,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3778:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3759:35:2"
                  },
                  "src": "3727:68:2"
                },
                {
                  "documentation": {
                    "id": 231,
                    "nodeType": "StructuredDocumentation",
                    "src": "3801:174:2",
                    "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."
                  },
                  "errorSelector": "a9fbf51f",
                  "id": 235,
                  "name": "ERC721InvalidApprover",
                  "nameLocation": "3986:21:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 234,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 233,
                        "mutability": "mutable",
                        "name": "approver",
                        "nameLocation": "4016:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 235,
                        "src": "4008:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 232,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4008:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4007:18:2"
                  },
                  "src": "3980:46:2"
                },
                {
                  "documentation": {
                    "id": 236,
                    "nodeType": "StructuredDocumentation",
                    "src": "4032:197:2",
                    "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."
                  },
                  "errorSelector": "5b08ba18",
                  "id": 240,
                  "name": "ERC721InvalidOperator",
                  "nameLocation": "4240:21:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 239,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 238,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "4270:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 240,
                        "src": "4262:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 237,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4262:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4261:18:2"
                  },
                  "src": "4234:46:2"
                }
              ],
              "scope": 289,
              "src": "2190:2092:2",
              "usedErrors": [
                199,
                204,
                213,
                218,
                223,
                230,
                235,
                240
              ],
              "usedEvents": []
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC1155Errors",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 242,
                "nodeType": "StructuredDocumentation",
                "src": "4284:145:2",
                "text": " @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens."
              },
              "fullyImplemented": true,
              "id": 288,
              "linearizedBaseContracts": [
                288
              ],
              "name": "IERC1155Errors",
              "nameLocation": "4440:14:2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 243,
                    "nodeType": "StructuredDocumentation",
                    "src": "4461:361:2",
                    "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."
                  },
                  "errorSelector": "03dee4c5",
                  "id": 253,
                  "name": "ERC1155InsufficientBalance",
                  "nameLocation": "4833:26:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 252,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 245,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "4868:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 253,
                        "src": "4860:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 244,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4860:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 247,
                        "mutability": "mutable",
                        "name": "balance",
                        "nameLocation": "4884:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 253,
                        "src": "4876:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 246,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4876:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 249,
                        "mutability": "mutable",
                        "name": "needed",
                        "nameLocation": "4901:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 253,
                        "src": "4893:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 248,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4893:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 251,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "4917:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 253,
                        "src": "4909:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 250,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4909:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4859:66:2"
                  },
                  "src": "4827:99:2"
                },
                {
                  "documentation": {
                    "id": 254,
                    "nodeType": "StructuredDocumentation",
                    "src": "4932:152:2",
                    "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."
                  },
                  "errorSelector": "01a83514",
                  "id": 258,
                  "name": "ERC1155InvalidSender",
                  "nameLocation": "5095:20:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 257,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 256,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "5124:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 258,
                        "src": "5116:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 255,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5116:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5115:16:2"
                  },
                  "src": "5089:43:2"
                },
                {
                  "documentation": {
                    "id": 259,
                    "nodeType": "StructuredDocumentation",
                    "src": "5138:159:2",
                    "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."
                  },
                  "errorSelector": "57f447ce",
                  "id": 263,
                  "name": "ERC1155InvalidReceiver",
                  "nameLocation": "5308:22:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 262,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 261,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "5339:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 263,
                        "src": "5331:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 260,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5331:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5330:18:2"
                  },
                  "src": "5302:47:2"
                },
                {
                  "documentation": {
                    "id": 264,
                    "nodeType": "StructuredDocumentation",
                    "src": "5355:256:2",
                    "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."
                  },
                  "errorSelector": "e237d922",
                  "id": 270,
                  "name": "ERC1155MissingApprovalForAll",
                  "nameLocation": "5622:28:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 269,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 266,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "5659:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 270,
                        "src": "5651:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 265,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5651:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 268,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "5677:5:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 270,
                        "src": "5669:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 267,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5669:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5650:33:2"
                  },
                  "src": "5616:68:2"
                },
                {
                  "documentation": {
                    "id": 271,
                    "nodeType": "StructuredDocumentation",
                    "src": "5690:174:2",
                    "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."
                  },
                  "errorSelector": "3e31884e",
                  "id": 275,
                  "name": "ERC1155InvalidApprover",
                  "nameLocation": "5875:22:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 274,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 273,
                        "mutability": "mutable",
                        "name": "approver",
                        "nameLocation": "5906:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 275,
                        "src": "5898:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 272,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5898:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5897:18:2"
                  },
                  "src": "5869:47:2"
                },
                {
                  "documentation": {
                    "id": 276,
                    "nodeType": "StructuredDocumentation",
                    "src": "5922:197:2",
                    "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."
                  },
                  "errorSelector": "ced3e100",
                  "id": 280,
                  "name": "ERC1155InvalidOperator",
                  "nameLocation": "6130:22:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 279,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 278,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "6161:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 280,
                        "src": "6153:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 277,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6153:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6152:18:2"
                  },
                  "src": "6124:47:2"
                },
                {
                  "documentation": {
                    "id": 281,
                    "nodeType": "StructuredDocumentation",
                    "src": "6177:280:2",
                    "text": " @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"
                  },
                  "errorSelector": "5b059991",
                  "id": 287,
                  "name": "ERC1155InvalidArrayLength",
                  "nameLocation": "6468:25:2",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 286,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 283,
                        "mutability": "mutable",
                        "name": "idsLength",
                        "nameLocation": "6502:9:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 287,
                        "src": "6494:17:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 282,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6494:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 285,
                        "mutability": "mutable",
                        "name": "valuesLength",
                        "nameLocation": "6521:12:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 287,
                        "src": "6513:20:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 284,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6513:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6493:41:2"
                  },
                  "src": "6462:73:2"
                }
              ],
              "scope": 289,
              "src": "4430:2107:2",
              "usedErrors": [
                253,
                258,
                263,
                270,
                275,
                280,
                287
              ],
              "usedEvents": []
            }
          ],
          "src": "112:6426:2"
        },
        "id": 2
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
          "exportedSymbols": {
            "IERC1155": [
              411
            ],
            "IERC165": [
              3062
            ]
          },
          "id": 412,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 290,
              "literals": [
                "solidity",
                ">=",
                "0.6",
                ".2"
              ],
              "nodeType": "PragmaDirective",
              "src": "110:24:3"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "../../utils/introspection/IERC165.sol",
              "id": 292,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 412,
              "sourceUnit": 3063,
              "src": "136:62:3",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 291,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3062,
                    "src": "144:7:3",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 294,
                    "name": "IERC165",
                    "nameLocations": [
                      "359:7:3"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3062,
                    "src": "359:7:3"
                  },
                  "id": 295,
                  "nodeType": "InheritanceSpecifier",
                  "src": "359:7:3"
                }
              ],
              "canonicalName": "IERC1155",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 293,
                "nodeType": "StructuredDocumentation",
                "src": "200:136:3",
                "text": " @dev Required interface of an ERC-1155 compliant contract, as defined in the\n https://eips.ethereum.org/EIPS/eip-1155[ERC]."
              },
              "fullyImplemented": false,
              "id": 411,
              "linearizedBaseContracts": [
                411,
                3062
              ],
              "name": "IERC1155",
              "nameLocation": "347:8:3",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 296,
                    "nodeType": "StructuredDocumentation",
                    "src": "373:125:3",
                    "text": " @dev Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`."
                  },
                  "eventSelector": "c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62",
                  "id": 308,
                  "name": "TransferSingle",
                  "nameLocation": "509:14:3",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 298,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "540:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 308,
                        "src": "524:24:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 297,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "524:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 300,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "566:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 308,
                        "src": "550:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 299,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "550:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 302,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "588:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 308,
                        "src": "572:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 301,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "572:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 304,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "600:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 308,
                        "src": "592:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 303,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "592:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 306,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "612:5:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 308,
                        "src": "604:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "604:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "523:95:3"
                  },
                  "src": "503:116:3"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 309,
                    "nodeType": "StructuredDocumentation",
                    "src": "625:144:3",
                    "text": " @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n transfers."
                  },
                  "eventSelector": "4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb",
                  "id": 323,
                  "name": "TransferBatch",
                  "nameLocation": "780:13:3",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 322,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 311,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "819:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 323,
                        "src": "803:24:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 310,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "803:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 313,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "853:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 323,
                        "src": "837:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 312,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "837:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 315,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "883:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 323,
                        "src": "867:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 314,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "867:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 318,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "905:3:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 323,
                        "src": "895:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 316,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "895:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 317,
                          "nodeType": "ArrayTypeName",
                          "src": "895:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 321,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "928:6:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 323,
                        "src": "918:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 319,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "918:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 320,
                          "nodeType": "ArrayTypeName",
                          "src": "918:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "793:147:3"
                  },
                  "src": "774:167:3"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 324,
                    "nodeType": "StructuredDocumentation",
                    "src": "947:147:3",
                    "text": " @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n `approved`."
                  },
                  "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31",
                  "id": 332,
                  "name": "ApprovalForAll",
                  "nameLocation": "1105:14:3",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 331,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 326,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1136:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 332,
                        "src": "1120:23:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 325,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1120:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 328,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1161:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 332,
                        "src": "1145:24:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 327,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1145:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 330,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "1176:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 332,
                        "src": "1171:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 329,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1171:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1119:66:3"
                  },
                  "src": "1099:87:3"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 333,
                    "nodeType": "StructuredDocumentation",
                    "src": "1192:343:3",
                    "text": " @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n If an {URI} event was emitted for `id`, the standard\n https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n returned by {IERC1155MetadataURI-uri}."
                  },
                  "eventSelector": "6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b",
                  "id": 339,
                  "name": "URI",
                  "nameLocation": "1546:3:3",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 338,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 335,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1557:5:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 339,
                        "src": "1550:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 334,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1550:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 337,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1580:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 339,
                        "src": "1564:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 336,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1564:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1549:34:3"
                  },
                  "src": "1540:44:3"
                },
                {
                  "documentation": {
                    "id": 340,
                    "nodeType": "StructuredDocumentation",
                    "src": "1590:90:3",
                    "text": " @dev Returns the value of tokens of token type `id` owned by `account`."
                  },
                  "functionSelector": "00fdd58e",
                  "id": 349,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "1694:9:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 345,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 342,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1712:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 349,
                        "src": "1704:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 341,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1704:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 344,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1729:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 349,
                        "src": "1721:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 343,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1721:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1703:29:3"
                  },
                  "returnParameters": {
                    "id": 348,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 347,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 349,
                        "src": "1756:7:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 346,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1756:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1755:9:3"
                  },
                  "scope": 411,
                  "src": "1685:80:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 350,
                    "nodeType": "StructuredDocumentation",
                    "src": "1771:188:3",
                    "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n Requirements:\n - `accounts` and `ids` must have the same length."
                  },
                  "functionSelector": "4e1273f4",
                  "id": 362,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nameLocation": "1973:14:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 357,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 353,
                        "mutability": "mutable",
                        "name": "accounts",
                        "nameLocation": "2016:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 362,
                        "src": "1997:27:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 351,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1997:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 352,
                          "nodeType": "ArrayTypeName",
                          "src": "1997:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 356,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "2053:3:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 362,
                        "src": "2034:22:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 354,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2034:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 355,
                          "nodeType": "ArrayTypeName",
                          "src": "2034:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1987:75:3"
                  },
                  "returnParameters": {
                    "id": 361,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 360,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 362,
                        "src": "2086:16:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 358,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2086:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 359,
                          "nodeType": "ArrayTypeName",
                          "src": "2086:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2085:18:3"
                  },
                  "scope": 411,
                  "src": "1964:140:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 363,
                    "nodeType": "StructuredDocumentation",
                    "src": "2110:254:3",
                    "text": " @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n Emits an {ApprovalForAll} event.\n Requirements:\n - `operator` cannot be the zero address."
                  },
                  "functionSelector": "a22cb465",
                  "id": 370,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "2378:17:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 368,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 365,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "2404:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 370,
                        "src": "2396:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 364,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2396:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 367,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "2419:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 370,
                        "src": "2414:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 366,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2414:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2395:33:3"
                  },
                  "returnParameters": {
                    "id": 369,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2437:0:3"
                  },
                  "scope": 411,
                  "src": "2369:69:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 371,
                    "nodeType": "StructuredDocumentation",
                    "src": "2444:135:3",
                    "text": " @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n See {setApprovalForAll}."
                  },
                  "functionSelector": "e985e9c5",
                  "id": 380,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nameLocation": "2593:16:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 376,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 373,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2618:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 380,
                        "src": "2610:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 372,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2610:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 375,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "2635:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 380,
                        "src": "2627:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 374,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2627:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2609:35:3"
                  },
                  "returnParameters": {
                    "id": 379,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 378,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 380,
                        "src": "2668:4:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 377,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2668:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2667:6:3"
                  },
                  "scope": 411,
                  "src": "2584:90:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 381,
                    "nodeType": "StructuredDocumentation",
                    "src": "2680:927:3",
                    "text": " @dev Transfers a `value` amount of tokens of type `id` from `from` to `to`.\n WARNING: This function can potentially allow a reentrancy attack when transferring tokens\n to an untrusted contract, when invoking {IERC1155Receiver-onERC1155Received} on the receiver.\n Ensure to follow the checks-effects-interactions pattern and consider employing\n reentrancy guards when interacting with untrusted contracts.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n - `from` must have a balance of tokens of type `id` of at least `value` amount.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."
                  },
                  "functionSelector": "f242432a",
                  "id": 394,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "3621:16:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 392,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 383,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "3646:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 394,
                        "src": "3638:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 382,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3638:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 385,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3660:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 394,
                        "src": "3652:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 384,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3652:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 387,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "3672:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 394,
                        "src": "3664:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 386,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3664:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 389,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "3684:5:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 394,
                        "src": "3676:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 388,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3676:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 391,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3706:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 394,
                        "src": "3691:19:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 390,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3691:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3637:74:3"
                  },
                  "returnParameters": {
                    "id": 393,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3720:0:3"
                  },
                  "scope": 411,
                  "src": "3612:109:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 395,
                    "nodeType": "StructuredDocumentation",
                    "src": "3727:831:3",
                    "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n WARNING: This function can potentially allow a reentrancy attack when transferring tokens\n to an untrusted contract, when invoking {IERC1155Receiver-onERC1155BatchReceived} on the receiver.\n Ensure to follow the checks-effects-interactions pattern and consider employing\n reentrancy guards when interacting with untrusted contracts.\n Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments.\n Requirements:\n - `ids` and `values` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 410,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nameLocation": "4572:21:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 408,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 397,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "4611:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 410,
                        "src": "4603:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 396,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4603:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 399,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "4633:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 410,
                        "src": "4625:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 398,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4625:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 402,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "4664:3:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 410,
                        "src": "4645:22:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 400,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4645:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 401,
                          "nodeType": "ArrayTypeName",
                          "src": "4645:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 405,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "4696:6:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 410,
                        "src": "4677:25:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 403,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4677:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 404,
                          "nodeType": "ArrayTypeName",
                          "src": "4677:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 407,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4727:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 410,
                        "src": "4712:19:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 406,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4712:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4593:144:3"
                  },
                  "returnParameters": {
                    "id": 409,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4746:0:3"
                  },
                  "scope": 411,
                  "src": "4563:184:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 412,
              "src": "337:4412:3",
              "usedErrors": [],
              "usedEvents": [
                308,
                323,
                332,
                339
              ]
            }
          ],
          "src": "110:4640:3"
        },
        "id": 3
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
          "exportedSymbols": {
            "IERC1155Receiver": [
              453
            ],
            "IERC165": [
              3062
            ]
          },
          "id": 454,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 413,
              "literals": [
                "solidity",
                ">=",
                "0.6",
                ".2"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:24:4"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "../../utils/introspection/IERC165.sol",
              "id": 415,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 454,
              "sourceUnit": 3063,
              "src": "144:62:4",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 414,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3062,
                    "src": "152:7:4",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 417,
                    "name": "IERC165",
                    "nameLocations": [
                      "357:7:4"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3062,
                    "src": "357:7:4"
                  },
                  "id": 418,
                  "nodeType": "InheritanceSpecifier",
                  "src": "357:7:4"
                }
              ],
              "canonicalName": "IERC1155Receiver",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 416,
                "nodeType": "StructuredDocumentation",
                "src": "208:118:4",
                "text": " @dev Interface that must be implemented by smart contracts in order to receive\n ERC-1155 token transfers."
              },
              "fullyImplemented": false,
              "id": 453,
              "linearizedBaseContracts": [
                453,
                3062
              ],
              "name": "IERC1155Receiver",
              "nameLocation": "337:16:4",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 419,
                    "nodeType": "StructuredDocumentation",
                    "src": "371:827:4",
                    "text": " @dev Handles the receipt of a single ERC-1155 token type. This function is\n called at the end of a `safeTransferFrom` after the balance has been updated.\n NOTE: To accept the transfer, this must return\n `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n (i.e. 0xf23a6e61, or its own function selector).\n @param operator The address which initiated the transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param id The ID of the token being transferred\n @param value The amount of tokens being transferred\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"
                  },
                  "functionSelector": "f23a6e61",
                  "id": 434,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nameLocation": "1212:17:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 430,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 421,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1247:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 434,
                        "src": "1239:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 420,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1239:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 423,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "1273:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 434,
                        "src": "1265:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 422,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1265:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 425,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1295:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 434,
                        "src": "1287:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 424,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1287:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 427,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1315:5:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 434,
                        "src": "1307:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 426,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1307:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 429,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1345:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 434,
                        "src": "1330:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 428,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1330:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1229:126:4"
                  },
                  "returnParameters": {
                    "id": 433,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 432,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 434,
                        "src": "1374:6:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 431,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1374:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1373:8:4"
                  },
                  "scope": 453,
                  "src": "1203:179:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 435,
                    "nodeType": "StructuredDocumentation",
                    "src": "1388:995:4",
                    "text": " @dev Handles the receipt of a multiple ERC-1155 token types. This function\n is called at the end of a `safeBatchTransferFrom` after the balances have\n been updated.\n NOTE: To accept the transfer(s), this must return\n `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n (i.e. 0xbc197c81, or its own function selector).\n @param operator The address which initiated the batch transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param ids An array containing ids of each token being transferred (order and length must match values array)\n @param values An array containing amounts of each token being transferred (order and length must match ids array)\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"
                  },
                  "functionSelector": "bc197c81",
                  "id": 452,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nameLocation": "2397:22:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 448,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 437,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "2437:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 452,
                        "src": "2429:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 436,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2429:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 439,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2463:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 452,
                        "src": "2455:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 438,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2455:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 442,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "2496:3:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 452,
                        "src": "2477:22:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 440,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2477:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 441,
                          "nodeType": "ArrayTypeName",
                          "src": "2477:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 445,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "2528:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 452,
                        "src": "2509:25:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 443,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2509:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 444,
                          "nodeType": "ArrayTypeName",
                          "src": "2509:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 447,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2559:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 452,
                        "src": "2544:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 446,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2544:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2419:150:4"
                  },
                  "returnParameters": {
                    "id": 451,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 450,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 452,
                        "src": "2588:6:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 449,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2588:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2587:8:4"
                  },
                  "scope": 453,
                  "src": "2388:208:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 454,
              "src": "327:2271:4",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "118:2481:4"
        },
        "id": 4
      },
      "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
          "exportedSymbols": {
            "Context": [
              1442
            ],
            "ERC20": [
              968
            ],
            "IERC20": [
              1046
            ],
            "IERC20Errors": [
              193
            ],
            "IERC20Metadata": [
              1152
            ]
          },
          "id": 969,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 455,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "105:24:5"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
              "file": "./IERC20.sol",
              "id": 457,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 969,
              "sourceUnit": 1047,
              "src": "131:36:5",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 456,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1046,
                    "src": "139:6:5",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
              "file": "./extensions/IERC20Metadata.sol",
              "id": 459,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 969,
              "sourceUnit": 1153,
              "src": "168:63:5",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 458,
                    "name": "IERC20Metadata",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1152,
                    "src": "176:14:5",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
              "file": "../../utils/Context.sol",
              "id": 461,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 969,
              "sourceUnit": 1443,
              "src": "232:48:5",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 460,
                    "name": "Context",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1442,
                    "src": "240:7:5",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol",
              "file": "../../interfaces/draft-IERC6093.sol",
              "id": 463,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 969,
              "sourceUnit": 289,
              "src": "281:65:5",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 462,
                    "name": "IERC20Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 193,
                    "src": "289:12:5",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 465,
                    "name": "Context",
                    "nameLocations": [
                      "1133:7:5"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1442,
                    "src": "1133:7:5"
                  },
                  "id": 466,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1133:7:5"
                },
                {
                  "baseName": {
                    "id": 467,
                    "name": "IERC20",
                    "nameLocations": [
                      "1142:6:5"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1046,
                    "src": "1142:6:5"
                  },
                  "id": 468,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1142:6:5"
                },
                {
                  "baseName": {
                    "id": 469,
                    "name": "IERC20Metadata",
                    "nameLocations": [
                      "1150:14:5"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1152,
                    "src": "1150:14:5"
                  },
                  "id": 470,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1150:14:5"
                },
                {
                  "baseName": {
                    "id": 471,
                    "name": "IERC20Errors",
                    "nameLocations": [
                      "1166:12:5"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 193,
                    "src": "1166:12:5"
                  },
                  "id": 472,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1166:12:5"
                }
              ],
              "canonicalName": "ERC20",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 464,
                "nodeType": "StructuredDocumentation",
                "src": "348:757:5",
                "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications."
              },
              "fullyImplemented": true,
              "id": 968,
              "linearizedBaseContracts": [
                968,
                193,
                1152,
                1046,
                1442
              ],
              "name": "ERC20",
              "nameLocation": "1124:5:5",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 476,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nameLocation": "1229:9:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 968,
                  "src": "1185:53:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 475,
                    "keyName": "account",
                    "keyNameLocation": "1201:7:5",
                    "keyType": {
                      "id": 473,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1193:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1185:35:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueName": "",
                    "valueNameLocation": "-1:-1:-1",
                    "valueType": {
                      "id": 474,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1212:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 482,
                  "mutability": "mutable",
                  "name": "_allowances",
                  "nameLocation": "1317:11:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 968,
                  "src": "1245:83:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 481,
                    "keyName": "account",
                    "keyNameLocation": "1261:7:5",
                    "keyType": {
                      "id": 477,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1253:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1245:63:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueName": "",
                    "valueNameLocation": "-1:-1:-1",
                    "valueType": {
                      "id": 480,
                      "keyName": "spender",
                      "keyNameLocation": "1288:7:5",
                      "keyType": {
                        "id": 478,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1280:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1272:35:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueName": "",
                      "valueNameLocation": "-1:-1:-1",
                      "valueType": {
                        "id": 479,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1299:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 484,
                  "mutability": "mutable",
                  "name": "_totalSupply",
                  "nameLocation": "1351:12:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 968,
                  "src": "1335:28:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 483,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1335:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 486,
                  "mutability": "mutable",
                  "name": "_name",
                  "nameLocation": "1385:5:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 968,
                  "src": "1370:20:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 485,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1370:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 488,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nameLocation": "1411:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 968,
                  "src": "1396:22:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 487,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1396:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 504,
                    "nodeType": "Block",
                    "src": "1638:57:5",
                    "statements": [
                      {
                        "expression": {
                          "id": 498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 496,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 486,
                            "src": "1648:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 497,
                            "name": "name_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 491,
                            "src": "1656:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1648:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 499,
                        "nodeType": "ExpressionStatement",
                        "src": "1648:13:5"
                      },
                      {
                        "expression": {
                          "id": 502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 500,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 488,
                            "src": "1671:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 501,
                            "name": "symbol_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 493,
                            "src": "1681:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1671:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 503,
                        "nodeType": "ExpressionStatement",
                        "src": "1671:17:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 489,
                    "nodeType": "StructuredDocumentation",
                    "src": "1425:152:5",
                    "text": " @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction."
                  },
                  "id": 505,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 494,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 491,
                        "mutability": "mutable",
                        "name": "name_",
                        "nameLocation": "1608:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 505,
                        "src": "1594:19:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 490,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1594:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 493,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nameLocation": "1629:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 505,
                        "src": "1615:21:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 492,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1615:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1593:44:5"
                  },
                  "returnParameters": {
                    "id": 495,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1638:0:5"
                  },
                  "scope": 968,
                  "src": "1582:113:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    1139
                  ],
                  "body": {
                    "id": 513,
                    "nodeType": "Block",
                    "src": "1820:29:5",
                    "statements": [
                      {
                        "expression": {
                          "id": 511,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 486,
                          "src": "1837:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 510,
                        "id": 512,
                        "nodeType": "Return",
                        "src": "1830:12:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 506,
                    "nodeType": "StructuredDocumentation",
                    "src": "1701:54:5",
                    "text": " @dev Returns the name of the token."
                  },
                  "functionSelector": "06fdde03",
                  "id": 514,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "1769:4:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 507,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1773:2:5"
                  },
                  "returnParameters": {
                    "id": 510,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 509,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 514,
                        "src": "1805:13:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 508,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1805:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1804:15:5"
                  },
                  "scope": 968,
                  "src": "1760:89:5",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1145
                  ],
                  "body": {
                    "id": 522,
                    "nodeType": "Block",
                    "src": "2024:31:5",
                    "statements": [
                      {
                        "expression": {
                          "id": 520,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 488,
                          "src": "2041:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 519,
                        "id": 521,
                        "nodeType": "Return",
                        "src": "2034:14:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 515,
                    "nodeType": "StructuredDocumentation",
                    "src": "1855:102:5",
                    "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."
                  },
                  "functionSelector": "95d89b41",
                  "id": 523,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "1971:6:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 516,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1977:2:5"
                  },
                  "returnParameters": {
                    "id": 519,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 518,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 523,
                        "src": "2009:13:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 517,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2009:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2008:15:5"
                  },
                  "scope": 968,
                  "src": "1962:93:5",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1151
                  ],
                  "body": {
                    "id": 531,
                    "nodeType": "Block",
                    "src": "2744:26:5",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "3138",
                          "id": 529,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2761:2:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          "value": "18"
                        },
                        "functionReturnParameters": 528,
                        "id": 530,
                        "nodeType": "Return",
                        "src": "2754:9:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 524,
                    "nodeType": "StructuredDocumentation",
                    "src": "2061:622:5",
                    "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."
                  },
                  "functionSelector": "313ce567",
                  "id": 532,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nameLocation": "2697:8:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 525,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2705:2:5"
                  },
                  "returnParameters": {
                    "id": 528,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 527,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 532,
                        "src": "2737:5:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 526,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2737:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2736:7:5"
                  },
                  "scope": 968,
                  "src": "2688:82:5",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    995
                  ],
                  "body": {
                    "id": 540,
                    "nodeType": "Block",
                    "src": "2864:36:5",
                    "statements": [
                      {
                        "expression": {
                          "id": 538,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 484,
                          "src": "2881:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 537,
                        "id": 539,
                        "nodeType": "Return",
                        "src": "2874:19:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 533,
                    "nodeType": "StructuredDocumentation",
                    "src": "2776:22:5",
                    "text": "@inheritdoc IERC20"
                  },
                  "functionSelector": "18160ddd",
                  "id": 541,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "2812:11:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 534,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2823:2:5"
                  },
                  "returnParameters": {
                    "id": 537,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 536,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 541,
                        "src": "2855:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 535,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2855:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2854:9:5"
                  },
                  "scope": 968,
                  "src": "2803:97:5",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1003
                  ],
                  "body": {
                    "id": 553,
                    "nodeType": "Block",
                    "src": "3007:42:5",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 549,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 476,
                            "src": "3024:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 551,
                          "indexExpression": {
                            "id": 550,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 544,
                            "src": "3034:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3024:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 548,
                        "id": 552,
                        "nodeType": "Return",
                        "src": "3017:25:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 542,
                    "nodeType": "StructuredDocumentation",
                    "src": "2906:22:5",
                    "text": "@inheritdoc IERC20"
                  },
                  "functionSelector": "70a08231",
                  "id": 554,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "2942:9:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 545,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 544,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2960:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 554,
                        "src": "2952:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 543,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2952:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2951:17:5"
                  },
                  "returnParameters": {
                    "id": 548,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 547,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 554,
                        "src": "2998:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 546,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2998:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2997:9:5"
                  },
                  "scope": 968,
                  "src": "2933:116:5",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1013
                  ],
                  "body": {
                    "id": 577,
                    "nodeType": "Block",
                    "src": "3319:103:5",
                    "statements": [
                      {
                        "assignments": [
                          565
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 565,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "3337:5:5",
                            "nodeType": "VariableDeclaration",
                            "scope": 577,
                            "src": "3329:13:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 564,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3329:7:5",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 568,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 566,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1424,
                            "src": "3345:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3345:12:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3329:28:5"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 570,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 565,
                              "src": "3377:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 571,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 557,
                              "src": "3384:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 572,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 559,
                              "src": "3388:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 569,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 698,
                            "src": "3367:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3367:27:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 574,
                        "nodeType": "ExpressionStatement",
                        "src": "3367:27:5"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3411:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 563,
                        "id": 576,
                        "nodeType": "Return",
                        "src": "3404:11:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 555,
                    "nodeType": "StructuredDocumentation",
                    "src": "3055:184:5",
                    "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 578,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "3253:8:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 560,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 557,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3270:2:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 578,
                        "src": "3262:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 556,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3262:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 559,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "3282:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 578,
                        "src": "3274:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 558,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3274:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3261:27:5"
                  },
                  "returnParameters": {
                    "id": 563,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 562,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 578,
                        "src": "3313:4:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 561,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3313:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3312:6:5"
                  },
                  "scope": 968,
                  "src": "3244:178:5",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1023
                  ],
                  "body": {
                    "id": 594,
                    "nodeType": "Block",
                    "src": "3544:51:5",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 588,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 482,
                              "src": "3561:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 590,
                            "indexExpression": {
                              "id": 589,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 581,
                              "src": "3573:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3561:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 592,
                          "indexExpression": {
                            "id": 591,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 583,
                            "src": "3580:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3561:27:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 587,
                        "id": 593,
                        "nodeType": "Return",
                        "src": "3554:34:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 579,
                    "nodeType": "StructuredDocumentation",
                    "src": "3428:22:5",
                    "text": "@inheritdoc IERC20"
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 595,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nameLocation": "3464:9:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 584,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 581,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "3482:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 595,
                        "src": "3474:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 580,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3474:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 583,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "3497:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 595,
                        "src": "3489:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 582,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3489:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3473:32:5"
                  },
                  "returnParameters": {
                    "id": 587,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 586,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 595,
                        "src": "3535:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 585,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3535:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3534:9:5"
                  },
                  "scope": 968,
                  "src": "3455:140:5",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1033
                  ],
                  "body": {
                    "id": 618,
                    "nodeType": "Block",
                    "src": "3981:107:5",
                    "statements": [
                      {
                        "assignments": [
                          606
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 606,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "3999:5:5",
                            "nodeType": "VariableDeclaration",
                            "scope": 618,
                            "src": "3991:13:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 605,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3991:7:5",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 609,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 607,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1424,
                            "src": "4007:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4007:12:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3991:28:5"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 611,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 606,
                              "src": "4038:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 612,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 598,
                              "src": "4045:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 613,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 600,
                              "src": "4054:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 610,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              859,
                              919
                            ],
                            "referencedDeclaration": 859,
                            "src": "4029:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4029:31:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 615,
                        "nodeType": "ExpressionStatement",
                        "src": "4029:31:5"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4077:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 604,
                        "id": 617,
                        "nodeType": "Return",
                        "src": "4070:11:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 596,
                    "nodeType": "StructuredDocumentation",
                    "src": "3601:296:5",
                    "text": " @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 619,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "3911:7:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 601,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 598,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "3927:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 619,
                        "src": "3919:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 597,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3919:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 600,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "3944:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 619,
                        "src": "3936:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 599,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3936:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3918:32:5"
                  },
                  "returnParameters": {
                    "id": 604,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 603,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 619,
                        "src": "3975:4:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 602,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3975:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3974:6:5"
                  },
                  "scope": 968,
                  "src": "3902:186:5",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1045
                  ],
                  "body": {
                    "id": 650,
                    "nodeType": "Block",
                    "src": "4773:151:5",
                    "statements": [
                      {
                        "assignments": [
                          632
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 632,
                            "mutability": "mutable",
                            "name": "spender",
                            "nameLocation": "4791:7:5",
                            "nodeType": "VariableDeclaration",
                            "scope": 650,
                            "src": "4783:15:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 631,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4783:7:5",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 635,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 633,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1424,
                            "src": "4801:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4801:12:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4783:30:5"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 637,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 622,
                              "src": "4839:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 638,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 632,
                              "src": "4845:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 639,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 626,
                              "src": "4854:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 636,
                            "name": "_spendAllowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 967,
                            "src": "4823:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 640,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4823:37:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 641,
                        "nodeType": "ExpressionStatement",
                        "src": "4823:37:5"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 643,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 622,
                              "src": "4880:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 644,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 624,
                              "src": "4886:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 645,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 626,
                              "src": "4890:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 642,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 698,
                            "src": "4870:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4870:26:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 647,
                        "nodeType": "ExpressionStatement",
                        "src": "4870:26:5"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4913:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 630,
                        "id": 649,
                        "nodeType": "Return",
                        "src": "4906:11:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 620,
                    "nodeType": "StructuredDocumentation",
                    "src": "4094:581:5",
                    "text": " @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."
                  },
                  "functionSelector": "23b872dd",
                  "id": 651,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "4689:12:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 627,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 622,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "4710:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 651,
                        "src": "4702:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 621,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4702:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 624,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "4724:2:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 651,
                        "src": "4716:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 623,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4716:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 626,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "4736:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 651,
                        "src": "4728:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 625,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4728:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4701:41:5"
                  },
                  "returnParameters": {
                    "id": 630,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 629,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 651,
                        "src": "4767:4:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 628,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4767:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4766:6:5"
                  },
                  "scope": 968,
                  "src": "4680:244:5",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 697,
                    "nodeType": "Block",
                    "src": "5366:231:5",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 661,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 654,
                            "src": "5380:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 664,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5396:1:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 663,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5388:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 662,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5388:7:5",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5388:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5380:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 675,
                        "nodeType": "IfStatement",
                        "src": "5376:86:5",
                        "trueBody": {
                          "id": 674,
                          "nodeType": "Block",
                          "src": "5400:62:5",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 670,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5448:1:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 669,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5440:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 668,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5440:7:5",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 671,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5440:10:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 667,
                                  "name": "ERC20InvalidSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 168,
                                  "src": "5421:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                    "typeString": "function (address) pure returns (error)"
                                  }
                                },
                                "id": 672,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5421:30:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 673,
                              "nodeType": "RevertStatement",
                              "src": "5414:37:5"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 676,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 656,
                            "src": "5475:2:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 679,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5489:1:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 678,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5481:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 677,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5481:7:5",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 680,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5481:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5475:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 690,
                        "nodeType": "IfStatement",
                        "src": "5471:86:5",
                        "trueBody": {
                          "id": 689,
                          "nodeType": "Block",
                          "src": "5493:64:5",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 685,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5543:1:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 684,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5535:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 683,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5535:7:5",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 686,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5535:10:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 682,
                                  "name": "ERC20InvalidReceiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 173,
                                  "src": "5514:20:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                    "typeString": "function (address) pure returns (error)"
                                  }
                                },
                                "id": 687,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5514:32:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 688,
                              "nodeType": "RevertStatement",
                              "src": "5507:39:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 692,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 654,
                              "src": "5574:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 693,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 656,
                              "src": "5580:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 694,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 658,
                              "src": "5584:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 691,
                            "name": "_update",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 775,
                            "src": "5566:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5566:24:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 696,
                        "nodeType": "ExpressionStatement",
                        "src": "5566:24:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 652,
                    "nodeType": "StructuredDocumentation",
                    "src": "4930:362:5",
                    "text": " @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead."
                  },
                  "id": 698,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "5306:9:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 659,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 654,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "5324:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 698,
                        "src": "5316:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 653,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5316:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 656,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5338:2:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 698,
                        "src": "5330:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 655,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5330:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 658,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5350:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 698,
                        "src": "5342:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 657,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5342:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5315:41:5"
                  },
                  "returnParameters": {
                    "id": 660,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5366:0:5"
                  },
                  "scope": 968,
                  "src": "5297:300:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 774,
                    "nodeType": "Block",
                    "src": "5987:1032:5",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 708,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 701,
                            "src": "6001:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 711,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6017:1:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 710,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6009:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 709,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6009:7:5",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6009:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6001:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 745,
                          "nodeType": "Block",
                          "src": "6175:362:5",
                          "statements": [
                            {
                              "assignments": [
                                720
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 720,
                                  "mutability": "mutable",
                                  "name": "fromBalance",
                                  "nameLocation": "6197:11:5",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 745,
                                  "src": "6189:19:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 719,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6189:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 724,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 721,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 476,
                                  "src": "6211:9:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 723,
                                "indexExpression": {
                                  "id": 722,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 701,
                                  "src": "6221:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6211:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6189:37:5"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 725,
                                  "name": "fromBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 720,
                                  "src": "6244:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 726,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 705,
                                  "src": "6258:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6244:19:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 735,
                              "nodeType": "IfStatement",
                              "src": "6240:115:5",
                              "trueBody": {
                                "id": 734,
                                "nodeType": "Block",
                                "src": "6265:90:5",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 729,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 701,
                                          "src": "6315:4:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 730,
                                          "name": "fromBalance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 720,
                                          "src": "6321:11:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 731,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 705,
                                          "src": "6334:5:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 728,
                                        "name": "ERC20InsufficientBalance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 163,
                                        "src": "6290:24:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$",
                                          "typeString": "function (address,uint256,uint256) pure returns (error)"
                                        }
                                      },
                                      "id": 732,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6290:50:5",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 733,
                                    "nodeType": "RevertStatement",
                                    "src": "6283:57:5"
                                  }
                                ]
                              }
                            },
                            {
                              "id": 744,
                              "nodeType": "UncheckedBlock",
                              "src": "6368:159:5",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 742,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "id": 736,
                                        "name": "_balances",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 476,
                                        "src": "6475:9:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 738,
                                      "indexExpression": {
                                        "id": 737,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 701,
                                        "src": "6485:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "6475:15:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 741,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 739,
                                        "name": "fromBalance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 720,
                                        "src": "6493:11:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 740,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 705,
                                        "src": "6507:5:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6493:19:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6475:37:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 743,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6475:37:5"
                                }
                              ]
                            }
                          ]
                        },
                        "id": 746,
                        "nodeType": "IfStatement",
                        "src": "5997:540:5",
                        "trueBody": {
                          "id": 718,
                          "nodeType": "Block",
                          "src": "6021:148:5",
                          "statements": [
                            {
                              "expression": {
                                "id": 716,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 714,
                                  "name": "_totalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 484,
                                  "src": "6137:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 715,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 705,
                                  "src": "6153:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6137:21:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 717,
                              "nodeType": "ExpressionStatement",
                              "src": "6137:21:5"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 747,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 703,
                            "src": "6551:2:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6565:1:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 749,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6557:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 748,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6557:7:5",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 751,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6557:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6551:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 766,
                          "nodeType": "Block",
                          "src": "6766:206:5",
                          "statements": [
                            {
                              "id": 765,
                              "nodeType": "UncheckedBlock",
                              "src": "6780:182:5",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 763,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "id": 759,
                                        "name": "_balances",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 476,
                                        "src": "6925:9:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 761,
                                      "indexExpression": {
                                        "id": 760,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 703,
                                        "src": "6935:2:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "6925:13:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 762,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 705,
                                      "src": "6942:5:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6925:22:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 764,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6925:22:5"
                                }
                              ]
                            }
                          ]
                        },
                        "id": 767,
                        "nodeType": "IfStatement",
                        "src": "6547:425:5",
                        "trueBody": {
                          "id": 758,
                          "nodeType": "Block",
                          "src": "6569:191:5",
                          "statements": [
                            {
                              "id": 757,
                              "nodeType": "UncheckedBlock",
                              "src": "6583:167:5",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 755,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 753,
                                      "name": "_totalSupply",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 484,
                                      "src": "6714:12:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 754,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 705,
                                      "src": "6730:5:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6714:21:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 756,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6714:21:5"
                                }
                              ]
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 769,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 701,
                              "src": "6996:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 770,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 703,
                              "src": "7002:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 771,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 705,
                              "src": "7006:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 768,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 980,
                            "src": "6987:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6987:25:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 773,
                        "nodeType": "EmitStatement",
                        "src": "6982:30:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 699,
                    "nodeType": "StructuredDocumentation",
                    "src": "5603:304:5",
                    "text": " @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."
                  },
                  "id": 775,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_update",
                  "nameLocation": "5921:7:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 706,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 701,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "5937:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 775,
                        "src": "5929:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 700,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5929:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 703,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5951:2:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 775,
                        "src": "5943:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 702,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5943:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 705,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5963:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 775,
                        "src": "5955:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 704,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5955:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5928:41:5"
                  },
                  "returnParameters": {
                    "id": 707,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5987:0:5"
                  },
                  "scope": 968,
                  "src": "5912:1107:5",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 807,
                    "nodeType": "Block",
                    "src": "7418:152:5",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 783,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 778,
                            "src": "7432:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 786,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7451:1:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 785,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7443:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 784,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7443:7:5",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7443:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7432:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 797,
                        "nodeType": "IfStatement",
                        "src": "7428:91:5",
                        "trueBody": {
                          "id": 796,
                          "nodeType": "Block",
                          "src": "7455:64:5",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 792,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7505:1:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 791,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7497:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 790,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7497:7:5",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 793,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7497:10:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 789,
                                  "name": "ERC20InvalidReceiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 173,
                                  "src": "7476:20:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                    "typeString": "function (address) pure returns (error)"
                                  }
                                },
                                "id": 794,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7476:32:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 795,
                              "nodeType": "RevertStatement",
                              "src": "7469:39:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 801,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7544:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 800,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7536:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 799,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7536:7:5",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 802,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7536:10:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 803,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 778,
                              "src": "7548:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 804,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 780,
                              "src": "7557:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 798,
                            "name": "_update",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 775,
                            "src": "7528:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7528:35:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 806,
                        "nodeType": "ExpressionStatement",
                        "src": "7528:35:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 776,
                    "nodeType": "StructuredDocumentation",
                    "src": "7025:332:5",
                    "text": " @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."
                  },
                  "id": 808,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nameLocation": "7371:5:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 781,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 778,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "7385:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 808,
                        "src": "7377:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 777,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7377:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 780,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "7402:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 808,
                        "src": "7394:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 779,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7394:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7376:32:5"
                  },
                  "returnParameters": {
                    "id": 782,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7418:0:5"
                  },
                  "scope": 968,
                  "src": "7362:208:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 840,
                    "nodeType": "Block",
                    "src": "7944:150:5",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 816,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 811,
                            "src": "7958:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 819,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7977:1:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7969:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 817,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7969:7:5",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7969:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7958:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 830,
                        "nodeType": "IfStatement",
                        "src": "7954:89:5",
                        "trueBody": {
                          "id": 829,
                          "nodeType": "Block",
                          "src": "7981:62:5",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 825,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8029:1:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 824,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8021:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 823,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8021:7:5",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 826,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8021:10:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 822,
                                  "name": "ERC20InvalidSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 168,
                                  "src": "8002:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                    "typeString": "function (address) pure returns (error)"
                                  }
                                },
                                "id": 827,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8002:30:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 828,
                              "nodeType": "RevertStatement",
                              "src": "7995:37:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 832,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 811,
                              "src": "8060:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 835,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8077:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 834,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8069:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 833,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8069:7:5",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 836,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8069:10:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 837,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 813,
                              "src": "8081:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 831,
                            "name": "_update",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 775,
                            "src": "8052:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 838,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8052:35:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 839,
                        "nodeType": "ExpressionStatement",
                        "src": "8052:35:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 809,
                    "nodeType": "StructuredDocumentation",
                    "src": "7576:307:5",
                    "text": " @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"
                  },
                  "id": 841,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nameLocation": "7897:5:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 814,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 811,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "7911:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 841,
                        "src": "7903:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 810,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7903:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 813,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "7928:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 841,
                        "src": "7920:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 812,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7920:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7902:32:5"
                  },
                  "returnParameters": {
                    "id": 815,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7944:0:5"
                  },
                  "scope": 968,
                  "src": "7888:206:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 858,
                    "nodeType": "Block",
                    "src": "8704:54:5",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 852,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 844,
                              "src": "8723:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 853,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 846,
                              "src": "8730:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 854,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 848,
                              "src": "8739:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 855,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8746:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 851,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              859,
                              919
                            ],
                            "referencedDeclaration": 919,
                            "src": "8714:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bool)"
                            }
                          },
                          "id": 856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8714:37:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 857,
                        "nodeType": "ExpressionStatement",
                        "src": "8714:37:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 842,
                    "nodeType": "StructuredDocumentation",
                    "src": "8100:525:5",
                    "text": " @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."
                  },
                  "id": 859,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nameLocation": "8639:8:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 849,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 844,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "8656:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 859,
                        "src": "8648:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 843,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8648:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 846,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "8671:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 859,
                        "src": "8663:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 845,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8663:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 848,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "8688:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 859,
                        "src": "8680:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 847,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8680:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8647:47:5"
                  },
                  "returnParameters": {
                    "id": 850,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8704:0:5"
                  },
                  "scope": 968,
                  "src": "8630:128:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 918,
                    "nodeType": "Block",
                    "src": "9703:334:5",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 871,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 862,
                            "src": "9717:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 874,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9734:1:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 873,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9726:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 872,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "9726:7:5",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 875,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9726:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9717:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 885,
                        "nodeType": "IfStatement",
                        "src": "9713:89:5",
                        "trueBody": {
                          "id": 884,
                          "nodeType": "Block",
                          "src": "9738:64:5",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 880,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9788:1:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 879,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9780:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 878,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9780:7:5",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 881,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9780:10:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 877,
                                  "name": "ERC20InvalidApprover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 187,
                                  "src": "9759:20:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                    "typeString": "function (address) pure returns (error)"
                                  }
                                },
                                "id": 882,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9759:32:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 883,
                              "nodeType": "RevertStatement",
                              "src": "9752:39:5"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 886,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 864,
                            "src": "9815:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9834:1:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9826:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 887,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "9826:7:5",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 890,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9826:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9815:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 900,
                        "nodeType": "IfStatement",
                        "src": "9811:90:5",
                        "trueBody": {
                          "id": 899,
                          "nodeType": "Block",
                          "src": "9838:63:5",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 895,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9887:1:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 894,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9879:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 893,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9879:7:5",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 896,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9879:10:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 892,
                                  "name": "ERC20InvalidSpender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 192,
                                  "src": "9859:19:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                    "typeString": "function (address) pure returns (error)"
                                  }
                                },
                                "id": 897,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9859:31:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 898,
                              "nodeType": "RevertStatement",
                              "src": "9852:38:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 901,
                                "name": "_allowances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 482,
                                "src": "9910:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 904,
                              "indexExpression": {
                                "id": 902,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 862,
                                "src": "9922:5:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9910:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 905,
                            "indexExpression": {
                              "id": 903,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 864,
                              "src": "9929:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9910:27:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 906,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 866,
                            "src": "9940:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9910:35:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 908,
                        "nodeType": "ExpressionStatement",
                        "src": "9910:35:5"
                      },
                      {
                        "condition": {
                          "id": 909,
                          "name": "emitEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 868,
                          "src": "9959:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 917,
                        "nodeType": "IfStatement",
                        "src": "9955:76:5",
                        "trueBody": {
                          "id": 916,
                          "nodeType": "Block",
                          "src": "9970:61:5",
                          "statements": [
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 911,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 862,
                                    "src": "9998:5:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 912,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 864,
                                    "src": "10005:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 913,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 866,
                                    "src": "10014:5:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 910,
                                  "name": "Approval",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 989,
                                  "src": "9989:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 914,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9989:31:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 915,
                              "nodeType": "EmitStatement",
                              "src": "9984:36:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 860,
                    "nodeType": "StructuredDocumentation",
                    "src": "8764:836:5",
                    "text": " @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."
                  },
                  "id": 919,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nameLocation": "9614:8:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 869,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 862,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "9631:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 919,
                        "src": "9623:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 861,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9623:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 864,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "9646:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 919,
                        "src": "9638:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 863,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9638:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 866,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "9663:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 919,
                        "src": "9655:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 865,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9655:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 868,
                        "mutability": "mutable",
                        "name": "emitEvent",
                        "nameLocation": "9675:9:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 919,
                        "src": "9670:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 867,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9670:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9622:63:5"
                  },
                  "returnParameters": {
                    "id": 870,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9703:0:5"
                  },
                  "scope": 968,
                  "src": "9605:432:5",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 966,
                    "nodeType": "Block",
                    "src": "10408:387:5",
                    "statements": [
                      {
                        "assignments": [
                          930
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 930,
                            "mutability": "mutable",
                            "name": "currentAllowance",
                            "nameLocation": "10426:16:5",
                            "nodeType": "VariableDeclaration",
                            "scope": 966,
                            "src": "10418:24:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 929,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10418:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 935,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 932,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 922,
                              "src": "10455:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 933,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 924,
                              "src": "10462:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 931,
                            "name": "allowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 595,
                            "src": "10445:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view returns (uint256)"
                            }
                          },
                          "id": 934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10445:25:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10418:52:5"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 936,
                            "name": "currentAllowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 930,
                            "src": "10484:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 939,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10508:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 938,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10508:7:5",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  }
                                ],
                                "id": 937,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "10503:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 940,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10503:13:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint256",
                                "typeString": "type(uint256)"
                              }
                            },
                            "id": 941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "10517:3:5",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "10503:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10484:36:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 965,
                        "nodeType": "IfStatement",
                        "src": "10480:309:5",
                        "trueBody": {
                          "id": 964,
                          "nodeType": "Block",
                          "src": "10522:267:5",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 943,
                                  "name": "currentAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 930,
                                  "src": "10540:16:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 944,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 926,
                                  "src": "10559:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10540:24:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 953,
                              "nodeType": "IfStatement",
                              "src": "10536:130:5",
                              "trueBody": {
                                "id": 952,
                                "nodeType": "Block",
                                "src": "10566:100:5",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 947,
                                          "name": "spender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 924,
                                          "src": "10618:7:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 948,
                                          "name": "currentAllowance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 930,
                                          "src": "10627:16:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 949,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 926,
                                          "src": "10645:5:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 946,
                                        "name": "ERC20InsufficientAllowance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 182,
                                        "src": "10591:26:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$",
                                          "typeString": "function (address,uint256,uint256) pure returns (error)"
                                        }
                                      },
                                      "id": 950,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10591:60:5",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 951,
                                    "nodeType": "RevertStatement",
                                    "src": "10584:67:5"
                                  }
                                ]
                              }
                            },
                            {
                              "id": 963,
                              "nodeType": "UncheckedBlock",
                              "src": "10679:100:5",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 955,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 922,
                                        "src": "10716:5:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 956,
                                        "name": "spender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 924,
                                        "src": "10723:7:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 959,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 957,
                                          "name": "currentAllowance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 930,
                                          "src": "10732:16:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 958,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 926,
                                          "src": "10751:5:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "10732:24:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "hexValue": "66616c7365",
                                        "id": 960,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10758:5:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 954,
                                      "name": "_approve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        859,
                                        919
                                      ],
                                      "referencedDeclaration": 919,
                                      "src": "10707:8:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                                        "typeString": "function (address,address,uint256,bool)"
                                      }
                                    },
                                    "id": 961,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10707:57:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 962,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10707:57:5"
                                }
                              ]
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 920,
                    "nodeType": "StructuredDocumentation",
                    "src": "10043:271:5",
                    "text": " @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."
                  },
                  "id": 967,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_spendAllowance",
                  "nameLocation": "10328:15:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 927,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 922,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "10352:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 967,
                        "src": "10344:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 921,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10344:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 924,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "10367:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 967,
                        "src": "10359:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 923,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10359:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 926,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "10384:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 967,
                        "src": "10376:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 925,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10376:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10343:47:5"
                  },
                  "returnParameters": {
                    "id": 928,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10408:0:5"
                  },
                  "scope": 968,
                  "src": "10319:476:5",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 969,
              "src": "1106:9691:5",
              "usedErrors": [
                163,
                168,
                173,
                182,
                187,
                192
              ],
              "usedEvents": [
                980,
                989
              ]
            }
          ],
          "src": "105:10693:5"
        },
        "id": 5
      },
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              1046
            ]
          },
          "id": 1047,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 970,
              "literals": [
                "solidity",
                ">=",
                "0.4",
                ".16"
              ],
              "nodeType": "PragmaDirective",
              "src": "106:25:6"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC20",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 971,
                "nodeType": "StructuredDocumentation",
                "src": "133:71:6",
                "text": " @dev Interface of the ERC-20 standard as defined in the ERC."
              },
              "fullyImplemented": false,
              "id": 1046,
              "linearizedBaseContracts": [
                1046
              ],
              "name": "IERC20",
              "nameLocation": "215:6:6",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 972,
                    "nodeType": "StructuredDocumentation",
                    "src": "228:158:6",
                    "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
                  },
                  "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                  "id": 980,
                  "name": "Transfer",
                  "nameLocation": "397:8:6",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 979,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 974,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "422:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 980,
                        "src": "406:20:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 973,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "406:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 976,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "444:2:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 980,
                        "src": "428:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 975,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "428:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 978,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "456:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 980,
                        "src": "448:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 977,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "448:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "405:57:6"
                  },
                  "src": "391:72:6"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 981,
                    "nodeType": "StructuredDocumentation",
                    "src": "469:148:6",
                    "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
                  },
                  "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
                  "id": 989,
                  "name": "Approval",
                  "nameLocation": "628:8:6",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 988,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 983,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "653:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 989,
                        "src": "637:21:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 982,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "637:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 985,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "676:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 989,
                        "src": "660:23:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 984,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "660:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 987,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "693:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 989,
                        "src": "685:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 986,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "685:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "636:63:6"
                  },
                  "src": "622:78:6"
                },
                {
                  "documentation": {
                    "id": 990,
                    "nodeType": "StructuredDocumentation",
                    "src": "706:65:6",
                    "text": " @dev Returns the value of tokens in existence."
                  },
                  "functionSelector": "18160ddd",
                  "id": 995,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "785:11:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 991,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "796:2:6"
                  },
                  "returnParameters": {
                    "id": 994,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 993,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 995,
                        "src": "822:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 992,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "822:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "821:9:6"
                  },
                  "scope": 1046,
                  "src": "776:55:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 996,
                    "nodeType": "StructuredDocumentation",
                    "src": "837:71:6",
                    "text": " @dev Returns the value of tokens owned by `account`."
                  },
                  "functionSelector": "70a08231",
                  "id": 1003,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "922:9:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 999,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 998,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "940:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1003,
                        "src": "932:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 997,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "932:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "931:17:6"
                  },
                  "returnParameters": {
                    "id": 1002,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1001,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1003,
                        "src": "972:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1000,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "972:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "971:9:6"
                  },
                  "scope": 1046,
                  "src": "913:68:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1004,
                    "nodeType": "StructuredDocumentation",
                    "src": "987:213:6",
                    "text": " @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 1013,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "1214:8:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1009,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1006,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "1231:2:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1013,
                        "src": "1223:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1005,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1223:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1008,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1243:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1013,
                        "src": "1235:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1007,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1235:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1222:27:6"
                  },
                  "returnParameters": {
                    "id": 1012,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1011,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1013,
                        "src": "1268:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1010,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1268:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1267:6:6"
                  },
                  "scope": 1046,
                  "src": "1205:69:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1014,
                    "nodeType": "StructuredDocumentation",
                    "src": "1280:264:6",
                    "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 1023,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nameLocation": "1558:9:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1016,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1576:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1023,
                        "src": "1568:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1015,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1568:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1018,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "1591:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1023,
                        "src": "1583:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1017,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1583:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1567:32:6"
                  },
                  "returnParameters": {
                    "id": 1022,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1021,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1023,
                        "src": "1623:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1020,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1623:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1622:9:6"
                  },
                  "scope": 1046,
                  "src": "1549:83:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1024,
                    "nodeType": "StructuredDocumentation",
                    "src": "1638:667:6",
                    "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 1033,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "2319:7:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1029,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1026,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "2335:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1033,
                        "src": "2327:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1025,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2327:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1028,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2352:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1033,
                        "src": "2344:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1027,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2344:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2326:32:6"
                  },
                  "returnParameters": {
                    "id": 1032,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1031,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1033,
                        "src": "2377:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1030,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2377:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2376:6:6"
                  },
                  "scope": 1046,
                  "src": "2310:73:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1034,
                    "nodeType": "StructuredDocumentation",
                    "src": "2389:297:6",
                    "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "23b872dd",
                  "id": 1045,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "2700:12:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1041,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1036,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2721:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1045,
                        "src": "2713:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1035,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2713:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1038,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2735:2:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1045,
                        "src": "2727:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1037,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2727:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1040,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2747:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1045,
                        "src": "2739:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1039,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2739:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2712:41:6"
                  },
                  "returnParameters": {
                    "id": 1044,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1043,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1045,
                        "src": "2772:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1042,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2772:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2771:6:6"
                  },
                  "scope": 1046,
                  "src": "2691:87:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1047,
              "src": "205:2575:6",
              "usedErrors": [],
              "usedEvents": [
                980,
                989
              ]
            }
          ],
          "src": "106:2675:6"
        },
        "id": 6
      },
      "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol",
          "exportedSymbols": {
            "Context": [
              1442
            ],
            "ERC20": [
              968
            ],
            "ERC20Burnable": [
              1092
            ]
          },
          "id": 1093,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1048,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "124:24:7"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
              "file": "../ERC20.sol",
              "id": 1050,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1093,
              "sourceUnit": 969,
              "src": "150:35:7",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1049,
                    "name": "ERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 968,
                    "src": "158:5:7",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
              "file": "../../../utils/Context.sol",
              "id": 1052,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1093,
              "sourceUnit": 1443,
              "src": "186:51:7",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1051,
                    "name": "Context",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1442,
                    "src": "194:7:7",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1054,
                    "name": "Context",
                    "nameLocations": [
                      "483:7:7"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1442,
                    "src": "483:7:7"
                  },
                  "id": 1055,
                  "nodeType": "InheritanceSpecifier",
                  "src": "483:7:7"
                },
                {
                  "baseName": {
                    "id": 1056,
                    "name": "ERC20",
                    "nameLocations": [
                      "492:5:7"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 968,
                    "src": "492:5:7"
                  },
                  "id": 1057,
                  "nodeType": "InheritanceSpecifier",
                  "src": "492:5:7"
                }
              ],
              "canonicalName": "ERC20Burnable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 1053,
                "nodeType": "StructuredDocumentation",
                "src": "239:208:7",
                "text": " @dev Extension of {ERC20} that allows token holders to destroy both their own\n tokens and those that they have an allowance for, in a way that can be\n recognized off-chain (via event analysis)."
              },
              "fullyImplemented": true,
              "id": 1092,
              "linearizedBaseContracts": [
                1092,
                968,
                193,
                1152,
                1046,
                1442
              ],
              "name": "ERC20Burnable",
              "nameLocation": "466:13:7",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 1069,
                    "nodeType": "Block",
                    "src": "662:43:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 1064,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1424,
                                "src": "678:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 1065,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "678:12:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1066,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1060,
                              "src": "692:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1063,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 841,
                            "src": "672:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 1067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "672:26:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1068,
                        "nodeType": "ExpressionStatement",
                        "src": "672:26:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1058,
                    "nodeType": "StructuredDocumentation",
                    "src": "504:109:7",
                    "text": " @dev Destroys a `value` amount of tokens from the caller.\n See {ERC20-_burn}."
                  },
                  "functionSelector": "42966c68",
                  "id": 1070,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nameLocation": "627:4:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1061,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1060,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "640:5:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1070,
                        "src": "632:13:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1059,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "632:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "631:15:7"
                  },
                  "returnParameters": {
                    "id": 1062,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "662:0:7"
                  },
                  "scope": 1092,
                  "src": "618:87:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1090,
                    "nodeType": "Block",
                    "src": "1086:93:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1079,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1073,
                              "src": "1112:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 1080,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1424,
                                "src": "1121:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 1081,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1121:12:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1082,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1075,
                              "src": "1135:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1078,
                            "name": "_spendAllowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 967,
                            "src": "1096:15:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1096:45:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1084,
                        "nodeType": "ExpressionStatement",
                        "src": "1096:45:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1086,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1073,
                              "src": "1157:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1087,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1075,
                              "src": "1166:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1085,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 841,
                            "src": "1151:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 1088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1151:21:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1089,
                        "nodeType": "ExpressionStatement",
                        "src": "1151:21:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1071,
                    "nodeType": "StructuredDocumentation",
                    "src": "711:305:7",
                    "text": " @dev Destroys a `value` amount of tokens from `account`, deducting from\n the caller's allowance.\n See {ERC20-_burn} and {ERC20-allowance}.\n Requirements:\n - the caller must have allowance for ``accounts``'s tokens of at least\n `value`."
                  },
                  "functionSelector": "79cc6790",
                  "id": 1091,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nameLocation": "1030:8:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1076,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1073,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1047:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1091,
                        "src": "1039:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1072,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1039:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1075,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1064:5:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1091,
                        "src": "1056:13:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1074,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1056:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1038:32:7"
                  },
                  "returnParameters": {
                    "id": 1077,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1086:0:7"
                  },
                  "scope": 1092,
                  "src": "1021:158:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 1093,
              "src": "448:733:7",
              "usedErrors": [
                163,
                168,
                173,
                182,
                187,
                192
              ],
              "usedEvents": [
                980,
                989
              ]
            }
          ],
          "src": "124:1058:7"
        },
        "id": 7
      },
      "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol",
          "exportedSymbols": {
            "ERC20": [
              968
            ],
            "ERC20Pausable": [
              1126
            ],
            "Pausable": [
              1624
            ]
          },
          "id": 1127,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1094,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "124:24:8"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
              "file": "../ERC20.sol",
              "id": 1096,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1127,
              "sourceUnit": 969,
              "src": "150:35:8",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1095,
                    "name": "ERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 968,
                    "src": "158:5:8",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Pausable.sol",
              "file": "../../../utils/Pausable.sol",
              "id": 1098,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1127,
              "sourceUnit": 1625,
              "src": "186:53:8",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1097,
                    "name": "Pausable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1624,
                    "src": "194:8:8",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1100,
                    "name": "ERC20",
                    "nameLocations": [
                      "965:5:8"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 968,
                    "src": "965:5:8"
                  },
                  "id": 1101,
                  "nodeType": "InheritanceSpecifier",
                  "src": "965:5:8"
                },
                {
                  "baseName": {
                    "id": 1102,
                    "name": "Pausable",
                    "nameLocations": [
                      "972:8:8"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1624,
                    "src": "972:8:8"
                  },
                  "id": 1103,
                  "nodeType": "InheritanceSpecifier",
                  "src": "972:8:8"
                }
              ],
              "canonicalName": "ERC20Pausable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 1099,
                "nodeType": "StructuredDocumentation",
                "src": "241:688:8",
                "text": " @dev ERC-20 token with pausable token transfers, minting and burning.\n Useful for scenarios such as preventing trades until the end of an evaluation\n period, or having an emergency switch for freezing all token transfers in the\n event of a large bug.\n IMPORTANT: This contract does not include public pause and unpause functions. In\n addition to inheriting this contract, you must define both functions, invoking the\n {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate\n access control, e.g. using {AccessControl} or {Ownable}. Not doing so will\n make the contract pause mechanism of the contract unreachable, and thus unusable."
              },
              "fullyImplemented": true,
              "id": 1126,
              "linearizedBaseContracts": [
                1126,
                1624,
                968,
                193,
                1152,
                1046,
                1442
              ],
              "name": "ERC20Pausable",
              "nameLocation": "948:13:8",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    775
                  ],
                  "body": {
                    "id": 1124,
                    "nodeType": "Block",
                    "src": "1211:47:8",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1119,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1106,
                              "src": "1235:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1120,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1108,
                              "src": "1241:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1121,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1110,
                              "src": "1245:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 1116,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "1221:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_ERC20Pausable_$1126_$",
                                "typeString": "type(contract super ERC20Pausable)"
                              }
                            },
                            "id": 1118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1227:7:8",
                            "memberName": "_update",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 775,
                            "src": "1221:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1221:30:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1123,
                        "nodeType": "ExpressionStatement",
                        "src": "1221:30:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1104,
                    "nodeType": "StructuredDocumentation",
                    "src": "987:121:8",
                    "text": " @dev See {ERC20-_update}.\n Requirements:\n - the contract must not be paused."
                  },
                  "id": 1125,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 1114,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 1113,
                        "name": "whenNotPaused",
                        "nameLocations": [
                          "1197:13:8"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1549,
                        "src": "1197:13:8"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1197:13:8"
                    }
                  ],
                  "name": "_update",
                  "nameLocation": "1122:7:8",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1112,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1188:8:8"
                  },
                  "parameters": {
                    "id": 1111,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1106,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "1138:4:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1125,
                        "src": "1130:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1105,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1130:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1108,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "1152:2:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1125,
                        "src": "1144:10:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1107,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1144:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1110,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1164:5:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1125,
                        "src": "1156:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1109,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1156:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1129:41:8"
                  },
                  "returnParameters": {
                    "id": 1115,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1211:0:8"
                  },
                  "scope": 1126,
                  "src": "1113:145:8",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 1127,
              "src": "930:330:8",
              "usedErrors": [
                163,
                168,
                173,
                182,
                187,
                192,
                1538,
                1541
              ],
              "usedEvents": [
                980,
                989,
                1530,
                1535
              ]
            }
          ],
          "src": "124:1137:8"
        },
        "id": 8
      },
      "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
          "exportedSymbols": {
            "IERC20": [
              1046
            ],
            "IERC20Metadata": [
              1152
            ]
          },
          "id": 1153,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1128,
              "literals": [
                "solidity",
                ">=",
                "0.6",
                ".2"
              ],
              "nodeType": "PragmaDirective",
              "src": "125:24:9"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
              "file": "../IERC20.sol",
              "id": 1130,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1153,
              "sourceUnit": 1047,
              "src": "151:37:9",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1129,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1046,
                    "src": "159:6:9",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1132,
                    "name": "IERC20",
                    "nameLocations": [
                      "306:6:9"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1046,
                    "src": "306:6:9"
                  },
                  "id": 1133,
                  "nodeType": "InheritanceSpecifier",
                  "src": "306:6:9"
                }
              ],
              "canonicalName": "IERC20Metadata",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1131,
                "nodeType": "StructuredDocumentation",
                "src": "190:87:9",
                "text": " @dev Interface for the optional metadata functions from the ERC-20 standard."
              },
              "fullyImplemented": false,
              "id": 1152,
              "linearizedBaseContracts": [
                1152,
                1046
              ],
              "name": "IERC20Metadata",
              "nameLocation": "288:14:9",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1134,
                    "nodeType": "StructuredDocumentation",
                    "src": "319:54:9",
                    "text": " @dev Returns the name of the token."
                  },
                  "functionSelector": "06fdde03",
                  "id": 1139,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "387:4:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1135,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "391:2:9"
                  },
                  "returnParameters": {
                    "id": 1138,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1137,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1139,
                        "src": "417:13:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1136,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "417:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "416:15:9"
                  },
                  "scope": 1152,
                  "src": "378:54:9",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1140,
                    "nodeType": "StructuredDocumentation",
                    "src": "438:56:9",
                    "text": " @dev Returns the symbol of the token."
                  },
                  "functionSelector": "95d89b41",
                  "id": 1145,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "508:6:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1141,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "514:2:9"
                  },
                  "returnParameters": {
                    "id": 1144,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1143,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1145,
                        "src": "540:13:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1142,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "540:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "539:15:9"
                  },
                  "scope": 1152,
                  "src": "499:56:9",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1146,
                    "nodeType": "StructuredDocumentation",
                    "src": "561:65:9",
                    "text": " @dev Returns the decimals places of the token."
                  },
                  "functionSelector": "313ce567",
                  "id": 1151,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nameLocation": "640:8:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1147,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "648:2:9"
                  },
                  "returnParameters": {
                    "id": 1150,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1149,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1151,
                        "src": "674:5:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1148,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "674:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "673:7:9"
                  },
                  "scope": 1152,
                  "src": "631:50:9",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1153,
              "src": "278:405:9",
              "usedErrors": [],
              "usedEvents": [
                980,
                989
              ]
            }
          ],
          "src": "125:559:9"
        },
        "id": 9
      },
      "@openzeppelin/contracts/utils/Address.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
          "exportedSymbols": {
            "Address": [
              1412
            ],
            "Errors": [
              1464
            ]
          },
          "id": 1413,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1154,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:24:10"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Errors.sol",
              "file": "./Errors.sol",
              "id": 1156,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1413,
              "sourceUnit": 1465,
              "src": "127:36:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1155,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1464,
                    "src": "135:6:10",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Address",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 1157,
                "nodeType": "StructuredDocumentation",
                "src": "165:67:10",
                "text": " @dev Collection of functions related to the address type"
              },
              "fullyImplemented": true,
              "id": 1412,
              "linearizedBaseContracts": [
                1412
              ],
              "name": "Address",
              "nameLocation": "241:7:10",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1158,
                    "nodeType": "StructuredDocumentation",
                    "src": "255:75:10",
                    "text": " @dev There's no code at `target` (it is not a contract)."
                  },
                  "errorSelector": "9996b315",
                  "id": 1162,
                  "name": "AddressEmptyCode",
                  "nameLocation": "341:16:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1161,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1160,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "366:6:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1162,
                        "src": "358:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1159,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "358:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "357:16:10"
                  },
                  "src": "335:39:10"
                },
                {
                  "body": {
                    "id": 1209,
                    "nodeType": "Block",
                    "src": "1361:294:10",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 1172,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1383:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Address_$1412",
                                    "typeString": "library Address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Address_$1412",
                                    "typeString": "library Address"
                                  }
                                ],
                                "id": 1171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1375:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1170,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1375:7:10",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1375:13:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1389:7:10",
                            "memberName": "balance",
                            "nodeType": "MemberAccess",
                            "src": "1375:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 1175,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1167,
                            "src": "1399:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1375:30:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1189,
                        "nodeType": "IfStatement",
                        "src": "1371:125:10",
                        "trueBody": {
                          "id": 1188,
                          "nodeType": "Block",
                          "src": "1407:89:10",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 1182,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -28,
                                          "src": "1463:4:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Address_$1412",
                                            "typeString": "library Address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_Address_$1412",
                                            "typeString": "library Address"
                                          }
                                        ],
                                        "id": 1181,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1455:7:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 1180,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1455:7:10",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 1183,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1455:13:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 1184,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1469:7:10",
                                    "memberName": "balance",
                                    "nodeType": "MemberAccess",
                                    "src": "1455:21:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1185,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1167,
                                    "src": "1478:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1177,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1464,
                                    "src": "1428:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Errors_$1464_$",
                                      "typeString": "type(library Errors)"
                                    }
                                  },
                                  "id": 1179,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1435:19:10",
                                  "memberName": "InsufficientBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1452,
                                  "src": "1428:26:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint256,uint256) pure returns (error)"
                                  }
                                },
                                "id": 1186,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1428:57:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 1187,
                              "nodeType": "RevertStatement",
                              "src": "1421:64:10"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          1191,
                          1193
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1191,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "1512:7:10",
                            "nodeType": "VariableDeclaration",
                            "scope": 1209,
                            "src": "1507:12:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 1190,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1507:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 1193,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "1534:10:10",
                            "nodeType": "VariableDeclaration",
                            "scope": 1209,
                            "src": "1521:23:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 1192,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1521:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1200,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 1198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1578:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "id": 1194,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1165,
                                "src": "1548:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 1195,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1558:4:10",
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "1548:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 1197,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 1196,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1167,
                                "src": "1570:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "1548:29:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 1199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1548:33:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1506:75:10"
                      },
                      {
                        "condition": {
                          "id": 1202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "1595:8:10",
                          "subExpression": {
                            "id": 1201,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1191,
                            "src": "1596:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1208,
                        "nodeType": "IfStatement",
                        "src": "1591:58:10",
                        "trueBody": {
                          "id": 1207,
                          "nodeType": "Block",
                          "src": "1605:44:10",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1204,
                                    "name": "returndata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1193,
                                    "src": "1627:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 1203,
                                  "name": "_revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1411,
                                  "src": "1619:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (bytes memory) pure"
                                  }
                                },
                                "id": 1205,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1619:19:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1206,
                              "nodeType": "ExpressionStatement",
                              "src": "1619:19:10"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1163,
                    "nodeType": "StructuredDocumentation",
                    "src": "380:905:10",
                    "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."
                  },
                  "id": 1210,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sendValue",
                  "nameLocation": "1299:9:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1168,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1165,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "1325:9:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1210,
                        "src": "1309:25:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 1164,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1309:15:10",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1167,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1344:6:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1210,
                        "src": "1336:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1166,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1336:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1308:43:10"
                  },
                  "returnParameters": {
                    "id": 1169,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1361:0:10"
                  },
                  "scope": 1412,
                  "src": "1290:365:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1226,
                    "nodeType": "Block",
                    "src": "2589:62:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1221,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1213,
                              "src": "2628:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1222,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1215,
                              "src": "2636:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 1223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2642:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 1220,
                            "name": "functionCallWithValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1277,
                            "src": "2606:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,uint256) returns (bytes memory)"
                            }
                          },
                          "id": 1224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2606:38:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 1219,
                        "id": 1225,
                        "nodeType": "Return",
                        "src": "2599:45:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1211,
                    "nodeType": "StructuredDocumentation",
                    "src": "1661:834:10",
                    "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {Errors.FailedCall} error.\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert."
                  },
                  "id": 1227,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCall",
                  "nameLocation": "2509:12:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1213,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "2530:6:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1227,
                        "src": "2522:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1212,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2522:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1215,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2551:4:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1227,
                        "src": "2538:17:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1214,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2538:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2521:35:10"
                  },
                  "returnParameters": {
                    "id": 1219,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1218,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1227,
                        "src": "2575:12:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1217,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2575:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2574:14:10"
                  },
                  "scope": 1412,
                  "src": "2500:151:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1276,
                    "nodeType": "Block",
                    "src": "3088:294:10",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 1241,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3110:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Address_$1412",
                                    "typeString": "library Address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Address_$1412",
                                    "typeString": "library Address"
                                  }
                                ],
                                "id": 1240,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3102:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1239,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3102:7:10",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1242,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3102:13:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1243,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3116:7:10",
                            "memberName": "balance",
                            "nodeType": "MemberAccess",
                            "src": "3102:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 1244,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1234,
                            "src": "3126:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3102:29:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1258,
                        "nodeType": "IfStatement",
                        "src": "3098:123:10",
                        "trueBody": {
                          "id": 1257,
                          "nodeType": "Block",
                          "src": "3133:88:10",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 1251,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -28,
                                          "src": "3189:4:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Address_$1412",
                                            "typeString": "library Address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_Address_$1412",
                                            "typeString": "library Address"
                                          }
                                        ],
                                        "id": 1250,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3181:7:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 1249,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3181:7:10",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 1252,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3181:13:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 1253,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3195:7:10",
                                    "memberName": "balance",
                                    "nodeType": "MemberAccess",
                                    "src": "3181:21:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1254,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1234,
                                    "src": "3204:5:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1246,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1464,
                                    "src": "3154:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Errors_$1464_$",
                                      "typeString": "type(library Errors)"
                                    }
                                  },
                                  "id": 1248,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3161:19:10",
                                  "memberName": "InsufficientBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1452,
                                  "src": "3154:26:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint256,uint256) pure returns (error)"
                                  }
                                },
                                "id": 1255,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3154:56:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 1256,
                              "nodeType": "RevertStatement",
                              "src": "3147:63:10"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          1260,
                          1262
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1260,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "3236:7:10",
                            "nodeType": "VariableDeclaration",
                            "scope": 1276,
                            "src": "3231:12:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 1259,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "3231:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 1262,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "3258:10:10",
                            "nodeType": "VariableDeclaration",
                            "scope": 1276,
                            "src": "3245:23:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 1261,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3245:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1269,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1267,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1232,
                              "src": "3298:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "id": 1263,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1230,
                                "src": "3272:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3279:4:10",
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "3272:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 1266,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 1265,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1234,
                                "src": "3291:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "3272:25:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 1268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3272:31:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3230:73:10"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1271,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1230,
                              "src": "3347:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1272,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1260,
                              "src": "3355:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 1273,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1262,
                              "src": "3364:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1270,
                            "name": "verifyCallResultFromTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1369,
                            "src": "3320:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bool,bytes memory) view returns (bytes memory)"
                            }
                          },
                          "id": 1274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3320:55:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 1238,
                        "id": 1275,
                        "nodeType": "Return",
                        "src": "3313:62:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1228,
                    "nodeType": "StructuredDocumentation",
                    "src": "2657:313:10",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`."
                  },
                  "id": 1277,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCallWithValue",
                  "nameLocation": "2984:21:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1235,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1230,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3014:6:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1277,
                        "src": "3006:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1229,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3006:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1232,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3035:4:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1277,
                        "src": "3022:17:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1231,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3022:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1234,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "3049:5:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1277,
                        "src": "3041:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1233,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3041:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3005:50:10"
                  },
                  "returnParameters": {
                    "id": 1238,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1237,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1277,
                        "src": "3074:12:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1236,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3074:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3073:14:10"
                  },
                  "scope": 1412,
                  "src": "2975:407:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1302,
                    "nodeType": "Block",
                    "src": "3621:154:10",
                    "statements": [
                      {
                        "assignments": [
                          1288,
                          1290
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1288,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "3637:7:10",
                            "nodeType": "VariableDeclaration",
                            "scope": 1302,
                            "src": "3632:12:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 1287,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "3632:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 1290,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "3659:10:10",
                            "nodeType": "VariableDeclaration",
                            "scope": 1302,
                            "src": "3646:23:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 1289,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3646:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1295,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1293,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1282,
                              "src": "3691:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 1291,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1280,
                              "src": "3673:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3680:10:10",
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "3673:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 1294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3673:23:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3631:65:10"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1297,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1280,
                              "src": "3740:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1298,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1288,
                              "src": "3748:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 1299,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1290,
                              "src": "3757:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1296,
                            "name": "verifyCallResultFromTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1369,
                            "src": "3713:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bool,bytes memory) view returns (bytes memory)"
                            }
                          },
                          "id": 1300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3713:55:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 1286,
                        "id": 1301,
                        "nodeType": "Return",
                        "src": "3706:62:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1278,
                    "nodeType": "StructuredDocumentation",
                    "src": "3388:128:10",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."
                  },
                  "id": 1303,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionStaticCall",
                  "nameLocation": "3530:18:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1283,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1280,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3557:6:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1303,
                        "src": "3549:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1279,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3549:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1282,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3578:4:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1303,
                        "src": "3565:17:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1281,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3565:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3548:35:10"
                  },
                  "returnParameters": {
                    "id": 1286,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1285,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1303,
                        "src": "3607:12:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1284,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3607:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3606:14:10"
                  },
                  "scope": 1412,
                  "src": "3521:254:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1328,
                    "nodeType": "Block",
                    "src": "4013:156:10",
                    "statements": [
                      {
                        "assignments": [
                          1314,
                          1316
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1314,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "4029:7:10",
                            "nodeType": "VariableDeclaration",
                            "scope": 1328,
                            "src": "4024:12:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 1313,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "4024:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 1316,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "4051:10:10",
                            "nodeType": "VariableDeclaration",
                            "scope": 1328,
                            "src": "4038:23:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 1315,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4038:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1321,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1319,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1308,
                              "src": "4085:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 1317,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1306,
                              "src": "4065:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1318,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4072:12:10",
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "src": "4065:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) returns (bool,bytes memory)"
                            }
                          },
                          "id": 1320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4065:25:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4023:67:10"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1323,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1306,
                              "src": "4134:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1324,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1314,
                              "src": "4142:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 1325,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1316,
                              "src": "4151:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1322,
                            "name": "verifyCallResultFromTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1369,
                            "src": "4107:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bool,bytes memory) view returns (bytes memory)"
                            }
                          },
                          "id": 1326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4107:55:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 1312,
                        "id": 1327,
                        "nodeType": "Return",
                        "src": "4100:62:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1304,
                    "nodeType": "StructuredDocumentation",
                    "src": "3781:130:10",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."
                  },
                  "id": 1329,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionDelegateCall",
                  "nameLocation": "3925:20:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1309,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1306,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3954:6:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1329,
                        "src": "3946:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1305,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3946:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1308,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3975:4:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1329,
                        "src": "3962:17:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1307,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3962:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3945:35:10"
                  },
                  "returnParameters": {
                    "id": 1312,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1311,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1329,
                        "src": "3999:12:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1310,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3999:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3998:14:10"
                  },
                  "scope": 1412,
                  "src": "3916:253:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1368,
                    "nodeType": "Block",
                    "src": "4595:424:10",
                    "statements": [
                      {
                        "condition": {
                          "id": 1342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "4609:8:10",
                          "subExpression": {
                            "id": 1341,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1334,
                            "src": "4610:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1366,
                          "nodeType": "Block",
                          "src": "4669:344:10",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 1357,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1351,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 1348,
                                      "name": "returndata",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1336,
                                      "src": "4857:10:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 1349,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "4868:6:10",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "4857:17:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 1350,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4878:1:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "4857:22:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1356,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "expression": {
                                        "id": 1352,
                                        "name": "target",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1332,
                                        "src": "4883:6:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "id": 1353,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "4890:4:10",
                                      "memberName": "code",
                                      "nodeType": "MemberAccess",
                                      "src": "4883:11:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 1354,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "4895:6:10",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "4883:18:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 1355,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4905:1:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "4883:23:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "4857:49:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1363,
                              "nodeType": "IfStatement",
                              "src": "4853:119:10",
                              "trueBody": {
                                "id": 1362,
                                "nodeType": "Block",
                                "src": "4908:64:10",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 1359,
                                          "name": "target",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1332,
                                          "src": "4950:6:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 1358,
                                        "name": "AddressEmptyCode",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1162,
                                        "src": "4933:16:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                          "typeString": "function (address) pure returns (error)"
                                        }
                                      },
                                      "id": 1360,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4933:24:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 1361,
                                    "nodeType": "RevertStatement",
                                    "src": "4926:31:10"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 1364,
                                "name": "returndata",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1336,
                                "src": "4992:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "functionReturnParameters": 1340,
                              "id": 1365,
                              "nodeType": "Return",
                              "src": "4985:17:10"
                            }
                          ]
                        },
                        "id": 1367,
                        "nodeType": "IfStatement",
                        "src": "4605:408:10",
                        "trueBody": {
                          "id": 1347,
                          "nodeType": "Block",
                          "src": "4619:44:10",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1344,
                                    "name": "returndata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1336,
                                    "src": "4641:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 1343,
                                  "name": "_revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1411,
                                  "src": "4633:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (bytes memory) pure"
                                  }
                                },
                                "id": 1345,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4633:19:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1346,
                              "nodeType": "ExpressionStatement",
                              "src": "4633:19:10"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1330,
                    "nodeType": "StructuredDocumentation",
                    "src": "4175:257:10",
                    "text": " @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n of an unsuccessful call."
                  },
                  "id": 1369,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyCallResultFromTarget",
                  "nameLocation": "4446:26:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1337,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1332,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "4490:6:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1369,
                        "src": "4482:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1331,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4482:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1334,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "4511:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1369,
                        "src": "4506:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1333,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4506:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1336,
                        "mutability": "mutable",
                        "name": "returndata",
                        "nameLocation": "4541:10:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1369,
                        "src": "4528:23:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1335,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4528:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4472:85:10"
                  },
                  "returnParameters": {
                    "id": 1340,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1339,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1369,
                        "src": "4581:12:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1338,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4581:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4580:14:10"
                  },
                  "scope": 1412,
                  "src": "4437:582:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1390,
                    "nodeType": "Block",
                    "src": "5323:122:10",
                    "statements": [
                      {
                        "condition": {
                          "id": 1380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5337:8:10",
                          "subExpression": {
                            "id": 1379,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1372,
                            "src": "5338:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1388,
                          "nodeType": "Block",
                          "src": "5397:42:10",
                          "statements": [
                            {
                              "expression": {
                                "id": 1386,
                                "name": "returndata",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1374,
                                "src": "5418:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "functionReturnParameters": 1378,
                              "id": 1387,
                              "nodeType": "Return",
                              "src": "5411:17:10"
                            }
                          ]
                        },
                        "id": 1389,
                        "nodeType": "IfStatement",
                        "src": "5333:106:10",
                        "trueBody": {
                          "id": 1385,
                          "nodeType": "Block",
                          "src": "5347:44:10",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1382,
                                    "name": "returndata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1374,
                                    "src": "5369:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 1381,
                                  "name": "_revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1411,
                                  "src": "5361:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (bytes memory) pure"
                                  }
                                },
                                "id": 1383,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5361:19:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1384,
                              "nodeType": "ExpressionStatement",
                              "src": "5361:19:10"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1370,
                    "nodeType": "StructuredDocumentation",
                    "src": "5025:191:10",
                    "text": " @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {Errors.FailedCall} error."
                  },
                  "id": 1391,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyCallResult",
                  "nameLocation": "5230:16:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1375,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1372,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "5252:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1391,
                        "src": "5247:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1371,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5247:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1374,
                        "mutability": "mutable",
                        "name": "returndata",
                        "nameLocation": "5274:10:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1391,
                        "src": "5261:23:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1373,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5261:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5246:39:10"
                  },
                  "returnParameters": {
                    "id": 1378,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1377,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1391,
                        "src": "5309:12:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1376,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5309:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5308:14:10"
                  },
                  "scope": 1412,
                  "src": "5221:224:10",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1410,
                    "nodeType": "Block",
                    "src": "5614:379:10",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 1397,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1394,
                              "src": "5690:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 1398,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5701:6:10",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "5690:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5710:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5690:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1408,
                          "nodeType": "Block",
                          "src": "5936:51:10",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 1403,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1464,
                                    "src": "5957:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Errors_$1464_$",
                                      "typeString": "type(library Errors)"
                                    }
                                  },
                                  "id": 1405,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5964:10:10",
                                  "memberName": "FailedCall",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1455,
                                  "src": "5957:17:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 1406,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5957:19:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 1407,
                              "nodeType": "RevertStatement",
                              "src": "5950:26:10"
                            }
                          ]
                        },
                        "id": 1409,
                        "nodeType": "IfStatement",
                        "src": "5686:301:10",
                        "trueBody": {
                          "id": 1402,
                          "nodeType": "Block",
                          "src": "5713:217:10",
                          "statements": [
                            {
                              "AST": {
                                "nativeSrc": "5840:80:10",
                                "nodeType": "YulBlock",
                                "src": "5840:80:10",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "returndata",
                                              "nativeSrc": "5869:10:10",
                                              "nodeType": "YulIdentifier",
                                              "src": "5869:10:10"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "5881:4:10",
                                              "nodeType": "YulLiteral",
                                              "src": "5881:4:10",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nativeSrc": "5865:3:10",
                                            "nodeType": "YulIdentifier",
                                            "src": "5865:3:10"
                                          },
                                          "nativeSrc": "5865:21:10",
                                          "nodeType": "YulFunctionCall",
                                          "src": "5865:21:10"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "returndata",
                                              "nativeSrc": "5894:10:10",
                                              "nodeType": "YulIdentifier",
                                              "src": "5894:10:10"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nativeSrc": "5888:5:10",
                                            "nodeType": "YulIdentifier",
                                            "src": "5888:5:10"
                                          },
                                          "nativeSrc": "5888:17:10",
                                          "nodeType": "YulFunctionCall",
                                          "src": "5888:17:10"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nativeSrc": "5858:6:10",
                                        "nodeType": "YulIdentifier",
                                        "src": "5858:6:10"
                                      },
                                      "nativeSrc": "5858:48:10",
                                      "nodeType": "YulFunctionCall",
                                      "src": "5858:48:10"
                                    },
                                    "nativeSrc": "5858:48:10",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5858:48:10"
                                  }
                                ]
                              },
                              "evmVersion": "paris",
                              "externalReferences": [
                                {
                                  "declaration": 1394,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "5869:10:10",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 1394,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "5894:10:10",
                                  "valueSize": 1
                                }
                              ],
                              "flags": [
                                "memory-safe"
                              ],
                              "id": 1401,
                              "nodeType": "InlineAssembly",
                              "src": "5815:105:10"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1392,
                    "nodeType": "StructuredDocumentation",
                    "src": "5451:103:10",
                    "text": " @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}."
                  },
                  "id": 1411,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_revert",
                  "nameLocation": "5568:7:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1395,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1394,
                        "mutability": "mutable",
                        "name": "returndata",
                        "nameLocation": "5589:10:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1411,
                        "src": "5576:23:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1393,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5576:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5575:25:10"
                  },
                  "returnParameters": {
                    "id": 1396,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5614:0:10"
                  },
                  "scope": 1412,
                  "src": "5559:434:10",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 1413,
              "src": "233:5762:10",
              "usedErrors": [
                1162
              ],
              "usedEvents": []
            }
          ],
          "src": "101:5895:10"
        },
        "id": 10
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
          "exportedSymbols": {
            "Context": [
              1442
            ]
          },
          "id": 1443,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1414,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:24:11"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "canonicalName": "Context",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 1415,
                "nodeType": "StructuredDocumentation",
                "src": "127:496:11",
                "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."
              },
              "fullyImplemented": true,
              "id": 1442,
              "linearizedBaseContracts": [
                1442
              ],
              "name": "Context",
              "nameLocation": "642:7:11",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 1423,
                    "nodeType": "Block",
                    "src": "718:34:11",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 1420,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "735:3:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "739:6:11",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "735:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 1419,
                        "id": 1422,
                        "nodeType": "Return",
                        "src": "728:17:11"
                      }
                    ]
                  },
                  "id": 1424,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nameLocation": "665:10:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1416,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "675:2:11"
                  },
                  "returnParameters": {
                    "id": 1419,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1418,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1424,
                        "src": "709:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1417,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "709:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "708:9:11"
                  },
                  "scope": 1442,
                  "src": "656:96:11",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1432,
                    "nodeType": "Block",
                    "src": "825:32:11",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 1429,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "842:3:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "846:4:11",
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "842:8:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 1428,
                        "id": 1431,
                        "nodeType": "Return",
                        "src": "835:15:11"
                      }
                    ]
                  },
                  "id": 1433,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nameLocation": "767:8:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1425,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "775:2:11"
                  },
                  "returnParameters": {
                    "id": 1428,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1427,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1433,
                        "src": "809:14:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1426,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "809:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "808:16:11"
                  },
                  "scope": 1442,
                  "src": "758:99:11",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1440,
                    "nodeType": "Block",
                    "src": "935:25:11",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "30",
                          "id": 1438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "952:1:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 1437,
                        "id": 1439,
                        "nodeType": "Return",
                        "src": "945:8:11"
                      }
                    ]
                  },
                  "id": 1441,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_contextSuffixLength",
                  "nameLocation": "872:20:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1434,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "892:2:11"
                  },
                  "returnParameters": {
                    "id": 1437,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1436,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1441,
                        "src": "926:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1435,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "926:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "925:9:11"
                  },
                  "scope": 1442,
                  "src": "863:97:11",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 1443,
              "src": "624:338:11",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "101:862:11"
        },
        "id": 11
      },
      "@openzeppelin/contracts/utils/Errors.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Errors.sol",
          "exportedSymbols": {
            "Errors": [
              1464
            ]
          },
          "id": 1465,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1444,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "100:24:12"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Errors",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 1445,
                "nodeType": "StructuredDocumentation",
                "src": "126:284:12",
                "text": " @dev Collection of common custom errors used in multiple contracts\n IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n It is recommended to avoid relying on the error API for critical functionality.\n _Available since v5.1._"
              },
              "fullyImplemented": true,
              "id": 1464,
              "linearizedBaseContracts": [
                1464
              ],
              "name": "Errors",
              "nameLocation": "419:6:12",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1446,
                    "nodeType": "StructuredDocumentation",
                    "src": "432:94:12",
                    "text": " @dev The ETH balance of the account is not enough to perform the operation."
                  },
                  "errorSelector": "cf479181",
                  "id": 1452,
                  "name": "InsufficientBalance",
                  "nameLocation": "537:19:12",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1451,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1448,
                        "mutability": "mutable",
                        "name": "balance",
                        "nameLocation": "565:7:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 1452,
                        "src": "557:15:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1447,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "557:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1450,
                        "mutability": "mutable",
                        "name": "needed",
                        "nameLocation": "582:6:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 1452,
                        "src": "574:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1449,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "574:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "556:33:12"
                  },
                  "src": "531:59:12"
                },
                {
                  "documentation": {
                    "id": 1453,
                    "nodeType": "StructuredDocumentation",
                    "src": "596:89:12",
                    "text": " @dev A call to an address target failed. The target may have reverted."
                  },
                  "errorSelector": "d6bda275",
                  "id": 1455,
                  "name": "FailedCall",
                  "nameLocation": "696:10:12",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1454,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "706:2:12"
                  },
                  "src": "690:19:12"
                },
                {
                  "documentation": {
                    "id": 1456,
                    "nodeType": "StructuredDocumentation",
                    "src": "715:46:12",
                    "text": " @dev The deployment failed."
                  },
                  "errorSelector": "b06ebf3d",
                  "id": 1458,
                  "name": "FailedDeployment",
                  "nameLocation": "772:16:12",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1457,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "788:2:12"
                  },
                  "src": "766:25:12"
                },
                {
                  "documentation": {
                    "id": 1459,
                    "nodeType": "StructuredDocumentation",
                    "src": "797:58:12",
                    "text": " @dev A necessary precompile is missing."
                  },
                  "errorSelector": "42b01bce",
                  "id": 1463,
                  "name": "MissingPrecompile",
                  "nameLocation": "866:17:12",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1462,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1461,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1463,
                        "src": "884:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1460,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "884:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "883:9:12"
                  },
                  "src": "860:33:12"
                }
              ],
              "scope": 1465,
              "src": "411:484:12",
              "usedErrors": [
                1452,
                1455,
                1458,
                1463
              ],
              "usedEvents": []
            }
          ],
          "src": "100:796:12"
        },
        "id": 12
      },
      "@openzeppelin/contracts/utils/Panic.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Panic.sol",
          "exportedSymbols": {
            "Panic": [
              1516
            ]
          },
          "id": 1517,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1466,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "99:24:13"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Panic",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 1467,
                "nodeType": "StructuredDocumentation",
                "src": "125:489:13",
                "text": " @dev Helper library for emitting standardized panic codes.\n ```solidity\n contract Example {\n      using Panic for uint256;\n      // Use any of the declared internal constants\n      function foo() { Panic.GENERIC.panic(); }\n      // Alternatively\n      function foo() { Panic.panic(Panic.GENERIC); }\n }\n ```\n Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n _Available since v5.1._"
              },
              "fullyImplemented": true,
              "id": 1516,
              "linearizedBaseContracts": [
                1516
              ],
              "name": "Panic",
              "nameLocation": "665:5:13",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "documentation": {
                    "id": 1468,
                    "nodeType": "StructuredDocumentation",
                    "src": "677:36:13",
                    "text": "@dev generic / unspecified error"
                  },
                  "id": 1471,
                  "mutability": "constant",
                  "name": "GENERIC",
                  "nameLocation": "744:7:13",
                  "nodeType": "VariableDeclaration",
                  "scope": 1516,
                  "src": "718:40:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1469,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "718:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783030",
                    "id": 1470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "754:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0x00"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 1472,
                    "nodeType": "StructuredDocumentation",
                    "src": "764:37:13",
                    "text": "@dev used by the assert() builtin"
                  },
                  "id": 1475,
                  "mutability": "constant",
                  "name": "ASSERT",
                  "nameLocation": "832:6:13",
                  "nodeType": "VariableDeclaration",
                  "scope": 1516,
                  "src": "806:39:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1473,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "806:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783031",
                    "id": 1474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "841:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "0x01"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 1476,
                    "nodeType": "StructuredDocumentation",
                    "src": "851:41:13",
                    "text": "@dev arithmetic underflow or overflow"
                  },
                  "id": 1479,
                  "mutability": "constant",
                  "name": "UNDER_OVERFLOW",
                  "nameLocation": "923:14:13",
                  "nodeType": "VariableDeclaration",
                  "scope": 1516,
                  "src": "897:47:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1477,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "897:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783131",
                    "id": 1478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "940:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_17_by_1",
                      "typeString": "int_const 17"
                    },
                    "value": "0x11"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 1480,
                    "nodeType": "StructuredDocumentation",
                    "src": "950:35:13",
                    "text": "@dev division or modulo by zero"
                  },
                  "id": 1483,
                  "mutability": "constant",
                  "name": "DIVISION_BY_ZERO",
                  "nameLocation": "1016:16:13",
                  "nodeType": "VariableDeclaration",
                  "scope": 1516,
                  "src": "990:49:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1481,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "990:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783132",
                    "id": 1482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1035:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_18_by_1",
                      "typeString": "int_const 18"
                    },
                    "value": "0x12"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 1484,
                    "nodeType": "StructuredDocumentation",
                    "src": "1045:30:13",
                    "text": "@dev enum conversion error"
                  },
                  "id": 1487,
                  "mutability": "constant",
                  "name": "ENUM_CONVERSION_ERROR",
                  "nameLocation": "1106:21:13",
                  "nodeType": "VariableDeclaration",
                  "scope": 1516,
                  "src": "1080:54:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1485,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1080:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783231",
                    "id": 1486,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1130:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_33_by_1",
                      "typeString": "int_const 33"
                    },
                    "value": "0x21"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 1488,
                    "nodeType": "StructuredDocumentation",
                    "src": "1140:36:13",
                    "text": "@dev invalid encoding in storage"
                  },
                  "id": 1491,
                  "mutability": "constant",
                  "name": "STORAGE_ENCODING_ERROR",
                  "nameLocation": "1207:22:13",
                  "nodeType": "VariableDeclaration",
                  "scope": 1516,
                  "src": "1181:55:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1489,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1181:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783232",
                    "id": 1490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1232:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_34_by_1",
                      "typeString": "int_const 34"
                    },
                    "value": "0x22"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 1492,
                    "nodeType": "StructuredDocumentation",
                    "src": "1242:24:13",
                    "text": "@dev empty array pop"
                  },
                  "id": 1495,
                  "mutability": "constant",
                  "name": "EMPTY_ARRAY_POP",
                  "nameLocation": "1297:15:13",
                  "nodeType": "VariableDeclaration",
                  "scope": 1516,
                  "src": "1271:48:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1493,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1271:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783331",
                    "id": 1494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1315:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_49_by_1",
                      "typeString": "int_const 49"
                    },
                    "value": "0x31"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 1496,
                    "nodeType": "StructuredDocumentation",
                    "src": "1325:35:13",
                    "text": "@dev array out of bounds access"
                  },
                  "id": 1499,
                  "mutability": "constant",
                  "name": "ARRAY_OUT_OF_BOUNDS",
                  "nameLocation": "1391:19:13",
                  "nodeType": "VariableDeclaration",
                  "scope": 1516,
                  "src": "1365:52:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1497,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1365:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783332",
                    "id": 1498,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1413:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_50_by_1",
                      "typeString": "int_const 50"
                    },
                    "value": "0x32"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 1500,
                    "nodeType": "StructuredDocumentation",
                    "src": "1423:65:13",
                    "text": "@dev resource error (too large allocation or too large array)"
                  },
                  "id": 1503,
                  "mutability": "constant",
                  "name": "RESOURCE_ERROR",
                  "nameLocation": "1519:14:13",
                  "nodeType": "VariableDeclaration",
                  "scope": 1516,
                  "src": "1493:47:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1501,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1493:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783431",
                    "id": 1502,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1536:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_65_by_1",
                      "typeString": "int_const 65"
                    },
                    "value": "0x41"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 1504,
                    "nodeType": "StructuredDocumentation",
                    "src": "1546:42:13",
                    "text": "@dev calling invalid internal function"
                  },
                  "id": 1507,
                  "mutability": "constant",
                  "name": "INVALID_INTERNAL_FUNCTION",
                  "nameLocation": "1619:25:13",
                  "nodeType": "VariableDeclaration",
                  "scope": 1516,
                  "src": "1593:58:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1505,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1593:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783531",
                    "id": 1506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1647:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_81_by_1",
                      "typeString": "int_const 81"
                    },
                    "value": "0x51"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1514,
                    "nodeType": "Block",
                    "src": "1819:151:13",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "1854:110:13",
                          "nodeType": "YulBlock",
                          "src": "1854:110:13",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1875:4:13",
                                    "nodeType": "YulLiteral",
                                    "src": "1875:4:13",
                                    "type": "",
                                    "value": "0x00"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1881:10:13",
                                    "nodeType": "YulLiteral",
                                    "src": "1881:10:13",
                                    "type": "",
                                    "value": "0x4e487b71"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "1868:6:13",
                                  "nodeType": "YulIdentifier",
                                  "src": "1868:6:13"
                                },
                                "nativeSrc": "1868:24:13",
                                "nodeType": "YulFunctionCall",
                                "src": "1868:24:13"
                              },
                              "nativeSrc": "1868:24:13",
                              "nodeType": "YulExpressionStatement",
                              "src": "1868:24:13"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1912:4:13",
                                    "nodeType": "YulLiteral",
                                    "src": "1912:4:13",
                                    "type": "",
                                    "value": "0x20"
                                  },
                                  {
                                    "name": "code",
                                    "nativeSrc": "1918:4:13",
                                    "nodeType": "YulIdentifier",
                                    "src": "1918:4:13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "1905:6:13",
                                  "nodeType": "YulIdentifier",
                                  "src": "1905:6:13"
                                },
                                "nativeSrc": "1905:18:13",
                                "nodeType": "YulFunctionCall",
                                "src": "1905:18:13"
                              },
                              "nativeSrc": "1905:18:13",
                              "nodeType": "YulExpressionStatement",
                              "src": "1905:18:13"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1943:4:13",
                                    "nodeType": "YulLiteral",
                                    "src": "1943:4:13",
                                    "type": "",
                                    "value": "0x1c"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1949:4:13",
                                    "nodeType": "YulLiteral",
                                    "src": "1949:4:13",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nativeSrc": "1936:6:13",
                                  "nodeType": "YulIdentifier",
                                  "src": "1936:6:13"
                                },
                                "nativeSrc": "1936:18:13",
                                "nodeType": "YulFunctionCall",
                                "src": "1936:18:13"
                              },
                              "nativeSrc": "1936:18:13",
                              "nodeType": "YulExpressionStatement",
                              "src": "1936:18:13"
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 1510,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1918:4:13",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 1513,
                        "nodeType": "InlineAssembly",
                        "src": "1829:135:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1508,
                    "nodeType": "StructuredDocumentation",
                    "src": "1658:113:13",
                    "text": "@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes."
                  },
                  "id": 1515,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "panic",
                  "nameLocation": "1785:5:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1511,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1510,
                        "mutability": "mutable",
                        "name": "code",
                        "nameLocation": "1799:4:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 1515,
                        "src": "1791:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1509,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1791:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1790:14:13"
                  },
                  "returnParameters": {
                    "id": 1512,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1819:0:13"
                  },
                  "scope": 1516,
                  "src": "1776:194:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 1517,
              "src": "657:1315:13",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "99:1874:13"
        },
        "id": 13
      },
      "@openzeppelin/contracts/utils/Pausable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Pausable.sol",
          "exportedSymbols": {
            "Context": [
              1442
            ],
            "Pausable": [
              1624
            ]
          },
          "id": 1625,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1518,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "102:24:14"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
              "file": "../utils/Context.sol",
              "id": 1520,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1625,
              "sourceUnit": 1443,
              "src": "128:45:14",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1519,
                    "name": "Context",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1442,
                    "src": "136:7:14",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1522,
                    "name": "Context",
                    "nameLocations": [
                      "645:7:14"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1442,
                    "src": "645:7:14"
                  },
                  "id": 1523,
                  "nodeType": "InheritanceSpecifier",
                  "src": "645:7:14"
                }
              ],
              "canonicalName": "Pausable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 1521,
                "nodeType": "StructuredDocumentation",
                "src": "175:439:14",
                "text": " @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place."
              },
              "fullyImplemented": true,
              "id": 1624,
              "linearizedBaseContracts": [
                1624,
                1442
              ],
              "name": "Pausable",
              "nameLocation": "633:8:14",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 1525,
                  "mutability": "mutable",
                  "name": "_paused",
                  "nameLocation": "672:7:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 1624,
                  "src": "659:20:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1524,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "659:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1526,
                    "nodeType": "StructuredDocumentation",
                    "src": "686:73:14",
                    "text": " @dev Emitted when the pause is triggered by `account`."
                  },
                  "eventSelector": "62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258",
                  "id": 1530,
                  "name": "Paused",
                  "nameLocation": "770:6:14",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1529,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1528,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "785:7:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 1530,
                        "src": "777:15:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1527,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "777:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "776:17:14"
                  },
                  "src": "764:30:14"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1531,
                    "nodeType": "StructuredDocumentation",
                    "src": "800:70:14",
                    "text": " @dev Emitted when the pause is lifted by `account`."
                  },
                  "eventSelector": "5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa",
                  "id": 1535,
                  "name": "Unpaused",
                  "nameLocation": "881:8:14",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1534,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1533,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "898:7:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 1535,
                        "src": "890:15:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1532,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "890:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "889:17:14"
                  },
                  "src": "875:32:14"
                },
                {
                  "documentation": {
                    "id": 1536,
                    "nodeType": "StructuredDocumentation",
                    "src": "913:76:14",
                    "text": " @dev The operation failed because the contract is paused."
                  },
                  "errorSelector": "d93c0665",
                  "id": 1538,
                  "name": "EnforcedPause",
                  "nameLocation": "1000:13:14",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1537,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1013:2:14"
                  },
                  "src": "994:22:14"
                },
                {
                  "documentation": {
                    "id": 1539,
                    "nodeType": "StructuredDocumentation",
                    "src": "1022:80:14",
                    "text": " @dev The operation failed because the contract is not paused."
                  },
                  "errorSelector": "8dfc202b",
                  "id": 1541,
                  "name": "ExpectedPause",
                  "nameLocation": "1113:13:14",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1540,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1126:2:14"
                  },
                  "src": "1107:22:14"
                },
                {
                  "body": {
                    "id": 1548,
                    "nodeType": "Block",
                    "src": "1340:47:14",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1544,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1578,
                            "src": "1350:17:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 1545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1350:19:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1546,
                        "nodeType": "ExpressionStatement",
                        "src": "1350:19:14"
                      },
                      {
                        "id": 1547,
                        "nodeType": "PlaceholderStatement",
                        "src": "1379:1:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1542,
                    "nodeType": "StructuredDocumentation",
                    "src": "1135:175:14",
                    "text": " @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused."
                  },
                  "id": 1549,
                  "name": "whenNotPaused",
                  "nameLocation": "1324:13:14",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 1543,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1337:2:14"
                  },
                  "src": "1315:72:14",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1556,
                    "nodeType": "Block",
                    "src": "1587:44:14",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1552,
                            "name": "_requirePaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1591,
                            "src": "1597:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 1553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1597:16:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1554,
                        "nodeType": "ExpressionStatement",
                        "src": "1597:16:14"
                      },
                      {
                        "id": 1555,
                        "nodeType": "PlaceholderStatement",
                        "src": "1623:1:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1550,
                    "nodeType": "StructuredDocumentation",
                    "src": "1393:167:14",
                    "text": " @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused."
                  },
                  "id": 1557,
                  "name": "whenPaused",
                  "nameLocation": "1574:10:14",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 1551,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1584:2:14"
                  },
                  "src": "1565:66:14",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1565,
                    "nodeType": "Block",
                    "src": "1779:31:14",
                    "statements": [
                      {
                        "expression": {
                          "id": 1563,
                          "name": "_paused",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1525,
                          "src": "1796:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1562,
                        "id": 1564,
                        "nodeType": "Return",
                        "src": "1789:14:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1558,
                    "nodeType": "StructuredDocumentation",
                    "src": "1637:84:14",
                    "text": " @dev Returns true if the contract is paused, and false otherwise."
                  },
                  "functionSelector": "5c975abb",
                  "id": 1566,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "paused",
                  "nameLocation": "1735:6:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1559,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1741:2:14"
                  },
                  "returnParameters": {
                    "id": 1562,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1561,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1566,
                        "src": "1773:4:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1560,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1773:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1772:6:14"
                  },
                  "scope": 1624,
                  "src": "1726:84:14",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1577,
                    "nodeType": "Block",
                    "src": "1929:77:14",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1570,
                            "name": "paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1566,
                            "src": "1943:6:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                              "typeString": "function () view returns (bool)"
                            }
                          },
                          "id": 1571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1943:8:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1576,
                        "nodeType": "IfStatement",
                        "src": "1939:61:14",
                        "trueBody": {
                          "id": 1575,
                          "nodeType": "Block",
                          "src": "1953:47:14",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 1572,
                                  "name": "EnforcedPause",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1538,
                                  "src": "1974:13:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 1573,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1974:15:14",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 1574,
                              "nodeType": "RevertStatement",
                              "src": "1967:22:14"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1567,
                    "nodeType": "StructuredDocumentation",
                    "src": "1816:57:14",
                    "text": " @dev Throws if the contract is paused."
                  },
                  "id": 1578,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_requireNotPaused",
                  "nameLocation": "1887:17:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1568,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1904:2:14"
                  },
                  "returnParameters": {
                    "id": 1569,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1929:0:14"
                  },
                  "scope": 1624,
                  "src": "1878:128:14",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1590,
                    "nodeType": "Block",
                    "src": "2126:78:14",
                    "statements": [
                      {
                        "condition": {
                          "id": 1584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "2140:9:14",
                          "subExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 1582,
                              "name": "paused",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1566,
                              "src": "2141:6:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                "typeString": "function () view returns (bool)"
                              }
                            },
                            "id": 1583,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2141:8:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1589,
                        "nodeType": "IfStatement",
                        "src": "2136:62:14",
                        "trueBody": {
                          "id": 1588,
                          "nodeType": "Block",
                          "src": "2151:47:14",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 1585,
                                  "name": "ExpectedPause",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1541,
                                  "src": "2172:13:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 1586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2172:15:14",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 1587,
                              "nodeType": "RevertStatement",
                              "src": "2165:22:14"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1579,
                    "nodeType": "StructuredDocumentation",
                    "src": "2012:61:14",
                    "text": " @dev Throws if the contract is not paused."
                  },
                  "id": 1591,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_requirePaused",
                  "nameLocation": "2087:14:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1580,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2101:2:14"
                  },
                  "returnParameters": {
                    "id": 1581,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2126:0:14"
                  },
                  "scope": 1624,
                  "src": "2078:126:14",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1606,
                    "nodeType": "Block",
                    "src": "2388:66:14",
                    "statements": [
                      {
                        "expression": {
                          "id": 1599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1597,
                            "name": "_paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1525,
                            "src": "2398:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 1598,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2408:4:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "2398:14:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1600,
                        "nodeType": "ExpressionStatement",
                        "src": "2398:14:14"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 1602,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1424,
                                "src": "2434:10:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 1603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2434:12:14",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1601,
                            "name": "Paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1530,
                            "src": "2427:6:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 1604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2427:20:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1605,
                        "nodeType": "EmitStatement",
                        "src": "2422:25:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1592,
                    "nodeType": "StructuredDocumentation",
                    "src": "2210:124:14",
                    "text": " @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused."
                  },
                  "id": 1607,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 1595,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 1594,
                        "name": "whenNotPaused",
                        "nameLocations": [
                          "2374:13:14"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1549,
                        "src": "2374:13:14"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2374:13:14"
                    }
                  ],
                  "name": "_pause",
                  "nameLocation": "2348:6:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1593,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2354:2:14"
                  },
                  "returnParameters": {
                    "id": 1596,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2388:0:14"
                  },
                  "scope": 1624,
                  "src": "2339:115:14",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1622,
                    "nodeType": "Block",
                    "src": "2634:69:14",
                    "statements": [
                      {
                        "expression": {
                          "id": 1615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1613,
                            "name": "_paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1525,
                            "src": "2644:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 1614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2654:5:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "2644:15:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1616,
                        "nodeType": "ExpressionStatement",
                        "src": "2644:15:14"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 1618,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1424,
                                "src": "2683:10:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 1619,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2683:12:14",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1617,
                            "name": "Unpaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1535,
                            "src": "2674:8:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 1620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2674:22:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1621,
                        "nodeType": "EmitStatement",
                        "src": "2669:27:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1608,
                    "nodeType": "StructuredDocumentation",
                    "src": "2460:121:14",
                    "text": " @dev Returns to normal state.\n Requirements:\n - The contract must be paused."
                  },
                  "id": 1623,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 1611,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 1610,
                        "name": "whenPaused",
                        "nameLocations": [
                          "2623:10:14"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1557,
                        "src": "2623:10:14"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2623:10:14"
                    }
                  ],
                  "name": "_unpause",
                  "nameLocation": "2595:8:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1609,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2603:2:14"
                  },
                  "returnParameters": {
                    "id": 1612,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2634:0:14"
                  },
                  "scope": 1624,
                  "src": "2586:117:14",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 1625,
              "src": "615:2090:14",
              "usedErrors": [
                1538,
                1541
              ],
              "usedEvents": [
                1530,
                1535
              ]
            }
          ],
          "src": "102:2604:14"
        },
        "id": 14
      },
      "@openzeppelin/contracts/utils/Strings.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
          "exportedSymbols": {
            "Math": [
              4683
            ],
            "SafeCast": [
              6448
            ],
            "SignedMath": [
              6592
            ],
            "Strings": [
              3026
            ]
          },
          "id": 3027,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1626,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:24:15"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/math/Math.sol",
              "file": "./math/Math.sol",
              "id": 1628,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3027,
              "sourceUnit": 4684,
              "src": "127:37:15",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1627,
                    "name": "Math",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4683,
                    "src": "135:4:15",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/math/SafeCast.sol",
              "file": "./math/SafeCast.sol",
              "id": 1630,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3027,
              "sourceUnit": 6449,
              "src": "165:45:15",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1629,
                    "name": "SafeCast",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6448,
                    "src": "173:8:15",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/math/SignedMath.sol",
              "file": "./math/SignedMath.sol",
              "id": 1632,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3027,
              "sourceUnit": 6593,
              "src": "211:49:15",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1631,
                    "name": "SignedMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6592,
                    "src": "219:10:15",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Strings",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 1633,
                "nodeType": "StructuredDocumentation",
                "src": "262:34:15",
                "text": " @dev String operations."
              },
              "fullyImplemented": true,
              "id": 3026,
              "linearizedBaseContracts": [
                3026
              ],
              "name": "Strings",
              "nameLocation": "305:7:15",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 1635,
                  "libraryName": {
                    "id": 1634,
                    "name": "SafeCast",
                    "nameLocations": [
                      "325:8:15"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 6448,
                    "src": "325:8:15"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "319:21:15"
                },
                {
                  "constant": true,
                  "id": 1638,
                  "mutability": "constant",
                  "name": "HEX_DIGITS",
                  "nameLocation": "371:10:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3026,
                  "src": "346:56:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes16",
                    "typeString": "bytes16"
                  },
                  "typeName": {
                    "id": 1636,
                    "name": "bytes16",
                    "nodeType": "ElementaryTypeName",
                    "src": "346:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes16",
                      "typeString": "bytes16"
                    }
                  },
                  "value": {
                    "hexValue": "30313233343536373839616263646566",
                    "id": 1637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "384:18:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f",
                      "typeString": "literal_string \"0123456789abcdef\""
                    },
                    "value": "0123456789abcdef"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 1641,
                  "mutability": "constant",
                  "name": "ADDRESS_LENGTH",
                  "nameLocation": "431:14:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3026,
                  "src": "408:42:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1639,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "408:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "3230",
                    "id": 1640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "448:2:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_20_by_1",
                      "typeString": "int_const 20"
                    },
                    "value": "20"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 1677,
                  "mutability": "constant",
                  "name": "SPECIAL_CHARS_LOOKUP",
                  "nameLocation": "481:20:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3026,
                  "src": "456:302:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1642,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "456:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_4951760157141521116776380160_by_1",
                      "typeString": "int_const 4951760157141521116776380160"
                    },
                    "id": 1676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_rational_17179883264_by_1",
                        "typeString": "int_const 17179883264"
                      },
                      "id": 1671,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_rational_14080_by_1",
                          "typeString": "int_const 14080"
                        },
                        "id": 1666,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_rational_5888_by_1",
                            "typeString": "int_const 5888"
                          },
                          "id": 1661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_rational_1792_by_1",
                              "typeString": "int_const 1792"
                            },
                            "id": 1656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_rational_768_by_1",
                                "typeString": "int_const 768"
                              },
                              "id": 1651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_256_by_1",
                                      "typeString": "int_const 256"
                                    },
                                    "id": 1645,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 1643,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "513:1:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "30783038",
                                      "id": 1644,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "518:4:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "0x08"
                                    },
                                    "src": "513:9:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_256_by_1",
                                      "typeString": "int_const 256"
                                    }
                                  }
                                ],
                                "id": 1646,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "512:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_256_by_1",
                                  "typeString": "int_const 256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "|",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_512_by_1",
                                      "typeString": "int_const 512"
                                    },
                                    "id": 1649,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 1647,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "552:1:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "30783039",
                                      "id": 1648,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "557:4:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_9_by_1",
                                        "typeString": "int_const 9"
                                      },
                                      "value": "0x09"
                                    },
                                    "src": "552:9:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_512_by_1",
                                      "typeString": "int_const 512"
                                    }
                                  }
                                ],
                                "id": 1650,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "551:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_512_by_1",
                                  "typeString": "int_const 512"
                                }
                              },
                              "src": "512:50:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_768_by_1",
                                "typeString": "int_const 768"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1024_by_1",
                                    "typeString": "int_const 1024"
                                  },
                                  "id": 1654,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 1652,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "585:1:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "30783061",
                                    "id": 1653,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "590:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "0x0a"
                                  },
                                  "src": "585:9:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1024_by_1",
                                    "typeString": "int_const 1024"
                                  }
                                }
                              ],
                              "id": 1655,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "584:11:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1024_by_1",
                                "typeString": "int_const 1024"
                              }
                            },
                            "src": "512:83:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1792_by_1",
                              "typeString": "int_const 1792"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "|",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_rational_4096_by_1",
                                  "typeString": "int_const 4096"
                                },
                                "id": 1659,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "31",
                                  "id": 1657,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "622:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<<",
                                "rightExpression": {
                                  "hexValue": "30783063",
                                  "id": 1658,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "627:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_12_by_1",
                                    "typeString": "int_const 12"
                                  },
                                  "value": "0x0c"
                                },
                                "src": "622:9:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4096_by_1",
                                  "typeString": "int_const 4096"
                                }
                              }
                            ],
                            "id": 1660,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "621:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4096_by_1",
                              "typeString": "int_const 4096"
                            }
                          },
                          "src": "512:120:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_5888_by_1",
                            "typeString": "int_const 5888"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "|",
                        "rightExpression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_rational_8192_by_1",
                                "typeString": "int_const 8192"
                              },
                              "id": 1664,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "31",
                                "id": 1662,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "661:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<<",
                              "rightExpression": {
                                "hexValue": "30783064",
                                "id": 1663,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "666:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_13_by_1",
                                  "typeString": "int_const 13"
                                },
                                "value": "0x0d"
                              },
                              "src": "661:9:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_8192_by_1",
                                "typeString": "int_const 8192"
                              }
                            }
                          ],
                          "id": 1665,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "660:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8192_by_1",
                            "typeString": "int_const 8192"
                          }
                        },
                        "src": "512:159:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_14080_by_1",
                          "typeString": "int_const 14080"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "|",
                      "rightExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_rational_17179869184_by_1",
                              "typeString": "int_const 17179869184"
                            },
                            "id": 1669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "31",
                              "id": 1667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "706:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "30783232",
                              "id": 1668,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "711:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_34_by_1",
                                "typeString": "int_const 34"
                              },
                              "value": "0x22"
                            },
                            "src": "706:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_17179869184_by_1",
                              "typeString": "int_const 17179869184"
                            }
                          }
                        ],
                        "id": 1670,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "705:11:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_17179869184_by_1",
                          "typeString": "int_const 17179869184"
                        }
                      },
                      "src": "512:204:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_17179883264_by_1",
                        "typeString": "int_const 17179883264"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "|",
                    "rightExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_rational_4951760157141521099596496896_by_1",
                            "typeString": "int_const 4951760157141521099596496896"
                          },
                          "id": 1674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "31",
                            "id": 1672,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "748:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "hexValue": "30783563",
                            "id": 1673,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "753:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_92_by_1",
                              "typeString": "int_const 92"
                            },
                            "value": "0x5c"
                          },
                          "src": "748:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4951760157141521099596496896_by_1",
                            "typeString": "int_const 4951760157141521099596496896"
                          }
                        }
                      ],
                      "id": 1675,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "747:11:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4951760157141521099596496896_by_1",
                        "typeString": "int_const 4951760157141521099596496896"
                      }
                    },
                    "src": "512:246:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4951760157141521116776380160_by_1",
                      "typeString": "int_const 4951760157141521116776380160"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "documentation": {
                    "id": 1678,
                    "nodeType": "StructuredDocumentation",
                    "src": "778:81:15",
                    "text": " @dev The `value` string doesn't fit in the specified `length`."
                  },
                  "errorSelector": "e22e27eb",
                  "id": 1684,
                  "name": "StringsInsufficientHexLength",
                  "nameLocation": "870:28:15",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1683,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1680,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "907:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 1684,
                        "src": "899:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1679,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "899:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1682,
                        "mutability": "mutable",
                        "name": "length",
                        "nameLocation": "922:6:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 1684,
                        "src": "914:14:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1681,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "914:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "898:31:15"
                  },
                  "src": "864:66:15"
                },
                {
                  "documentation": {
                    "id": 1685,
                    "nodeType": "StructuredDocumentation",
                    "src": "936:108:15",
                    "text": " @dev The string being parsed contains characters that are not in scope of the given base."
                  },
                  "errorSelector": "94e2737e",
                  "id": 1687,
                  "name": "StringsInvalidChar",
                  "nameLocation": "1055:18:15",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1686,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1073:2:15"
                  },
                  "src": "1049:27:15"
                },
                {
                  "documentation": {
                    "id": 1688,
                    "nodeType": "StructuredDocumentation",
                    "src": "1082:84:15",
                    "text": " @dev The string being parsed is not a properly formatted address."
                  },
                  "errorSelector": "1d15ae44",
                  "id": 1690,
                  "name": "StringsInvalidAddressFormat",
                  "nameLocation": "1177:27:15",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1689,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1204:2:15"
                  },
                  "src": "1171:36:15"
                },
                {
                  "body": {
                    "id": 1737,
                    "nodeType": "Block",
                    "src": "1379:563:15",
                    "statements": [
                      {
                        "id": 1736,
                        "nodeType": "UncheckedBlock",
                        "src": "1389:547:15",
                        "statements": [
                          {
                            "assignments": [
                              1699
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 1699,
                                "mutability": "mutable",
                                "name": "length",
                                "nameLocation": "1421:6:15",
                                "nodeType": "VariableDeclaration",
                                "scope": 1736,
                                "src": "1413:14:15",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 1698,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1413:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 1706,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1705,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 1702,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1693,
                                    "src": "1441:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1700,
                                    "name": "Math",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4683,
                                    "src": "1430:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Math_$4683_$",
                                      "typeString": "type(library Math)"
                                    }
                                  },
                                  "id": 1701,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1435:5:15",
                                  "memberName": "log10",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4515,
                                  "src": "1430:10:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 1703,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1430:17:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 1704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1450:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "1430:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1413:38:15"
                          },
                          {
                            "assignments": [
                              1708
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 1708,
                                "mutability": "mutable",
                                "name": "buffer",
                                "nameLocation": "1479:6:15",
                                "nodeType": "VariableDeclaration",
                                "scope": 1736,
                                "src": "1465:20:15",
                                "stateVariable": false,
                                "storageLocation": "memory",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string"
                                },
                                "typeName": {
                                  "id": 1707,
                                  "name": "string",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1465:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage_ptr",
                                    "typeString": "string"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 1713,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 1711,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1699,
                                  "src": "1499:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1710,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "1488:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (string memory)"
                                },
                                "typeName": {
                                  "id": 1709,
                                  "name": "string",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1492:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage_ptr",
                                    "typeString": "string"
                                  }
                                }
                              },
                              "id": 1712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1488:18:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1465:41:15"
                          },
                          {
                            "assignments": [
                              1715
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 1715,
                                "mutability": "mutable",
                                "name": "ptr",
                                "nameLocation": "1528:3:15",
                                "nodeType": "VariableDeclaration",
                                "scope": 1736,
                                "src": "1520:11:15",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 1714,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1520:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 1716,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1520:11:15"
                          },
                          {
                            "AST": {
                              "nativeSrc": "1570:69:15",
                              "nodeType": "YulBlock",
                              "src": "1570:69:15",
                              "statements": [
                                {
                                  "nativeSrc": "1588:37:15",
                                  "nodeType": "YulAssignment",
                                  "src": "1588:37:15",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "buffer",
                                            "nativeSrc": "1603:6:15",
                                            "nodeType": "YulIdentifier",
                                            "src": "1603:6:15"
                                          },
                                          {
                                            "kind": "number",
                                            "nativeSrc": "1611:4:15",
                                            "nodeType": "YulLiteral",
                                            "src": "1611:4:15",
                                            "type": "",
                                            "value": "0x20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "1599:3:15",
                                          "nodeType": "YulIdentifier",
                                          "src": "1599:3:15"
                                        },
                                        "nativeSrc": "1599:17:15",
                                        "nodeType": "YulFunctionCall",
                                        "src": "1599:17:15"
                                      },
                                      {
                                        "name": "length",
                                        "nativeSrc": "1618:6:15",
                                        "nodeType": "YulIdentifier",
                                        "src": "1618:6:15"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "1595:3:15",
                                      "nodeType": "YulIdentifier",
                                      "src": "1595:3:15"
                                    },
                                    "nativeSrc": "1595:30:15",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1595:30:15"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "ptr",
                                      "nativeSrc": "1588:3:15",
                                      "nodeType": "YulIdentifier",
                                      "src": "1588:3:15"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "paris",
                            "externalReferences": [
                              {
                                "declaration": 1708,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1603:6:15",
                                "valueSize": 1
                              },
                              {
                                "declaration": 1699,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1618:6:15",
                                "valueSize": 1
                              },
                              {
                                "declaration": 1715,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1588:3:15",
                                "valueSize": 1
                              }
                            ],
                            "flags": [
                              "memory-safe"
                            ],
                            "id": 1717,
                            "nodeType": "InlineAssembly",
                            "src": "1545:94:15"
                          },
                          {
                            "body": {
                              "id": 1732,
                              "nodeType": "Block",
                              "src": "1665:234:15",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 1720,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "--",
                                    "prefix": false,
                                    "src": "1683:5:15",
                                    "subExpression": {
                                      "id": 1719,
                                      "name": "ptr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1715,
                                      "src": "1683:3:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1721,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1683:5:15"
                                },
                                {
                                  "AST": {
                                    "nativeSrc": "1731:86:15",
                                    "nodeType": "YulBlock",
                                    "src": "1731:86:15",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "ptr",
                                              "nativeSrc": "1761:3:15",
                                              "nodeType": "YulIdentifier",
                                              "src": "1761:3:15"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nativeSrc": "1775:5:15",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1775:5:15"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nativeSrc": "1782:2:15",
                                                      "nodeType": "YulLiteral",
                                                      "src": "1782:2:15",
                                                      "type": "",
                                                      "value": "10"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mod",
                                                    "nativeSrc": "1771:3:15",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1771:3:15"
                                                  },
                                                  "nativeSrc": "1771:14:15",
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1771:14:15"
                                                },
                                                {
                                                  "name": "HEX_DIGITS",
                                                  "nativeSrc": "1787:10:15",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1787:10:15"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "byte",
                                                "nativeSrc": "1766:4:15",
                                                "nodeType": "YulIdentifier",
                                                "src": "1766:4:15"
                                              },
                                              "nativeSrc": "1766:32:15",
                                              "nodeType": "YulFunctionCall",
                                              "src": "1766:32:15"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore8",
                                            "nativeSrc": "1753:7:15",
                                            "nodeType": "YulIdentifier",
                                            "src": "1753:7:15"
                                          },
                                          "nativeSrc": "1753:46:15",
                                          "nodeType": "YulFunctionCall",
                                          "src": "1753:46:15"
                                        },
                                        "nativeSrc": "1753:46:15",
                                        "nodeType": "YulExpressionStatement",
                                        "src": "1753:46:15"
                                      }
                                    ]
                                  },
                                  "evmVersion": "paris",
                                  "externalReferences": [
                                    {
                                      "declaration": 1638,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "1787:10:15",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 1715,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "1761:3:15",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 1693,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "1775:5:15",
                                      "valueSize": 1
                                    }
                                  ],
                                  "flags": [
                                    "memory-safe"
                                  ],
                                  "id": 1722,
                                  "nodeType": "InlineAssembly",
                                  "src": "1706:111:15"
                                },
                                {
                                  "expression": {
                                    "id": 1725,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 1723,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1693,
                                      "src": "1834:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "hexValue": "3130",
                                      "id": 1724,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1843:2:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "src": "1834:11:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1726,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1834:11:15"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1729,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 1727,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1693,
                                      "src": "1867:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 1728,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1876:1:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "1867:10:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 1731,
                                  "nodeType": "IfStatement",
                                  "src": "1863:21:15",
                                  "trueBody": {
                                    "id": 1730,
                                    "nodeType": "Break",
                                    "src": "1879:5:15"
                                  }
                                }
                              ]
                            },
                            "condition": {
                              "hexValue": "74727565",
                              "id": 1718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1659:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "id": 1733,
                            "nodeType": "WhileStatement",
                            "src": "1652:247:15"
                          },
                          {
                            "expression": {
                              "id": 1734,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1708,
                              "src": "1919:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "functionReturnParameters": 1697,
                            "id": 1735,
                            "nodeType": "Return",
                            "src": "1912:13:15"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1691,
                    "nodeType": "StructuredDocumentation",
                    "src": "1213:90:15",
                    "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation."
                  },
                  "id": 1738,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toString",
                  "nameLocation": "1317:8:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1694,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1693,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1334:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 1738,
                        "src": "1326:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1692,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1326:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1325:15:15"
                  },
                  "returnParameters": {
                    "id": 1697,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1696,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1738,
                        "src": "1364:13:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1695,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1364:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1363:15:15"
                  },
                  "scope": 3026,
                  "src": "1308:634:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1763,
                    "nodeType": "Block",
                    "src": "2118:92:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 1751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1749,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1741,
                                  "src": "2149:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 1750,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2157:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "2149:9:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "hexValue": "",
                                "id": 1753,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2167:2:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              },
                              "id": 1754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "2149:20:15",
                              "trueExpression": {
                                "hexValue": "2d",
                                "id": 1752,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2161:3:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561",
                                  "typeString": "literal_string \"-\""
                                },
                                "value": "-"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 1758,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1741,
                                      "src": "2195:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 1756,
                                      "name": "SignedMath",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6592,
                                      "src": "2180:10:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_SignedMath_$6592_$",
                                        "typeString": "type(library SignedMath)"
                                      }
                                    },
                                    "id": 1757,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2191:3:15",
                                    "memberName": "abs",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6591,
                                    "src": "2180:14:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$",
                                      "typeString": "function (int256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 1759,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2180:21:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1755,
                                "name": "toString",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1738,
                                "src": "2171:8:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (string memory)"
                                }
                              },
                              "id": 1760,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2171:31:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "id": 1747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2135:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 1746,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "2135:6:15",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2142:6:15",
                            "memberName": "concat",
                            "nodeType": "MemberAccess",
                            "src": "2135:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                              "typeString": "function () pure returns (string memory)"
                            }
                          },
                          "id": 1761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2135:68:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 1745,
                        "id": 1762,
                        "nodeType": "Return",
                        "src": "2128:75:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1739,
                    "nodeType": "StructuredDocumentation",
                    "src": "1948:89:15",
                    "text": " @dev Converts a `int256` to its ASCII `string` decimal representation."
                  },
                  "id": 1764,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toStringSigned",
                  "nameLocation": "2051:14:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1742,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1741,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2073:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 1764,
                        "src": "2066:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 1740,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2066:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2065:14:15"
                  },
                  "returnParameters": {
                    "id": 1745,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1744,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1764,
                        "src": "2103:13:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1743,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2103:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2102:15:15"
                  },
                  "scope": 3026,
                  "src": "2042:168:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1783,
                    "nodeType": "Block",
                    "src": "2389:100:15",
                    "statements": [
                      {
                        "id": 1782,
                        "nodeType": "UncheckedBlock",
                        "src": "2399:84:15",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 1773,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1767,
                                  "src": "2442:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1779,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 1776,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1767,
                                        "src": "2461:5:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 1774,
                                        "name": "Math",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4683,
                                        "src": "2449:4:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Math_$4683_$",
                                          "typeString": "type(library Math)"
                                        }
                                      },
                                      "id": 1775,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "2454:6:15",
                                      "memberName": "log256",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4626,
                                      "src": "2449:11:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 1777,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2449:18:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 1778,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2470:1:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "2449:22:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1772,
                                "name": "toHexString",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  1784,
                                  1867,
                                  1887
                                ],
                                "referencedDeclaration": 1867,
                                "src": "2430:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                                  "typeString": "function (uint256,uint256) pure returns (string memory)"
                                }
                              },
                              "id": 1780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2430:42:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "functionReturnParameters": 1771,
                            "id": 1781,
                            "nodeType": "Return",
                            "src": "2423:49:15"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1765,
                    "nodeType": "StructuredDocumentation",
                    "src": "2216:94:15",
                    "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."
                  },
                  "id": 1784,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "2324:11:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1768,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1767,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2344:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 1784,
                        "src": "2336:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1766,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2336:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2335:15:15"
                  },
                  "returnParameters": {
                    "id": 1771,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1770,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1784,
                        "src": "2374:13:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1769,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2374:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2373:15:15"
                  },
                  "scope": 3026,
                  "src": "2315:174:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1866,
                    "nodeType": "Block",
                    "src": "2702:435:15",
                    "statements": [
                      {
                        "assignments": [
                          1795
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1795,
                            "mutability": "mutable",
                            "name": "localValue",
                            "nameLocation": "2720:10:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 1866,
                            "src": "2712:18:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1794,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2712:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1797,
                        "initialValue": {
                          "id": 1796,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1787,
                          "src": "2733:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2712:26:15"
                      },
                      {
                        "assignments": [
                          1799
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1799,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "2761:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 1866,
                            "src": "2748:19:15",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 1798,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2748:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1808,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1804,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 1802,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2780:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 1803,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1789,
                                  "src": "2784:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2780:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "32",
                                "id": 1805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2793:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "2780:14:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1801,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2770:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 1800,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2774:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 1807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2770:25:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2748:47:15"
                      },
                      {
                        "expression": {
                          "id": 1813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1809,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1799,
                              "src": "2805:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 1811,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 1810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2812:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2805:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 1812,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2817:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                              "typeString": "literal_string \"0\""
                            },
                            "value": "0"
                          },
                          "src": "2805:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 1814,
                        "nodeType": "ExpressionStatement",
                        "src": "2805:15:15"
                      },
                      {
                        "expression": {
                          "id": 1819,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1815,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1799,
                              "src": "2830:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 1817,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 1816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2837:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2830:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "78",
                            "id": 1818,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2842:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83",
                              "typeString": "literal_string \"x\""
                            },
                            "value": "x"
                          },
                          "src": "2830:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 1820,
                        "nodeType": "ExpressionStatement",
                        "src": "2830:15:15"
                      },
                      {
                        "body": {
                          "id": 1849,
                          "nodeType": "Block",
                          "src": "2900:95:15",
                          "statements": [
                            {
                              "expression": {
                                "id": 1843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1835,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1799,
                                    "src": "2914:6:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 1837,
                                  "indexExpression": {
                                    "id": 1836,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1822,
                                    "src": "2921:1:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2914:9:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "id": 1838,
                                    "name": "HEX_DIGITS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1638,
                                    "src": "2926:10:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes16",
                                      "typeString": "bytes16"
                                    }
                                  },
                                  "id": 1842,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1841,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 1839,
                                      "name": "localValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1795,
                                      "src": "2937:10:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "hexValue": "307866",
                                      "id": 1840,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2950:3:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_15_by_1",
                                        "typeString": "int_const 15"
                                      },
                                      "value": "0xf"
                                    },
                                    "src": "2937:16:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2926:28:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "2914:40:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 1844,
                              "nodeType": "ExpressionStatement",
                              "src": "2914:40:15"
                            },
                            {
                              "expression": {
                                "id": 1847,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 1845,
                                  "name": "localValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1795,
                                  "src": "2968:10:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": ">>=",
                                "rightHandSide": {
                                  "hexValue": "34",
                                  "id": 1846,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2983:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "2968:16:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1848,
                              "nodeType": "ExpressionStatement",
                              "src": "2968:16:15"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1831,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1829,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1822,
                            "src": "2888:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 1830,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2892:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2888:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1850,
                        "initializationExpression": {
                          "assignments": [
                            1822
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1822,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "2868:1:15",
                              "nodeType": "VariableDeclaration",
                              "scope": 1850,
                              "src": "2860:9:15",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1821,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2860:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1828,
                          "initialValue": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1827,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1825,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "32",
                                "id": 1823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2872:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 1824,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1789,
                                "src": "2876:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2872:10:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 1826,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2885:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "2872:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2860:26:15"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 1833,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": true,
                            "src": "2895:3:15",
                            "subExpression": {
                              "id": 1832,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1822,
                              "src": "2897:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1834,
                          "nodeType": "ExpressionStatement",
                          "src": "2895:3:15"
                        },
                        "nodeType": "ForStatement",
                        "src": "2855:140:15"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1851,
                            "name": "localValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1795,
                            "src": "3008:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1852,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3022:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3008:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1860,
                        "nodeType": "IfStatement",
                        "src": "3004:96:15",
                        "trueBody": {
                          "id": 1859,
                          "nodeType": "Block",
                          "src": "3025:75:15",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 1855,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1787,
                                    "src": "3075:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1856,
                                    "name": "length",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1789,
                                    "src": "3082:6:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1854,
                                  "name": "StringsInsufficientHexLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1684,
                                  "src": "3046:28:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint256,uint256) pure returns (error)"
                                  }
                                },
                                "id": 1857,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3046:43:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 1858,
                              "nodeType": "RevertStatement",
                              "src": "3039:50:15"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1863,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1799,
                              "src": "3123:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1862,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3116:6:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 1861,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "3116:6:15",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3116:14:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 1793,
                        "id": 1865,
                        "nodeType": "Return",
                        "src": "3109:21:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1785,
                    "nodeType": "StructuredDocumentation",
                    "src": "2495:112:15",
                    "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."
                  },
                  "id": 1867,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "2621:11:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1790,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1787,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2641:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 1867,
                        "src": "2633:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1786,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2633:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1789,
                        "mutability": "mutable",
                        "name": "length",
                        "nameLocation": "2656:6:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 1867,
                        "src": "2648:14:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1788,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2648:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2632:31:15"
                  },
                  "returnParameters": {
                    "id": 1793,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1792,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1867,
                        "src": "2687:13:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1791,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2687:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2686:15:15"
                  },
                  "scope": 3026,
                  "src": "2612:525:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1886,
                    "nodeType": "Block",
                    "src": "3369:75:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 1880,
                                      "name": "addr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1870,
                                      "src": "3414:4:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1879,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3406:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": {
                                      "id": 1878,
                                      "name": "uint160",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3406:7:15",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 1881,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3406:13:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                ],
                                "id": 1877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3398:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 1876,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3398:7:15",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1882,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3398:22:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1883,
                              "name": "ADDRESS_LENGTH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1641,
                              "src": "3422:14:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 1875,
                            "name": "toHexString",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1784,
                              1867,
                              1887
                            ],
                            "referencedDeclaration": 1867,
                            "src": "3386:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256,uint256) pure returns (string memory)"
                            }
                          },
                          "id": 1884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3386:51:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 1874,
                        "id": 1885,
                        "nodeType": "Return",
                        "src": "3379:58:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1868,
                    "nodeType": "StructuredDocumentation",
                    "src": "3143:148:15",
                    "text": " @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."
                  },
                  "id": 1887,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "3305:11:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1871,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1870,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "3325:4:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 1887,
                        "src": "3317:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1869,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3317:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3316:14:15"
                  },
                  "returnParameters": {
                    "id": 1874,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1873,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1887,
                        "src": "3354:13:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1872,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3354:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3353:15:15"
                  },
                  "scope": 3026,
                  "src": "3296:148:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1951,
                    "nodeType": "Block",
                    "src": "3701:642:15",
                    "statements": [
                      {
                        "assignments": [
                          1896
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1896,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "3724:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 1951,
                            "src": "3711:19:15",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 1895,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3711:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1903,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1900,
                                  "name": "addr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1890,
                                  "src": "3751:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1899,
                                "name": "toHexString",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  1784,
                                  1867,
                                  1887
                                ],
                                "referencedDeclaration": 1887,
                                "src": "3739:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$",
                                  "typeString": "function (address) pure returns (string memory)"
                                }
                              },
                              "id": 1901,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3739:17:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 1898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3733:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 1897,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3733:5:15",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3733:24:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3711:46:15"
                      },
                      {
                        "assignments": [
                          1905
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1905,
                            "mutability": "mutable",
                            "name": "hashValue",
                            "nameLocation": "3850:9:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 1951,
                            "src": "3842:17:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1904,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3842:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1906,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3842:17:15"
                      },
                      {
                        "AST": {
                          "nativeSrc": "3894:78:15",
                          "nodeType": "YulBlock",
                          "src": "3894:78:15",
                          "statements": [
                            {
                              "nativeSrc": "3908:54:15",
                              "nodeType": "YulAssignment",
                              "src": "3908:54:15",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3925:2:15",
                                    "nodeType": "YulLiteral",
                                    "src": "3925:2:15",
                                    "type": "",
                                    "value": "96"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "buffer",
                                            "nativeSrc": "3943:6:15",
                                            "nodeType": "YulIdentifier",
                                            "src": "3943:6:15"
                                          },
                                          {
                                            "kind": "number",
                                            "nativeSrc": "3951:4:15",
                                            "nodeType": "YulLiteral",
                                            "src": "3951:4:15",
                                            "type": "",
                                            "value": "0x22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "3939:3:15",
                                          "nodeType": "YulIdentifier",
                                          "src": "3939:3:15"
                                        },
                                        "nativeSrc": "3939:17:15",
                                        "nodeType": "YulFunctionCall",
                                        "src": "3939:17:15"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "3958:2:15",
                                        "nodeType": "YulLiteral",
                                        "src": "3958:2:15",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "keccak256",
                                      "nativeSrc": "3929:9:15",
                                      "nodeType": "YulIdentifier",
                                      "src": "3929:9:15"
                                    },
                                    "nativeSrc": "3929:32:15",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3929:32:15"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nativeSrc": "3921:3:15",
                                  "nodeType": "YulIdentifier",
                                  "src": "3921:3:15"
                                },
                                "nativeSrc": "3921:41:15",
                                "nodeType": "YulFunctionCall",
                                "src": "3921:41:15"
                              },
                              "variableNames": [
                                {
                                  "name": "hashValue",
                                  "nativeSrc": "3908:9:15",
                                  "nodeType": "YulIdentifier",
                                  "src": "3908:9:15"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 1896,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3943:6:15",
                            "valueSize": 1
                          },
                          {
                            "declaration": 1905,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3908:9:15",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 1907,
                        "nodeType": "InlineAssembly",
                        "src": "3869:103:15"
                      },
                      {
                        "body": {
                          "id": 1944,
                          "nodeType": "Block",
                          "src": "4015:291:15",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 1931,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1922,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1920,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 1918,
                                      "name": "hashValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1905,
                                      "src": "4121:9:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "hexValue": "307866",
                                      "id": 1919,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4133:3:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_15_by_1",
                                        "typeString": "int_const 15"
                                      },
                                      "value": "0xf"
                                    },
                                    "src": "4121:15:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "37",
                                    "id": 1921,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4139:1:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_7_by_1",
                                      "typeString": "int_const 7"
                                    },
                                    "value": "7"
                                  },
                                  "src": "4121:19:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 1930,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 1925,
                                          "name": "buffer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1896,
                                          "src": "4150:6:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 1927,
                                        "indexExpression": {
                                          "id": 1926,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1909,
                                          "src": "4157:1:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4150:9:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      ],
                                      "id": 1924,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4144:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint8_$",
                                        "typeString": "type(uint8)"
                                      },
                                      "typeName": {
                                        "id": 1923,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4144:5:15",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1928,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4144:16:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "3936",
                                    "id": 1929,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4163:2:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_96_by_1",
                                      "typeString": "int_const 96"
                                    },
                                    "value": "96"
                                  },
                                  "src": "4144:21:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "4121:44:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1939,
                              "nodeType": "IfStatement",
                              "src": "4117:150:15",
                              "trueBody": {
                                "id": 1938,
                                "nodeType": "Block",
                                "src": "4167:100:15",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 1936,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 1932,
                                          "name": "buffer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1896,
                                          "src": "4235:6:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 1934,
                                        "indexExpression": {
                                          "id": 1933,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1909,
                                          "src": "4242:1:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4235:9:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "^=",
                                      "rightHandSide": {
                                        "hexValue": "30783230",
                                        "id": 1935,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4248:4:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_32_by_1",
                                          "typeString": "int_const 32"
                                        },
                                        "value": "0x20"
                                      },
                                      "src": "4235:17:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "id": 1937,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4235:17:15"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 1942,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 1940,
                                  "name": "hashValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1905,
                                  "src": "4280:9:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": ">>=",
                                "rightHandSide": {
                                  "hexValue": "34",
                                  "id": 1941,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4294:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "4280:15:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1943,
                              "nodeType": "ExpressionStatement",
                              "src": "4280:15:15"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1912,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1909,
                            "src": "4003:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 1913,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4007:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4003:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1945,
                        "initializationExpression": {
                          "assignments": [
                            1909
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1909,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "3995:1:15",
                              "nodeType": "VariableDeclaration",
                              "scope": 1945,
                              "src": "3987:9:15",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1908,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3987:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1911,
                          "initialValue": {
                            "hexValue": "3431",
                            "id": 1910,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3999:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_41_by_1",
                              "typeString": "int_const 41"
                            },
                            "value": "41"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3987:14:15"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 1916,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": true,
                            "src": "4010:3:15",
                            "subExpression": {
                              "id": 1915,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1909,
                              "src": "4012:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1917,
                          "nodeType": "ExpressionStatement",
                          "src": "4010:3:15"
                        },
                        "nodeType": "ForStatement",
                        "src": "3982:324:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1948,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1896,
                              "src": "4329:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1947,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4322:6:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 1946,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "4322:6:15",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4322:14:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 1894,
                        "id": 1950,
                        "nodeType": "Return",
                        "src": "4315:21:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1888,
                    "nodeType": "StructuredDocumentation",
                    "src": "3450:165:15",
                    "text": " @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\n representation, according to EIP-55."
                  },
                  "id": 1952,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toChecksumHexString",
                  "nameLocation": "3629:19:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1891,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1890,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "3657:4:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 1952,
                        "src": "3649:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1889,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3649:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3648:14:15"
                  },
                  "returnParameters": {
                    "id": 1894,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1893,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1952,
                        "src": "3686:13:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1892,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3686:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3685:15:15"
                  },
                  "scope": 3026,
                  "src": "3620:723:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1988,
                    "nodeType": "Block",
                    "src": "4498:104:15",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1972,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1964,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1955,
                                    "src": "4521:1:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 1963,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4515:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 1962,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4515:5:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1965,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4515:8:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 1966,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4524:6:15",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4515:15:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1969,
                                    "name": "b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1957,
                                    "src": "4540:1:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 1968,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4534:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 1967,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4534:5:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1970,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4534:8:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 1971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4543:6:15",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4534:15:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4515:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 1985,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 1976,
                                      "name": "a",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1955,
                                      "src": "4569:1:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "id": 1975,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4563:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 1974,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4563:5:15",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 1977,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4563:8:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 1973,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "4553:9:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 1978,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4553:19:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 1982,
                                      "name": "b",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1957,
                                      "src": "4592:1:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "id": 1981,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4586:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 1980,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4586:5:15",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 1983,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4586:8:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 1979,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "4576:9:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 1984,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4576:19:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "src": "4553:42:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4515:80:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1961,
                        "id": 1987,
                        "nodeType": "Return",
                        "src": "4508:87:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1953,
                    "nodeType": "StructuredDocumentation",
                    "src": "4349:66:15",
                    "text": " @dev Returns true if the two strings are equal."
                  },
                  "id": 1989,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "equal",
                  "nameLocation": "4429:5:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1958,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1955,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "4449:1:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 1989,
                        "src": "4435:15:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1954,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4435:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1957,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "4466:1:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 1989,
                        "src": "4452:15:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1956,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4452:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4434:34:15"
                  },
                  "returnParameters": {
                    "id": 1961,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1960,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1989,
                        "src": "4492:4:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1959,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4492:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4491:6:15"
                  },
                  "scope": 3026,
                  "src": "4420:182:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2007,
                    "nodeType": "Block",
                    "src": "4899:64:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1998,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1992,
                              "src": "4926:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 1999,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4933:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2002,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1992,
                                    "src": "4942:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 2001,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4936:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 2000,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4936:5:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2003,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4936:12:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4949:6:15",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4936:19:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1997,
                            "name": "parseUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2008,
                              2039
                            ],
                            "referencedDeclaration": 2039,
                            "src": "4916:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4916:40:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1996,
                        "id": 2006,
                        "nodeType": "Return",
                        "src": "4909:47:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1990,
                    "nodeType": "StructuredDocumentation",
                    "src": "4608:214:15",
                    "text": " @dev Parse a decimal string and returns the value as a `uint256`.\n Requirements:\n - The string must be formatted as `[0-9]*`\n - The result must fit into an `uint256` type"
                  },
                  "id": 2008,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseUint",
                  "nameLocation": "4836:9:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1993,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1992,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "4860:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2008,
                        "src": "4846:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1991,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4846:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4845:21:15"
                  },
                  "returnParameters": {
                    "id": 1996,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1995,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2008,
                        "src": "4890:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1994,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4890:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4889:9:15"
                  },
                  "scope": 3026,
                  "src": "4827:136:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2038,
                    "nodeType": "Block",
                    "src": "5368:153:15",
                    "statements": [
                      {
                        "assignments": [
                          2021,
                          2023
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2021,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "5384:7:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2038,
                            "src": "5379:12:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2020,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5379:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2023,
                            "mutability": "mutable",
                            "name": "value",
                            "nameLocation": "5401:5:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2038,
                            "src": "5393:13:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2022,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5393:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2029,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2025,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2011,
                              "src": "5423:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 2026,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2013,
                              "src": "5430:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2027,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2015,
                              "src": "5437:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2024,
                            "name": "tryParseUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2060,
                              2097
                            ],
                            "referencedDeclaration": 2097,
                            "src": "5410:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 2028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5410:31:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5378:63:15"
                      },
                      {
                        "condition": {
                          "id": 2031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5455:8:15",
                          "subExpression": {
                            "id": 2030,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2021,
                            "src": "5456:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2035,
                        "nodeType": "IfStatement",
                        "src": "5451:41:15",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 2032,
                              "name": "StringsInvalidChar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1687,
                              "src": "5472:18:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 2033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5472:20:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 2034,
                          "nodeType": "RevertStatement",
                          "src": "5465:27:15"
                        }
                      },
                      {
                        "expression": {
                          "id": 2036,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2023,
                          "src": "5509:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2019,
                        "id": 2037,
                        "nodeType": "Return",
                        "src": "5502:12:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2009,
                    "nodeType": "StructuredDocumentation",
                    "src": "4969:294:15",
                    "text": " @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `[0-9]*`\n - The result must fit into an `uint256` type"
                  },
                  "id": 2039,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseUint",
                  "nameLocation": "5277:9:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2016,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2011,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "5301:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2039,
                        "src": "5287:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2010,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5287:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2013,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "5316:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2039,
                        "src": "5308:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2012,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5308:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2015,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "5331:3:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2039,
                        "src": "5323:11:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2014,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5323:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5286:49:15"
                  },
                  "returnParameters": {
                    "id": 2019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2018,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2039,
                        "src": "5359:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2017,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5359:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5358:9:15"
                  },
                  "scope": 3026,
                  "src": "5268:253:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2059,
                    "nodeType": "Block",
                    "src": "5842:83:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2050,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2042,
                              "src": "5888:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 2051,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5895:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2054,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2042,
                                    "src": "5904:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 2053,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5898:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 2052,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5898:5:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2055,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5898:12:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2056,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5911:6:15",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "5898:19:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2049,
                            "name": "_tryParseUintUncheckedBounds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2167,
                            "src": "5859:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 2057,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5859:59:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "functionReturnParameters": 2048,
                        "id": 2058,
                        "nodeType": "Return",
                        "src": "5852:66:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2040,
                    "nodeType": "StructuredDocumentation",
                    "src": "5527:215:15",
                    "text": " @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."
                  },
                  "id": 2060,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseUint",
                  "nameLocation": "5756:12:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2043,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2042,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "5783:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2060,
                        "src": "5769:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2041,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5769:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5768:21:15"
                  },
                  "returnParameters": {
                    "id": 2048,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2045,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "5818:7:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2060,
                        "src": "5813:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2044,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5813:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2047,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5835:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2060,
                        "src": "5827:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2046,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5827:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5812:29:15"
                  },
                  "scope": 3026,
                  "src": "5747:178:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2096,
                    "nodeType": "Block",
                    "src": "6327:144:15",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2080,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2074,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2067,
                              "src": "6341:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2077,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2063,
                                    "src": "6353:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 2076,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6347:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 2075,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6347:5:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2078,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6347:12:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2079,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6360:6:15",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "6347:19:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6341:25:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2081,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2065,
                              "src": "6370:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "id": 2082,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2067,
                              "src": "6378:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6370:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6341:40:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2089,
                        "nodeType": "IfStatement",
                        "src": "6337:63:15",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "66616c7365",
                                "id": 2085,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6391:5:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "hexValue": "30",
                                "id": 2086,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6398:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 2087,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6390:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                              "typeString": "tuple(bool,int_const 0)"
                            }
                          },
                          "functionReturnParameters": 2073,
                          "id": 2088,
                          "nodeType": "Return",
                          "src": "6383:17:15"
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2091,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2063,
                              "src": "6446:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 2092,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2065,
                              "src": "6453:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2093,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2067,
                              "src": "6460:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2090,
                            "name": "_tryParseUintUncheckedBounds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2167,
                            "src": "6417:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 2094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6417:47:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "functionReturnParameters": 2073,
                        "id": 2095,
                        "nodeType": "Return",
                        "src": "6410:54:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2061,
                    "nodeType": "StructuredDocumentation",
                    "src": "5931:238:15",
                    "text": " @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n character.\n NOTE: This function will revert if the result does not fit in a `uint256`."
                  },
                  "id": 2097,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseUint",
                  "nameLocation": "6183:12:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2068,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2063,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "6219:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2097,
                        "src": "6205:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2062,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6205:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2065,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "6242:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2097,
                        "src": "6234:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2064,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6234:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2067,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "6265:3:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2097,
                        "src": "6257:11:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2066,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6257:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6195:79:15"
                  },
                  "returnParameters": {
                    "id": 2073,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2070,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "6303:7:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2097,
                        "src": "6298:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2069,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6298:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2072,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "6320:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2097,
                        "src": "6312:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2071,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6312:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6297:29:15"
                  },
                  "scope": 3026,
                  "src": "6174:297:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2166,
                    "nodeType": "Block",
                    "src": "6874:347:15",
                    "statements": [
                      {
                        "assignments": [
                          2112
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2112,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "6897:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2166,
                            "src": "6884:19:15",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2111,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6884:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2117,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2115,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2100,
                              "src": "6912:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 2114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6906:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 2113,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6906:5:15",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6906:12:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6884:34:15"
                      },
                      {
                        "assignments": [
                          2119
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2119,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "6937:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2166,
                            "src": "6929:14:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2118,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6929:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2121,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 2120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6946:1:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6929:18:15"
                      },
                      {
                        "body": {
                          "id": 2160,
                          "nodeType": "Block",
                          "src": "6995:189:15",
                          "statements": [
                            {
                              "assignments": [
                                2133
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2133,
                                  "mutability": "mutable",
                                  "name": "chr",
                                  "nameLocation": "7015:3:15",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2160,
                                  "src": "7009:9:15",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "typeName": {
                                    "id": 2132,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7009:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2143,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 2138,
                                            "name": "buffer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2112,
                                            "src": "7064:6:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          {
                                            "id": 2139,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2123,
                                            "src": "7072:1:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 2137,
                                          "name": "_unsafeReadBytesOffset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3025,
                                          "src": "7041:22:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 2140,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7041:33:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 2136,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7034:6:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                        "typeString": "type(bytes1)"
                                      },
                                      "typeName": {
                                        "id": 2135,
                                        "name": "bytes1",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7034:6:15",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2141,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7034:41:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  ],
                                  "id": 2134,
                                  "name": "_tryParseChr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2847,
                                  "src": "7021:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$",
                                    "typeString": "function (bytes1) pure returns (uint8)"
                                  }
                                },
                                "id": 2142,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7021:55:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7009:67:15"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 2146,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2144,
                                  "name": "chr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2133,
                                  "src": "7094:3:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "39",
                                  "id": 2145,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7100:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_9_by_1",
                                    "typeString": "int_const 9"
                                  },
                                  "value": "9"
                                },
                                "src": "7094:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2151,
                              "nodeType": "IfStatement",
                              "src": "7090:30:15",
                              "trueBody": {
                                "expression": {
                                  "components": [
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 2147,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7111:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    {
                                      "hexValue": "30",
                                      "id": 2148,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7118:1:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "id": 2149,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "7110:10:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                    "typeString": "tuple(bool,int_const 0)"
                                  }
                                },
                                "functionReturnParameters": 2110,
                                "id": 2150,
                                "nodeType": "Return",
                                "src": "7103:17:15"
                              }
                            },
                            {
                              "expression": {
                                "id": 2154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2152,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2119,
                                  "src": "7134:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "*=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 2153,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7144:2:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "7134:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2155,
                              "nodeType": "ExpressionStatement",
                              "src": "7134:12:15"
                            },
                            {
                              "expression": {
                                "id": 2158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2156,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2119,
                                  "src": "7160:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 2157,
                                  "name": "chr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2133,
                                  "src": "7170:3:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "7160:13:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2159,
                              "nodeType": "ExpressionStatement",
                              "src": "7160:13:15"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2128,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2126,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2123,
                            "src": "6981:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 2127,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2104,
                            "src": "6985:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6981:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2161,
                        "initializationExpression": {
                          "assignments": [
                            2123
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2123,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "6970:1:15",
                              "nodeType": "VariableDeclaration",
                              "scope": 2161,
                              "src": "6962:9:15",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2122,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6962:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 2125,
                          "initialValue": {
                            "id": 2124,
                            "name": "begin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2102,
                            "src": "6974:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6962:17:15"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 2130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "6990:3:15",
                            "subExpression": {
                              "id": 2129,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2123,
                              "src": "6992:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2131,
                          "nodeType": "ExpressionStatement",
                          "src": "6990:3:15"
                        },
                        "nodeType": "ForStatement",
                        "src": "6957:227:15"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "hexValue": "74727565",
                              "id": 2162,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7201:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "id": 2163,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2119,
                              "src": "7207:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2164,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7200:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "functionReturnParameters": 2110,
                        "id": 2165,
                        "nodeType": "Return",
                        "src": "7193:21:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2098,
                    "nodeType": "StructuredDocumentation",
                    "src": "6477:224:15",
                    "text": " @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."
                  },
                  "id": 2167,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_tryParseUintUncheckedBounds",
                  "nameLocation": "6715:28:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2105,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2100,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "6767:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2167,
                        "src": "6753:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2099,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6753:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2102,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "6790:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2167,
                        "src": "6782:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2101,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6782:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2104,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "6813:3:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2167,
                        "src": "6805:11:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2103,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6805:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6743:79:15"
                  },
                  "returnParameters": {
                    "id": 2110,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2107,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "6850:7:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2167,
                        "src": "6845:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2106,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6845:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2109,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "6867:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2167,
                        "src": "6859:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2108,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6859:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6844:29:15"
                  },
                  "scope": 3026,
                  "src": "6706:515:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2185,
                    "nodeType": "Block",
                    "src": "7518:63:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2176,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2170,
                              "src": "7544:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 2177,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7551:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2180,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2170,
                                    "src": "7560:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 2179,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7554:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 2178,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7554:5:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2181,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7554:12:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2182,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7567:6:15",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "7554:19:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2175,
                            "name": "parseInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2186,
                              2217
                            ],
                            "referencedDeclaration": 2217,
                            "src": "7535:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (int256)"
                            }
                          },
                          "id": 2183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7535:39:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 2174,
                        "id": 2184,
                        "nodeType": "Return",
                        "src": "7528:46:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2168,
                    "nodeType": "StructuredDocumentation",
                    "src": "7227:216:15",
                    "text": " @dev Parse a decimal string and returns the value as a `int256`.\n Requirements:\n - The string must be formatted as `[-+]?[0-9]*`\n - The result must fit in an `int256` type."
                  },
                  "id": 2186,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseInt",
                  "nameLocation": "7457:8:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2171,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2170,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "7480:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2186,
                        "src": "7466:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2169,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7466:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7465:21:15"
                  },
                  "returnParameters": {
                    "id": 2174,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2173,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2186,
                        "src": "7510:6:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 2172,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7510:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7509:8:15"
                  },
                  "scope": 3026,
                  "src": "7448:133:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2216,
                    "nodeType": "Block",
                    "src": "7986:151:15",
                    "statements": [
                      {
                        "assignments": [
                          2199,
                          2201
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2199,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "8002:7:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2216,
                            "src": "7997:12:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2198,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7997:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2201,
                            "mutability": "mutable",
                            "name": "value",
                            "nameLocation": "8018:5:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2216,
                            "src": "8011:12:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 2200,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8011:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2207,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2203,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2189,
                              "src": "8039:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 2204,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2191,
                              "src": "8046:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2205,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2193,
                              "src": "8053:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2202,
                            "name": "tryParseInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2238,
                              2280
                            ],
                            "referencedDeclaration": 2280,
                            "src": "8027:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,int256)"
                            }
                          },
                          "id": 2206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8027:30:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_int256_$",
                            "typeString": "tuple(bool,int256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7996:61:15"
                      },
                      {
                        "condition": {
                          "id": 2209,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "8071:8:15",
                          "subExpression": {
                            "id": 2208,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2199,
                            "src": "8072:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2213,
                        "nodeType": "IfStatement",
                        "src": "8067:41:15",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 2210,
                              "name": "StringsInvalidChar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1687,
                              "src": "8088:18:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 2211,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8088:20:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 2212,
                          "nodeType": "RevertStatement",
                          "src": "8081:27:15"
                        }
                      },
                      {
                        "expression": {
                          "id": 2214,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2201,
                          "src": "8125:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 2197,
                        "id": 2215,
                        "nodeType": "Return",
                        "src": "8118:12:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2187,
                    "nodeType": "StructuredDocumentation",
                    "src": "7587:296:15",
                    "text": " @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `[-+]?[0-9]*`\n - The result must fit in an `int256` type."
                  },
                  "id": 2217,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseInt",
                  "nameLocation": "7897:8:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2194,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2189,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "7920:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2217,
                        "src": "7906:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2188,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7906:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2191,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "7935:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2217,
                        "src": "7927:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2190,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7927:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2193,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "7950:3:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2217,
                        "src": "7942:11:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2192,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7942:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7905:49:15"
                  },
                  "returnParameters": {
                    "id": 2197,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2196,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2217,
                        "src": "7978:6:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 2195,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7978:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7977:8:15"
                  },
                  "scope": 3026,
                  "src": "7888:249:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2237,
                    "nodeType": "Block",
                    "src": "8528:82:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2228,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2220,
                              "src": "8573:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 2229,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8580:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2232,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2220,
                                    "src": "8589:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 2231,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8583:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 2230,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8583:5:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8583:12:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8596:6:15",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "8583:19:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2227,
                            "name": "_tryParseIntUncheckedBounds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2401,
                            "src": "8545:27:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,int256)"
                            }
                          },
                          "id": 2235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8545:58:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_int256_$",
                            "typeString": "tuple(bool,int256)"
                          }
                        },
                        "functionReturnParameters": 2226,
                        "id": 2236,
                        "nodeType": "Return",
                        "src": "8538:65:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2218,
                    "nodeType": "StructuredDocumentation",
                    "src": "8143:287:15",
                    "text": " @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if\n the result does not fit in a `int256`.\n NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`."
                  },
                  "id": 2238,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseInt",
                  "nameLocation": "8444:11:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2221,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2220,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "8470:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2238,
                        "src": "8456:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2219,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "8456:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8455:21:15"
                  },
                  "returnParameters": {
                    "id": 2226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2223,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "8505:7:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2238,
                        "src": "8500:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2222,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8500:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2225,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "8521:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2238,
                        "src": "8514:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 2224,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8514:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8499:28:15"
                  },
                  "scope": 3026,
                  "src": "8435:175:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 2243,
                  "mutability": "constant",
                  "name": "ABS_MIN_INT256",
                  "nameLocation": "8641:14:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3026,
                  "src": "8616:50:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2239,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8616:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                    },
                    "id": 2242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "32",
                      "id": 2240,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8658:1:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "hexValue": "323535",
                      "id": 2241,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8663:3:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_255_by_1",
                        "typeString": "int_const 255"
                      },
                      "value": "255"
                    },
                    "src": "8658:8:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2279,
                    "nodeType": "Block",
                    "src": "9132:143:15",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2257,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2250,
                              "src": "9146:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2260,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2246,
                                    "src": "9158:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 2259,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9152:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 2258,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9152:5:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9152:12:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9165:6:15",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "9152:19:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9146:25:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2266,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2264,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2248,
                              "src": "9175:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "id": 2265,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2250,
                              "src": "9183:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9175:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9146:40:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2272,
                        "nodeType": "IfStatement",
                        "src": "9142:63:15",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "66616c7365",
                                "id": 2268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9196:5:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "hexValue": "30",
                                "id": 2269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9203:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 2270,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "9195:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                              "typeString": "tuple(bool,int_const 0)"
                            }
                          },
                          "functionReturnParameters": 2256,
                          "id": 2271,
                          "nodeType": "Return",
                          "src": "9188:17:15"
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2274,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2246,
                              "src": "9250:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 2275,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2248,
                              "src": "9257:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2276,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2250,
                              "src": "9264:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2273,
                            "name": "_tryParseIntUncheckedBounds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2401,
                            "src": "9222:27:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,int256)"
                            }
                          },
                          "id": 2277,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9222:46:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_int256_$",
                            "typeString": "tuple(bool,int256)"
                          }
                        },
                        "functionReturnParameters": 2256,
                        "id": 2278,
                        "nodeType": "Return",
                        "src": "9215:53:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2244,
                    "nodeType": "StructuredDocumentation",
                    "src": "8673:303:15",
                    "text": " @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n character or if the result does not fit in a `int256`.\n NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`."
                  },
                  "id": 2280,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseInt",
                  "nameLocation": "8990:11:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2251,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2246,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "9025:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2280,
                        "src": "9011:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2245,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "9011:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2248,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "9048:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2280,
                        "src": "9040:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2247,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9040:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2250,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "9071:3:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2280,
                        "src": "9063:11:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2249,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9063:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9001:79:15"
                  },
                  "returnParameters": {
                    "id": 2256,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2253,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "9109:7:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2280,
                        "src": "9104:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2252,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9104:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2255,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "9125:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2280,
                        "src": "9118:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 2254,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9118:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9103:28:15"
                  },
                  "scope": 3026,
                  "src": "8981:294:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2400,
                    "nodeType": "Block",
                    "src": "9675:812:15",
                    "statements": [
                      {
                        "assignments": [
                          2295
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2295,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "9698:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2400,
                            "src": "9685:19:15",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2294,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "9685:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2300,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2298,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2283,
                              "src": "9713:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 2297,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9707:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 2296,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "9707:5:15",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9707:12:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9685:34:15"
                      },
                      {
                        "assignments": [
                          2302
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2302,
                            "mutability": "mutable",
                            "name": "sign",
                            "nameLocation": "9783:4:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2400,
                            "src": "9776:11:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            },
                            "typeName": {
                              "id": 2301,
                              "name": "bytes1",
                              "nodeType": "ElementaryTypeName",
                              "src": "9776:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2318,
                        "initialValue": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2303,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2285,
                              "src": "9790:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 2304,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2287,
                              "src": "9799:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9790:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 2313,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2295,
                                    "src": "9847:6:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 2314,
                                    "name": "begin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2285,
                                    "src": "9855:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2312,
                                  "name": "_unsafeReadBytesOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3025,
                                  "src": "9824:22:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 2315,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9824:37:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 2311,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9817:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes1_$",
                                "typeString": "type(bytes1)"
                              },
                              "typeName": {
                                "id": 2310,
                                "name": "bytes1",
                                "nodeType": "ElementaryTypeName",
                                "src": "9817:6:15",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2316,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9817:45:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "id": 2317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "9790:72:15",
                          "trueExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 2308,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9812:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 2307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9805:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes1_$",
                                "typeString": "type(bytes1)"
                              },
                              "typeName": {
                                "id": 2306,
                                "name": "bytes1",
                                "nodeType": "ElementaryTypeName",
                                "src": "9805:6:15",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9805:9:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9776:86:15"
                      },
                      {
                        "assignments": [
                          2320
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2320,
                            "mutability": "mutable",
                            "name": "positiveSign",
                            "nameLocation": "9948:12:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2400,
                            "src": "9943:17:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2319,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9943:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2327,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          },
                          "id": 2326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2321,
                            "name": "sign",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2302,
                            "src": "9963:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "2b",
                                "id": 2324,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9978:3:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8",
                                  "typeString": "literal_string \"+\""
                                },
                                "value": "+"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8",
                                  "typeString": "literal_string \"+\""
                                }
                              ],
                              "id": 2323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9971:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes1_$",
                                "typeString": "type(bytes1)"
                              },
                              "typeName": {
                                "id": 2322,
                                "name": "bytes1",
                                "nodeType": "ElementaryTypeName",
                                "src": "9971:6:15",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9971:11:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "src": "9963:19:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9943:39:15"
                      },
                      {
                        "assignments": [
                          2329
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2329,
                            "mutability": "mutable",
                            "name": "negativeSign",
                            "nameLocation": "9997:12:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2400,
                            "src": "9992:17:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2328,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9992:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2336,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          },
                          "id": 2335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2330,
                            "name": "sign",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2302,
                            "src": "10012:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "2d",
                                "id": 2333,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10027:3:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561",
                                  "typeString": "literal_string \"-\""
                                },
                                "value": "-"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561",
                                  "typeString": "literal_string \"-\""
                                }
                              ],
                              "id": 2332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10020:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes1_$",
                                "typeString": "type(bytes1)"
                              },
                              "typeName": {
                                "id": 2331,
                                "name": "bytes1",
                                "nodeType": "ElementaryTypeName",
                                "src": "10020:6:15",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10020:11:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "src": "10012:19:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9992:39:15"
                      },
                      {
                        "assignments": [
                          2338
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2338,
                            "mutability": "mutable",
                            "name": "offset",
                            "nameLocation": "10049:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2400,
                            "src": "10041:14:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2337,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10041:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2345,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 2341,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 2339,
                                    "name": "positiveSign",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2320,
                                    "src": "10059:12:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "id": 2340,
                                    "name": "negativeSign",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2329,
                                    "src": "10075:12:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "10059:28:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 2342,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "10058:30:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 2343,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10089:6:15",
                            "memberName": "toUint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6447,
                            "src": "10058:37:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$",
                              "typeString": "function (bool) pure returns (uint256)"
                            }
                          },
                          "id": 2344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10058:39:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10041:56:15"
                      },
                      {
                        "assignments": [
                          2347,
                          2349
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2347,
                            "mutability": "mutable",
                            "name": "absSuccess",
                            "nameLocation": "10114:10:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2400,
                            "src": "10109:15:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2346,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "10109:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2349,
                            "mutability": "mutable",
                            "name": "absValue",
                            "nameLocation": "10134:8:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2400,
                            "src": "10126:16:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2348,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10126:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2357,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2351,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2283,
                              "src": "10159:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2352,
                                "name": "begin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2285,
                                "src": "10166:5:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "id": 2353,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2338,
                                "src": "10174:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10166:14:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2355,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2287,
                              "src": "10182:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2350,
                            "name": "tryParseUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2060,
                              2097
                            ],
                            "referencedDeclaration": 2097,
                            "src": "10146:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 2356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10146:40:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10108:78:15"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2358,
                            "name": "absSuccess",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2347,
                            "src": "10201:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2361,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2359,
                              "name": "absValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2349,
                              "src": "10215:8:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "id": 2360,
                              "name": "ABS_MIN_INT256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2243,
                              "src": "10226:14:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10215:25:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "10201:39:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2384,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2378,
                                "name": "absSuccess",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2347,
                                "src": "10343:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "id": 2379,
                                "name": "negativeSign",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2329,
                                "src": "10357:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "10343:26:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2381,
                                "name": "absValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2349,
                                "src": "10373:8:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 2382,
                                "name": "ABS_MIN_INT256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2243,
                                "src": "10385:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10373:26:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "10343:56:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "expression": {
                              "components": [
                                {
                                  "hexValue": "66616c7365",
                                  "id": 2394,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10471:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                {
                                  "hexValue": "30",
                                  "id": 2395,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10478:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "id": 2396,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "10470:10:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                "typeString": "tuple(bool,int_const 0)"
                              }
                            },
                            "functionReturnParameters": 2293,
                            "id": 2397,
                            "nodeType": "Return",
                            "src": "10463:17:15"
                          },
                          "id": 2398,
                          "nodeType": "IfStatement",
                          "src": "10339:141:15",
                          "trueBody": {
                            "id": 2393,
                            "nodeType": "Block",
                            "src": "10401:56:15",
                            "statements": [
                              {
                                "expression": {
                                  "components": [
                                    {
                                      "hexValue": "74727565",
                                      "id": 2385,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10423:4:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 2388,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "10434:6:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_int256_$",
                                              "typeString": "type(int256)"
                                            },
                                            "typeName": {
                                              "id": 2387,
                                              "name": "int256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "10434:6:15",
                                              "typeDescriptions": {}
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_type$_t_int256_$",
                                              "typeString": "type(int256)"
                                            }
                                          ],
                                          "id": 2386,
                                          "name": "type",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -27,
                                          "src": "10429:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                            "typeString": "function () pure"
                                          }
                                        },
                                        "id": 2389,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10429:12:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_meta_type_t_int256",
                                          "typeString": "type(int256)"
                                        }
                                      },
                                      "id": 2390,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "10442:3:15",
                                      "memberName": "min",
                                      "nodeType": "MemberAccess",
                                      "src": "10429:16:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 2391,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "10422:24:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_bool_$_t_int256_$",
                                    "typeString": "tuple(bool,int256)"
                                  }
                                },
                                "functionReturnParameters": 2293,
                                "id": 2392,
                                "nodeType": "Return",
                                "src": "10415:31:15"
                              }
                            ]
                          }
                        },
                        "id": 2399,
                        "nodeType": "IfStatement",
                        "src": "10197:283:15",
                        "trueBody": {
                          "id": 2377,
                          "nodeType": "Block",
                          "src": "10242:91:15",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "hexValue": "74727565",
                                    "id": 2363,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10264:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "condition": {
                                      "id": 2364,
                                      "name": "negativeSign",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2329,
                                      "src": "10270:12:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "arguments": [
                                        {
                                          "id": 2372,
                                          "name": "absValue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2349,
                                          "src": "10312:8:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 2371,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "10305:6:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_int256_$",
                                          "typeString": "type(int256)"
                                        },
                                        "typeName": {
                                          "id": 2370,
                                          "name": "int256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "10305:6:15",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 2373,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10305:16:15",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "id": 2374,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "10270:51:15",
                                    "trueExpression": {
                                      "id": 2369,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "-",
                                      "prefix": true,
                                      "src": "10285:17:15",
                                      "subExpression": {
                                        "arguments": [
                                          {
                                            "id": 2367,
                                            "name": "absValue",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2349,
                                            "src": "10293:8:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 2366,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "10286:6:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_int256_$",
                                            "typeString": "type(int256)"
                                          },
                                          "typeName": {
                                            "id": 2365,
                                            "name": "int256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "10286:6:15",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 2368,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10286:16:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "id": 2375,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "10263:59:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_int256_$",
                                  "typeString": "tuple(bool,int256)"
                                }
                              },
                              "functionReturnParameters": 2293,
                              "id": 2376,
                              "nodeType": "Return",
                              "src": "10256:66:15"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2281,
                    "nodeType": "StructuredDocumentation",
                    "src": "9281:223:15",
                    "text": " @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."
                  },
                  "id": 2401,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_tryParseIntUncheckedBounds",
                  "nameLocation": "9518:27:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2288,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2283,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "9569:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2401,
                        "src": "9555:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2282,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "9555:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2285,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "9592:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2401,
                        "src": "9584:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2284,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9584:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2287,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "9615:3:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2401,
                        "src": "9607:11:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2286,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9607:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9545:79:15"
                  },
                  "returnParameters": {
                    "id": 2293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2290,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "9652:7:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2401,
                        "src": "9647:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2289,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9647:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2292,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "9668:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2401,
                        "src": "9661:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 2291,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9661:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9646:28:15"
                  },
                  "scope": 3026,
                  "src": "9509:978:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2419,
                    "nodeType": "Block",
                    "src": "10832:67:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2410,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2404,
                              "src": "10862:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 2411,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10869:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2414,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2404,
                                    "src": "10878:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 2413,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10872:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 2412,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10872:5:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2415,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10872:12:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2416,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "10885:6:15",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "10872:19:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2409,
                            "name": "parseHexUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2420,
                              2451
                            ],
                            "referencedDeclaration": 2451,
                            "src": "10849:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10849:43:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2408,
                        "id": 2418,
                        "nodeType": "Return",
                        "src": "10842:50:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2402,
                    "nodeType": "StructuredDocumentation",
                    "src": "10493:259:15",
                    "text": " @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as a `uint256`.\n Requirements:\n - The string must be formatted as `(0x)?[0-9a-fA-F]*`\n - The result must fit in an `uint256` type."
                  },
                  "id": 2420,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseHexUint",
                  "nameLocation": "10766:12:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2405,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2404,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "10793:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2420,
                        "src": "10779:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2403,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10779:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10778:21:15"
                  },
                  "returnParameters": {
                    "id": 2408,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2407,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2420,
                        "src": "10823:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2406,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10823:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10822:9:15"
                  },
                  "scope": 3026,
                  "src": "10757:142:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2450,
                    "nodeType": "Block",
                    "src": "11320:156:15",
                    "statements": [
                      {
                        "assignments": [
                          2433,
                          2435
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2433,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "11336:7:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2450,
                            "src": "11331:12:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2432,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "11331:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2435,
                            "mutability": "mutable",
                            "name": "value",
                            "nameLocation": "11353:5:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2450,
                            "src": "11345:13:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2434,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11345:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2441,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2437,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2423,
                              "src": "11378:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 2438,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2425,
                              "src": "11385:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2439,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2427,
                              "src": "11392:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2436,
                            "name": "tryParseHexUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2472,
                              2509
                            ],
                            "referencedDeclaration": 2509,
                            "src": "11362:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 2440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11362:34:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11330:66:15"
                      },
                      {
                        "condition": {
                          "id": 2443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "11410:8:15",
                          "subExpression": {
                            "id": 2442,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2433,
                            "src": "11411:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2447,
                        "nodeType": "IfStatement",
                        "src": "11406:41:15",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 2444,
                              "name": "StringsInvalidChar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1687,
                              "src": "11427:18:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 2445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11427:20:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 2446,
                          "nodeType": "RevertStatement",
                          "src": "11420:27:15"
                        }
                      },
                      {
                        "expression": {
                          "id": 2448,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2435,
                          "src": "11464:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2431,
                        "id": 2449,
                        "nodeType": "Return",
                        "src": "11457:12:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2421,
                    "nodeType": "StructuredDocumentation",
                    "src": "10905:307:15",
                    "text": " @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `(0x)?[0-9a-fA-F]*`\n - The result must fit in an `uint256` type."
                  },
                  "id": 2451,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseHexUint",
                  "nameLocation": "11226:12:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2428,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2423,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "11253:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2451,
                        "src": "11239:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2422,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "11239:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2425,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "11268:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2451,
                        "src": "11260:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2424,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11260:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2427,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "11283:3:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2451,
                        "src": "11275:11:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2426,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11275:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11238:49:15"
                  },
                  "returnParameters": {
                    "id": 2431,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2430,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2451,
                        "src": "11311:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2429,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11311:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11310:9:15"
                  },
                  "scope": 3026,
                  "src": "11217:259:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2471,
                    "nodeType": "Block",
                    "src": "11803:86:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2462,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2454,
                              "src": "11852:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 2463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11859:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2466,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2454,
                                    "src": "11868:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 2465,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11862:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 2464,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11862:5:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2467,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11862:12:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2468,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "11875:6:15",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "11862:19:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2461,
                            "name": "_tryParseHexUintUncheckedBounds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2612,
                            "src": "11820:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 2469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11820:62:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "functionReturnParameters": 2460,
                        "id": 2470,
                        "nodeType": "Return",
                        "src": "11813:69:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2452,
                    "nodeType": "StructuredDocumentation",
                    "src": "11482:218:15",
                    "text": " @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."
                  },
                  "id": 2472,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseHexUint",
                  "nameLocation": "11714:15:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2455,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2454,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "11744:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2472,
                        "src": "11730:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2453,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "11730:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11729:21:15"
                  },
                  "returnParameters": {
                    "id": 2460,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2457,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "11779:7:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2472,
                        "src": "11774:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2456,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11774:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2459,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "11796:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2472,
                        "src": "11788:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2458,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11788:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11773:29:15"
                  },
                  "scope": 3026,
                  "src": "11705:184:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2508,
                    "nodeType": "Block",
                    "src": "12297:147:15",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2492,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2486,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2479,
                              "src": "12311:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2489,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2475,
                                    "src": "12323:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 2488,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12317:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 2487,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12317:5:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2490,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12317:12:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2491,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "12330:6:15",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "12317:19:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12311:25:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2495,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2493,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2477,
                              "src": "12340:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "id": 2494,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2479,
                              "src": "12348:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12340:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12311:40:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2501,
                        "nodeType": "IfStatement",
                        "src": "12307:63:15",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "66616c7365",
                                "id": 2497,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12361:5:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "hexValue": "30",
                                "id": 2498,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12368:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 2499,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12360:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                              "typeString": "tuple(bool,int_const 0)"
                            }
                          },
                          "functionReturnParameters": 2485,
                          "id": 2500,
                          "nodeType": "Return",
                          "src": "12353:17:15"
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2503,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2475,
                              "src": "12419:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 2504,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2477,
                              "src": "12426:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2505,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2479,
                              "src": "12433:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2502,
                            "name": "_tryParseHexUintUncheckedBounds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2612,
                            "src": "12387:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 2506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12387:50:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "functionReturnParameters": 2485,
                        "id": 2507,
                        "nodeType": "Return",
                        "src": "12380:57:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2473,
                    "nodeType": "StructuredDocumentation",
                    "src": "11895:241:15",
                    "text": " @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an\n invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."
                  },
                  "id": 2509,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseHexUint",
                  "nameLocation": "12150:15:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2480,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2475,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "12189:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2509,
                        "src": "12175:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2474,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "12175:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2477,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "12212:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2509,
                        "src": "12204:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2476,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12204:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2479,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "12235:3:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2509,
                        "src": "12227:11:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2478,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12227:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12165:79:15"
                  },
                  "returnParameters": {
                    "id": 2485,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2482,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "12273:7:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2509,
                        "src": "12268:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2481,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12268:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2484,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "12290:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2509,
                        "src": "12282:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2483,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12282:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12267:29:15"
                  },
                  "scope": 3026,
                  "src": "12141:303:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2611,
                    "nodeType": "Block",
                    "src": "12853:881:15",
                    "statements": [
                      {
                        "assignments": [
                          2524
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2524,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "12876:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2611,
                            "src": "12863:19:15",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2523,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "12863:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2529,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2527,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2512,
                              "src": "12891:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 2526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12885:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 2525,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "12885:5:15",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12885:12:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12863:34:15"
                      },
                      {
                        "assignments": [
                          2531
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2531,
                            "mutability": "mutable",
                            "name": "hasPrefix",
                            "nameLocation": "12950:9:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2611,
                            "src": "12945:14:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2530,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "12945:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2551,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2536,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2532,
                                  "name": "end",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2516,
                                  "src": "12963:3:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2535,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 2533,
                                    "name": "begin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2514,
                                    "src": "12969:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 2534,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12977:1:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "12969:9:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12963:15:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2537,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12962:17:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            },
                            "id": 2549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 2541,
                                      "name": "buffer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2524,
                                      "src": "13013:6:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "id": 2542,
                                      "name": "begin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2514,
                                      "src": "13021:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 2540,
                                    "name": "_unsafeReadBytesOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3025,
                                    "src": "12990:22:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 2543,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12990:37:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 2539,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12983:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes2_$",
                                  "typeString": "type(bytes2)"
                                },
                                "typeName": {
                                  "id": 2538,
                                  "name": "bytes2",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12983:6:15",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2544,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12983:45:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes2",
                                "typeString": "bytes2"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "3078",
                                  "id": 2547,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13039:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837",
                                    "typeString": "literal_string \"0x\""
                                  },
                                  "value": "0x"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837",
                                    "typeString": "literal_string \"0x\""
                                  }
                                ],
                                "id": 2546,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13032:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes2_$",
                                  "typeString": "type(bytes2)"
                                },
                                "typeName": {
                                  "id": 2545,
                                  "name": "bytes2",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13032:6:15",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2548,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13032:12:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes2",
                                "typeString": "bytes2"
                              }
                            },
                            "src": "12983:61:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12962:82:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12945:99:15"
                      },
                      {
                        "assignments": [
                          2553
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2553,
                            "mutability": "mutable",
                            "name": "offset",
                            "nameLocation": "13133:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2611,
                            "src": "13125:14:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2552,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13125:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2559,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2558,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 2554,
                                "name": "hasPrefix",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2531,
                                "src": "13142:9:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "13152:6:15",
                              "memberName": "toUint",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6447,
                              "src": "13142:16:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$",
                                "typeString": "function (bool) pure returns (uint256)"
                              }
                            },
                            "id": 2556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13142:18:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "hexValue": "32",
                            "id": 2557,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13163:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "13142:22:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13125:39:15"
                      },
                      {
                        "assignments": [
                          2561
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2561,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "13183:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2611,
                            "src": "13175:14:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2560,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13175:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2563,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 2562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13192:1:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13175:18:15"
                      },
                      {
                        "body": {
                          "id": 2605,
                          "nodeType": "Block",
                          "src": "13250:447:15",
                          "statements": [
                            {
                              "assignments": [
                                2577
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2577,
                                  "mutability": "mutable",
                                  "name": "chr",
                                  "nameLocation": "13270:3:15",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2605,
                                  "src": "13264:9:15",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "typeName": {
                                    "id": 2576,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13264:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2587,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 2582,
                                            "name": "buffer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2524,
                                            "src": "13319:6:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          {
                                            "id": 2583,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2565,
                                            "src": "13327:1:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 2581,
                                          "name": "_unsafeReadBytesOffset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3025,
                                          "src": "13296:22:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 2584,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13296:33:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 2580,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "13289:6:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                        "typeString": "type(bytes1)"
                                      },
                                      "typeName": {
                                        "id": 2579,
                                        "name": "bytes1",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13289:6:15",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2585,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13289:41:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  ],
                                  "id": 2578,
                                  "name": "_tryParseChr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2847,
                                  "src": "13276:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$",
                                    "typeString": "function (bytes1) pure returns (uint8)"
                                  }
                                },
                                "id": 2586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13276:55:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13264:67:15"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 2590,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2588,
                                  "name": "chr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2577,
                                  "src": "13349:3:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "3135",
                                  "id": 2589,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13355:2:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_15_by_1",
                                    "typeString": "int_const 15"
                                  },
                                  "value": "15"
                                },
                                "src": "13349:8:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2595,
                              "nodeType": "IfStatement",
                              "src": "13345:31:15",
                              "trueBody": {
                                "expression": {
                                  "components": [
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 2591,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13367:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    {
                                      "hexValue": "30",
                                      "id": 2592,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13374:1:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "id": 2593,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "13366:10:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                    "typeString": "tuple(bool,int_const 0)"
                                  }
                                },
                                "functionReturnParameters": 2522,
                                "id": 2594,
                                "nodeType": "Return",
                                "src": "13359:17:15"
                              }
                            },
                            {
                              "expression": {
                                "id": 2598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2596,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2561,
                                  "src": "13390:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "*=",
                                "rightHandSide": {
                                  "hexValue": "3136",
                                  "id": 2597,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13400:2:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_16_by_1",
                                    "typeString": "int_const 16"
                                  },
                                  "value": "16"
                                },
                                "src": "13390:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2599,
                              "nodeType": "ExpressionStatement",
                              "src": "13390:12:15"
                            },
                            {
                              "id": 2604,
                              "nodeType": "UncheckedBlock",
                              "src": "13416:271:15",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 2602,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 2600,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2561,
                                      "src": "13659:6:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 2601,
                                      "name": "chr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2577,
                                      "src": "13669:3:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "13659:13:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2603,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13659:13:15"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2570,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2565,
                            "src": "13236:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 2571,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2516,
                            "src": "13240:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13236:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2606,
                        "initializationExpression": {
                          "assignments": [
                            2565
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2565,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "13216:1:15",
                              "nodeType": "VariableDeclaration",
                              "scope": 2606,
                              "src": "13208:9:15",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2564,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "13208:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 2569,
                          "initialValue": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2568,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2566,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2514,
                              "src": "13220:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 2567,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2553,
                              "src": "13228:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13220:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "13208:26:15"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 2574,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "13245:3:15",
                            "subExpression": {
                              "id": 2573,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2565,
                              "src": "13247:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2575,
                          "nodeType": "ExpressionStatement",
                          "src": "13245:3:15"
                        },
                        "nodeType": "ForStatement",
                        "src": "13203:494:15"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "hexValue": "74727565",
                              "id": 2607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13714:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "id": 2608,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2561,
                              "src": "13720:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2609,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "13713:14:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "functionReturnParameters": 2522,
                        "id": 2610,
                        "nodeType": "Return",
                        "src": "13706:21:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2510,
                    "nodeType": "StructuredDocumentation",
                    "src": "12450:227:15",
                    "text": " @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."
                  },
                  "id": 2612,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_tryParseHexUintUncheckedBounds",
                  "nameLocation": "12691:31:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2517,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2512,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "12746:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2612,
                        "src": "12732:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2511,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "12732:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2514,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "12769:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2612,
                        "src": "12761:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2513,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12761:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2516,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "12792:3:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2612,
                        "src": "12784:11:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2515,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12784:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12722:79:15"
                  },
                  "returnParameters": {
                    "id": 2522,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2519,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "12829:7:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2612,
                        "src": "12824:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2518,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12824:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2521,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "12846:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2612,
                        "src": "12838:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2520,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12838:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12823:29:15"
                  },
                  "scope": 3026,
                  "src": "12682:1052:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2630,
                    "nodeType": "Block",
                    "src": "14032:67:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2621,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "14062:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 2622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14069:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2625,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2615,
                                    "src": "14078:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 2624,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14072:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 2623,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14072:5:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2626,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14072:12:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "14085:6:15",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "14072:19:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2620,
                            "name": "parseAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2631,
                              2662
                            ],
                            "referencedDeclaration": 2662,
                            "src": "14049:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (address)"
                            }
                          },
                          "id": 2628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14049:43:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2619,
                        "id": 2629,
                        "nodeType": "Return",
                        "src": "14042:50:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2613,
                    "nodeType": "StructuredDocumentation",
                    "src": "13740:212:15",
                    "text": " @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as an `address`.\n Requirements:\n - The string must be formatted as `(0x)?[0-9a-fA-F]{40}`"
                  },
                  "id": 2631,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseAddress",
                  "nameLocation": "13966:12:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2616,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2615,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "13993:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2631,
                        "src": "13979:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2614,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "13979:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13978:21:15"
                  },
                  "returnParameters": {
                    "id": 2619,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2618,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2631,
                        "src": "14023:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2617,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14023:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14022:9:15"
                  },
                  "scope": 3026,
                  "src": "13957:142:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2661,
                    "nodeType": "Block",
                    "src": "14472:165:15",
                    "statements": [
                      {
                        "assignments": [
                          2644,
                          2646
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2644,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "14488:7:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2661,
                            "src": "14483:12:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2643,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "14483:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2646,
                            "mutability": "mutable",
                            "name": "value",
                            "nameLocation": "14505:5:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2661,
                            "src": "14497:13:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2645,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "14497:7:15",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2652,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2648,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2634,
                              "src": "14530:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 2649,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2636,
                              "src": "14537:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2650,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2638,
                              "src": "14544:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2647,
                            "name": "tryParseAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2683,
                              2787
                            ],
                            "referencedDeclaration": 2787,
                            "src": "14514:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_address_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,address)"
                            }
                          },
                          "id": 2651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14514:34:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_address_$",
                            "typeString": "tuple(bool,address)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14482:66:15"
                      },
                      {
                        "condition": {
                          "id": 2654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "14562:8:15",
                          "subExpression": {
                            "id": 2653,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2644,
                            "src": "14563:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2658,
                        "nodeType": "IfStatement",
                        "src": "14558:50:15",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 2655,
                              "name": "StringsInvalidAddressFormat",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1690,
                              "src": "14579:27:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 2656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14579:29:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 2657,
                          "nodeType": "RevertStatement",
                          "src": "14572:36:15"
                        }
                      },
                      {
                        "expression": {
                          "id": 2659,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2646,
                          "src": "14625:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2642,
                        "id": 2660,
                        "nodeType": "Return",
                        "src": "14618:12:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2632,
                    "nodeType": "StructuredDocumentation",
                    "src": "14105:259:15",
                    "text": " @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}`"
                  },
                  "id": 2662,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseAddress",
                  "nameLocation": "14378:12:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2639,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2634,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "14405:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2662,
                        "src": "14391:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2633,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "14391:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2636,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "14420:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2662,
                        "src": "14412:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2635,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14412:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2638,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "14435:3:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2662,
                        "src": "14427:11:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2637,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14427:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14390:49:15"
                  },
                  "returnParameters": {
                    "id": 2642,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2641,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2662,
                        "src": "14463:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2640,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14463:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14462:9:15"
                  },
                  "scope": 3026,
                  "src": "14369:268:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2682,
                    "nodeType": "Block",
                    "src": "14944:70:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2673,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2665,
                              "src": "14977:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 2674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14984:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2677,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2665,
                                    "src": "14993:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 2676,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14987:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 2675,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14987:5:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2678,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14987:12:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "15000:6:15",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "14987:19:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2672,
                            "name": "tryParseAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2683,
                              2787
                            ],
                            "referencedDeclaration": 2787,
                            "src": "14961:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_address_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,address)"
                            }
                          },
                          "id": 2680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14961:46:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_address_$",
                            "typeString": "tuple(bool,address)"
                          }
                        },
                        "functionReturnParameters": 2671,
                        "id": 2681,
                        "nodeType": "Return",
                        "src": "14954:53:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2663,
                    "nodeType": "StructuredDocumentation",
                    "src": "14643:198:15",
                    "text": " @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly\n formatted address. See {parseAddress-string} requirements."
                  },
                  "id": 2683,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseAddress",
                  "nameLocation": "14855:15:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2666,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2665,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "14885:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2683,
                        "src": "14871:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2664,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "14871:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14870:21:15"
                  },
                  "returnParameters": {
                    "id": 2671,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2668,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "14920:7:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2683,
                        "src": "14915:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2667,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14915:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2670,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "14937:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2683,
                        "src": "14929:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2669,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14929:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14914:29:15"
                  },
                  "scope": 3026,
                  "src": "14846:168:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2786,
                    "nodeType": "Block",
                    "src": "15407:733:15",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2703,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2697,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2690,
                              "src": "15421:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2700,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2686,
                                    "src": "15433:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 2699,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15427:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 2698,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15427:5:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15427:12:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "15440:6:15",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "15427:19:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15421:25:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2704,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2688,
                              "src": "15450:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "id": 2705,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2690,
                              "src": "15458:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15450:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "15421:40:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2715,
                        "nodeType": "IfStatement",
                        "src": "15417:72:15",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "66616c7365",
                                "id": 2708,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15471:5:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2711,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15486:1:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15478:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2709,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15478:7:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15478:10:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "id": 2713,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "15470:19:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_address_$",
                              "typeString": "tuple(bool,address)"
                            }
                          },
                          "functionReturnParameters": 2696,
                          "id": 2714,
                          "nodeType": "Return",
                          "src": "15463:26:15"
                        }
                      },
                      {
                        "assignments": [
                          2717
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2717,
                            "mutability": "mutable",
                            "name": "hasPrefix",
                            "nameLocation": "15505:9:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2786,
                            "src": "15500:14:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2716,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "15500:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2740,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2718,
                                  "name": "end",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2690,
                                  "src": "15518:3:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2721,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 2719,
                                    "name": "begin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2688,
                                    "src": "15524:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 2720,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15532:1:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "15524:9:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15518:15:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2723,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "15517:17:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            },
                            "id": 2738,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 2729,
                                          "name": "input",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2686,
                                          "src": "15574:5:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 2728,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "15568:5:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": {
                                          "id": 2727,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "15568:5:15",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 2730,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "15568:12:15",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "id": 2731,
                                      "name": "begin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2688,
                                      "src": "15582:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 2726,
                                    "name": "_unsafeReadBytesOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3025,
                                    "src": "15545:22:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 2732,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15545:43:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 2725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15538:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes2_$",
                                  "typeString": "type(bytes2)"
                                },
                                "typeName": {
                                  "id": 2724,
                                  "name": "bytes2",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "15538:6:15",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2733,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15538:51:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes2",
                                "typeString": "bytes2"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "3078",
                                  "id": 2736,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15600:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837",
                                    "typeString": "literal_string \"0x\""
                                  },
                                  "value": "0x"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837",
                                    "typeString": "literal_string \"0x\""
                                  }
                                ],
                                "id": 2735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15593:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes2_$",
                                  "typeString": "type(bytes2)"
                                },
                                "typeName": {
                                  "id": 2734,
                                  "name": "bytes2",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "15593:6:15",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15593:12:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes2",
                                "typeString": "bytes2"
                              }
                            },
                            "src": "15538:67:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "15517:88:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15500:105:15"
                      },
                      {
                        "assignments": [
                          2742
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2742,
                            "mutability": "mutable",
                            "name": "expectedLength",
                            "nameLocation": "15694:14:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2786,
                            "src": "15686:22:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2741,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15686:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2750,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "3430",
                            "id": 2743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15711:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_40_by_1",
                              "typeString": "int_const 40"
                            },
                            "value": "40"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 2744,
                                  "name": "hasPrefix",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2717,
                                  "src": "15716:9:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 2745,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "15726:6:15",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6447,
                                "src": "15716:16:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 2746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15716:18:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 2747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15737:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "15716:22:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15711:27:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15686:52:15"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2751,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2690,
                              "src": "15803:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 2752,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2688,
                              "src": "15809:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15803:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 2754,
                            "name": "expectedLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2742,
                            "src": "15818:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15803:29:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2784,
                          "nodeType": "Block",
                          "src": "16083:51:15",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "hexValue": "66616c7365",
                                    "id": 2777,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16105:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 2780,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "16120:1:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 2779,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16112:7:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2778,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16112:7:15",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2781,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16112:10:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "id": 2782,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "16104:19:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_address_$",
                                  "typeString": "tuple(bool,address)"
                                }
                              },
                              "functionReturnParameters": 2696,
                              "id": 2783,
                              "nodeType": "Return",
                              "src": "16097:26:15"
                            }
                          ]
                        },
                        "id": 2785,
                        "nodeType": "IfStatement",
                        "src": "15799:335:15",
                        "trueBody": {
                          "id": 2776,
                          "nodeType": "Block",
                          "src": "15834:243:15",
                          "statements": [
                            {
                              "assignments": [
                                2757,
                                2759
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2757,
                                  "mutability": "mutable",
                                  "name": "s",
                                  "nameLocation": "15955:1:15",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2776,
                                  "src": "15950:6:15",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 2756,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15950:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 2759,
                                  "mutability": "mutable",
                                  "name": "v",
                                  "nameLocation": "15966:1:15",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2776,
                                  "src": "15958:9:15",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2758,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15958:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2765,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 2761,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2686,
                                    "src": "16003:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "id": 2762,
                                    "name": "begin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2688,
                                    "src": "16010:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2763,
                                    "name": "end",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2690,
                                    "src": "16017:3:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2760,
                                  "name": "_tryParseHexUintUncheckedBounds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2612,
                                  "src": "15971:31:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                    "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                                  }
                                },
                                "id": 2764,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15971:50:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                  "typeString": "tuple(bool,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15949:72:15"
                            },
                            {
                              "expression": {
                                "components": [
                                  {
                                    "id": 2766,
                                    "name": "s",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2757,
                                    "src": "16043:1:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 2771,
                                            "name": "v",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2759,
                                            "src": "16062:1:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 2770,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "16054:7:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint160_$",
                                            "typeString": "type(uint160)"
                                          },
                                          "typeName": {
                                            "id": 2769,
                                            "name": "uint160",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "16054:7:15",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 2772,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "16054:10:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "id": 2768,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16046:7:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2767,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16046:7:15",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2773,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16046:19:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "id": 2774,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "16042:24:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_address_$",
                                  "typeString": "tuple(bool,address)"
                                }
                              },
                              "functionReturnParameters": 2696,
                              "id": 2775,
                              "nodeType": "Return",
                              "src": "16035:31:15"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2684,
                    "nodeType": "StructuredDocumentation",
                    "src": "15020:226:15",
                    "text": " @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly\n formatted address. See {parseAddress-string-uint256-uint256} requirements."
                  },
                  "id": 2787,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseAddress",
                  "nameLocation": "15260:15:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2691,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2686,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "15299:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2787,
                        "src": "15285:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2685,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "15285:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2688,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "15322:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2787,
                        "src": "15314:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2687,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15314:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2690,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "15345:3:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2787,
                        "src": "15337:11:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2689,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15337:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15275:79:15"
                  },
                  "returnParameters": {
                    "id": 2696,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2693,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "15383:7:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2787,
                        "src": "15378:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2692,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15378:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2695,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "15400:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2787,
                        "src": "15392:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2694,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15392:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15377:29:15"
                  },
                  "scope": 3026,
                  "src": "15251:889:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2846,
                    "nodeType": "Block",
                    "src": "16209:461:15",
                    "statements": [
                      {
                        "assignments": [
                          2795
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2795,
                            "mutability": "mutable",
                            "name": "value",
                            "nameLocation": "16225:5:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2846,
                            "src": "16219:11:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 2794,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "16219:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2800,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2798,
                              "name": "chr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2789,
                              "src": "16239:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            ],
                            "id": 2797,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16233:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint8_$",
                              "typeString": "type(uint8)"
                            },
                            "typeName": {
                              "id": 2796,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "16233:5:15",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16233:10:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16219:24:15"
                      },
                      {
                        "id": 2843,
                        "nodeType": "UncheckedBlock",
                        "src": "16403:238:15",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2807,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 2803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2801,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2795,
                                  "src": "16431:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "3437",
                                  "id": 2802,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16439:2:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_47_by_1",
                                    "typeString": "int_const 47"
                                  },
                                  "value": "47"
                                },
                                "src": "16431:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 2806,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2804,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2795,
                                  "src": "16445:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "3538",
                                  "id": 2805,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16453:2:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_58_by_1",
                                    "typeString": "int_const 58"
                                  },
                                  "value": "58"
                                },
                                "src": "16445:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "16431:24:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 2814,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 2812,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2795,
                                    "src": "16491:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "3936",
                                    "id": 2813,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16499:2:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_96_by_1",
                                      "typeString": "int_const 96"
                                    },
                                    "value": "96"
                                  },
                                  "src": "16491:10:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 2817,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 2815,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2795,
                                    "src": "16505:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "hexValue": "313033",
                                    "id": 2816,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16513:3:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_103_by_1",
                                      "typeString": "int_const 103"
                                    },
                                    "value": "103"
                                  },
                                  "src": "16505:11:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "16491:25:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 2829,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 2825,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 2823,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2795,
                                      "src": "16552:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "hexValue": "3634",
                                      "id": 2824,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "16560:2:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_64_by_1",
                                        "typeString": "int_const 64"
                                      },
                                      "value": "64"
                                    },
                                    "src": "16552:10:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 2828,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 2826,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2795,
                                      "src": "16566:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "hexValue": "3731",
                                      "id": 2827,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "16574:2:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_71_by_1",
                                        "typeString": "int_const 71"
                                      },
                                      "value": "71"
                                    },
                                    "src": "16566:10:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "16552:24:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "expression": {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 2836,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "16620:5:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint8_$",
                                            "typeString": "type(uint8)"
                                          },
                                          "typeName": {
                                            "id": 2835,
                                            "name": "uint8",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "16620:5:15",
                                            "typeDescriptions": {}
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_type$_t_uint8_$",
                                            "typeString": "type(uint8)"
                                          }
                                        ],
                                        "id": 2834,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "16615:4:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 2837,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16615:11:15",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_uint8",
                                        "typeString": "type(uint8)"
                                      }
                                    },
                                    "id": 2838,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "16627:3:15",
                                    "memberName": "max",
                                    "nodeType": "MemberAccess",
                                    "src": "16615:15:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "functionReturnParameters": 2793,
                                  "id": 2839,
                                  "nodeType": "Return",
                                  "src": "16608:22:15"
                                },
                                "id": 2840,
                                "nodeType": "IfStatement",
                                "src": "16548:82:15",
                                "trueBody": {
                                  "expression": {
                                    "id": 2832,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 2830,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2795,
                                      "src": "16578:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "hexValue": "3535",
                                      "id": 2831,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "16587:2:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_55_by_1",
                                        "typeString": "int_const 55"
                                      },
                                      "value": "55"
                                    },
                                    "src": "16578:11:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "id": 2833,
                                  "nodeType": "ExpressionStatement",
                                  "src": "16578:11:15"
                                }
                              },
                              "id": 2841,
                              "nodeType": "IfStatement",
                              "src": "16487:143:15",
                              "trueBody": {
                                "expression": {
                                  "id": 2821,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 2819,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2795,
                                    "src": "16518:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "-=",
                                  "rightHandSide": {
                                    "hexValue": "3837",
                                    "id": 2820,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16527:2:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_87_by_1",
                                      "typeString": "int_const 87"
                                    },
                                    "value": "87"
                                  },
                                  "src": "16518:11:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 2822,
                                "nodeType": "ExpressionStatement",
                                "src": "16518:11:15"
                              }
                            },
                            "id": 2842,
                            "nodeType": "IfStatement",
                            "src": "16427:203:15",
                            "trueBody": {
                              "expression": {
                                "id": 2810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2808,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2795,
                                  "src": "16457:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "hexValue": "3438",
                                  "id": 2809,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16466:2:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_48_by_1",
                                    "typeString": "int_const 48"
                                  },
                                  "value": "48"
                                },
                                "src": "16457:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "id": 2811,
                              "nodeType": "ExpressionStatement",
                              "src": "16457:11:15"
                            }
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 2844,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2795,
                          "src": "16658:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 2793,
                        "id": 2845,
                        "nodeType": "Return",
                        "src": "16651:12:15"
                      }
                    ]
                  },
                  "id": 2847,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_tryParseChr",
                  "nameLocation": "16155:12:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2790,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2789,
                        "mutability": "mutable",
                        "name": "chr",
                        "nameLocation": "16175:3:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2847,
                        "src": "16168:10:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        },
                        "typeName": {
                          "id": 2788,
                          "name": "bytes1",
                          "nodeType": "ElementaryTypeName",
                          "src": "16168:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16167:12:15"
                  },
                  "returnParameters": {
                    "id": 2793,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2792,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2847,
                        "src": "16202:5:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 2791,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "16202:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16201:7:15"
                  },
                  "scope": 3026,
                  "src": "16146:524:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3012,
                    "nodeType": "Block",
                    "src": "17336:1331:15",
                    "statements": [
                      {
                        "assignments": [
                          2856
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2856,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "17359:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 3012,
                            "src": "17346:19:15",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2855,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "17346:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2861,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2859,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2850,
                              "src": "17374:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 2858,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "17368:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 2857,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "17368:5:15",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2860,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17368:12:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17346:34:15"
                      },
                      {
                        "assignments": [
                          2863
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2863,
                            "mutability": "mutable",
                            "name": "output",
                            "nameLocation": "17403:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 3012,
                            "src": "17390:19:15",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2862,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "17390:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2871,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2869,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "32",
                                "id": 2866,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17422:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "expression": {
                                  "id": 2867,
                                  "name": "buffer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2856,
                                  "src": "17426:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 2868,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "17433:6:15",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "17426:13:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "17422:17:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2865,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "17412:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 2864,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "17416:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 2870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17412:28:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17390:50:15"
                      },
                      {
                        "assignments": [
                          2873
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2873,
                            "mutability": "mutable",
                            "name": "outputLength",
                            "nameLocation": "17481:12:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 3012,
                            "src": "17473:20:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2872,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17473:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2875,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 2874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17496:1:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17473:24:15"
                      },
                      {
                        "body": {
                          "id": 3004,
                          "nodeType": "Block",
                          "src": "17548:854:15",
                          "statements": [
                            {
                              "assignments": [
                                2887
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2887,
                                  "mutability": "mutable",
                                  "name": "char",
                                  "nameLocation": "17569:4:15",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3004,
                                  "src": "17562:11:15",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "typeName": {
                                    "id": 2886,
                                    "name": "bytes1",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17562:6:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2895,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 2891,
                                        "name": "buffer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2856,
                                        "src": "17606:6:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "id": 2892,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2877,
                                        "src": "17614:1:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 2890,
                                      "name": "_unsafeReadBytesOffset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3025,
                                      "src": "17583:22:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 2893,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17583:33:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 2889,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17576:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes1_$",
                                    "typeString": "type(bytes1)"
                                  },
                                  "typeName": {
                                    "id": 2888,
                                    "name": "bytes1",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17576:6:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2894,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17576:41:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17562:55:15"
                            },
                            {
                              "condition": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2907,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2904,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 2896,
                                            "name": "SPECIAL_CHARS_LOOKUP",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1677,
                                            "src": "17637:20:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&",
                                          "rightExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 2902,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "hexValue": "31",
                                                  "id": 2897,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "17661:1:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                  },
                                                  "value": "1"
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "<<",
                                                "rightExpression": {
                                                  "arguments": [
                                                    {
                                                      "id": 2900,
                                                      "name": "char",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2887,
                                                      "src": "17672:4:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes1",
                                                        "typeString": "bytes1"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_bytes1",
                                                        "typeString": "bytes1"
                                                      }
                                                    ],
                                                    "id": 2899,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "17666:5:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_uint8_$",
                                                      "typeString": "type(uint8)"
                                                    },
                                                    "typeName": {
                                                      "id": 2898,
                                                      "name": "uint8",
                                                      "nodeType": "ElementaryTypeName",
                                                      "src": "17666:5:15",
                                                      "typeDescriptions": {}
                                                    }
                                                  },
                                                  "id": 2901,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "17666:11:15",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "src": "17661:16:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 2903,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "17660:18:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "17637:41:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 2905,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "17636:43:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 2906,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17683:1:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "17636:48:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 2908,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "17635:50:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 3002,
                                "nodeType": "Block",
                                "src": "18330:62:15",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 3000,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 2995,
                                          "name": "output",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2863,
                                          "src": "18348:6:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 2998,
                                        "indexExpression": {
                                          "id": 2997,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "++",
                                          "prefix": false,
                                          "src": "18355:14:15",
                                          "subExpression": {
                                            "id": 2996,
                                            "name": "outputLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2873,
                                            "src": "18355:12:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "18348:22:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 2999,
                                        "name": "char",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2887,
                                        "src": "18373:4:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "src": "18348:29:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "id": 3001,
                                    "nodeType": "ExpressionStatement",
                                    "src": "18348:29:15"
                                  }
                                ]
                              },
                              "id": 3003,
                              "nodeType": "IfStatement",
                              "src": "17631:761:15",
                              "trueBody": {
                                "id": 2994,
                                "nodeType": "Block",
                                "src": "17687:637:15",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 2914,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 2909,
                                          "name": "output",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2863,
                                          "src": "17705:6:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 2912,
                                        "indexExpression": {
                                          "id": 2911,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "++",
                                          "prefix": false,
                                          "src": "17712:14:15",
                                          "subExpression": {
                                            "id": 2910,
                                            "name": "outputLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2873,
                                            "src": "17712:12:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "17705:22:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "5c",
                                        "id": 2913,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17730:4:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                          "typeString": "literal_string \"\\\""
                                        },
                                        "value": "\\"
                                      },
                                      "src": "17705:29:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "id": 2915,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17705:29:15"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      },
                                      "id": 2918,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 2916,
                                        "name": "char",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2887,
                                        "src": "17756:4:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "hexValue": "30783038",
                                        "id": 2917,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17764:4:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_8_by_1",
                                          "typeString": "int_const 8"
                                        },
                                        "value": "0x08"
                                      },
                                      "src": "17756:12:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        },
                                        "id": 2928,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 2926,
                                          "name": "char",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2887,
                                          "src": "17825:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30783039",
                                          "id": 2927,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17833:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_9_by_1",
                                            "typeString": "int_const 9"
                                          },
                                          "value": "0x09"
                                        },
                                        "src": "17825:12:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          },
                                          "id": 2938,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 2936,
                                            "name": "char",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2887,
                                            "src": "17894:4:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes1",
                                              "typeString": "bytes1"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "hexValue": "30783061",
                                            "id": 2937,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "17902:4:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "0x0a"
                                          },
                                          "src": "17894:12:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": {
                                          "condition": {
                                            "commonType": {
                                              "typeIdentifier": "t_bytes1",
                                              "typeString": "bytes1"
                                            },
                                            "id": 2948,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 2946,
                                              "name": "char",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2887,
                                              "src": "17963:4:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "hexValue": "30783063",
                                              "id": 2947,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "17971:4:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_12_by_1",
                                                "typeString": "int_const 12"
                                              },
                                              "value": "0x0c"
                                            },
                                            "src": "17963:12:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseBody": {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              },
                                              "id": 2958,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 2956,
                                                "name": "char",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2887,
                                                "src": "18032:4:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "==",
                                              "rightExpression": {
                                                "hexValue": "30783064",
                                                "id": 2957,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "18040:4:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_13_by_1",
                                                  "typeString": "int_const 13"
                                                },
                                                "value": "0x0d"
                                              },
                                              "src": "18032:12:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "condition": {
                                                "commonType": {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                },
                                                "id": 2968,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 2966,
                                                  "name": "char",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2887,
                                                  "src": "18101:4:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes1",
                                                    "typeString": "bytes1"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                  "hexValue": "30783563",
                                                  "id": 2967,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "18109:4:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_92_by_1",
                                                    "typeString": "int_const 92"
                                                  },
                                                  "value": "0x5c"
                                                },
                                                "src": "18101:12:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              "falseBody": {
                                                "condition": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_bytes1",
                                                    "typeString": "bytes1"
                                                  },
                                                  "id": 2978,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 2976,
                                                    "name": "char",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2887,
                                                    "src": "18171:4:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes1",
                                                      "typeString": "bytes1"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "==",
                                                  "rightExpression": {
                                                    "hexValue": "30783232",
                                                    "id": 2977,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "18179:4:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_34_by_1",
                                                      "typeString": "int_const 34"
                                                    },
                                                    "value": "0x22"
                                                  },
                                                  "src": "18171:12:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                },
                                                "id": 2987,
                                                "nodeType": "IfStatement",
                                                "src": "18167:143:15",
                                                "trueBody": {
                                                  "id": 2986,
                                                  "nodeType": "Block",
                                                  "src": "18185:125:15",
                                                  "statements": [
                                                    {
                                                      "expression": {
                                                        "id": 2984,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                          "baseExpression": {
                                                            "id": 2979,
                                                            "name": "output",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2863,
                                                            "src": "18263:6:15",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_bytes_memory_ptr",
                                                              "typeString": "bytes memory"
                                                            }
                                                          },
                                                          "id": 2982,
                                                          "indexExpression": {
                                                            "id": 2981,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "UnaryOperation",
                                                            "operator": "++",
                                                            "prefix": false,
                                                            "src": "18270:14:15",
                                                            "subExpression": {
                                                              "id": 2980,
                                                              "name": "outputLength",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 2873,
                                                              "src": "18270:12:15",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": true,
                                                          "nodeType": "IndexAccess",
                                                          "src": "18263:22:15",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes1",
                                                            "typeString": "bytes1"
                                                          }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "=",
                                                        "rightHandSide": {
                                                          "hexValue": "22",
                                                          "id": 2983,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "string",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "18288:3:15",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0",
                                                            "typeString": "literal_string \"\"\""
                                                          },
                                                          "value": "\""
                                                        },
                                                        "src": "18263:28:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bytes1",
                                                          "typeString": "bytes1"
                                                        }
                                                      },
                                                      "id": 2985,
                                                      "nodeType": "ExpressionStatement",
                                                      "src": "18263:28:15"
                                                    }
                                                  ]
                                                }
                                              },
                                              "id": 2988,
                                              "nodeType": "IfStatement",
                                              "src": "18097:213:15",
                                              "trueBody": {
                                                "expression": {
                                                  "id": 2974,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "baseExpression": {
                                                      "id": 2969,
                                                      "name": "output",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2863,
                                                      "src": "18115:6:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                      }
                                                    },
                                                    "id": 2972,
                                                    "indexExpression": {
                                                      "id": 2971,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "UnaryOperation",
                                                      "operator": "++",
                                                      "prefix": false,
                                                      "src": "18122:14:15",
                                                      "subExpression": {
                                                        "id": 2970,
                                                        "name": "outputLength",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2873,
                                                        "src": "18122:12:15",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "18115:22:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes1",
                                                      "typeString": "bytes1"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "hexValue": "5c",
                                                    "id": 2973,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "string",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "18140:4:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                                      "typeString": "literal_string \"\\\""
                                                    },
                                                    "value": "\\"
                                                  },
                                                  "src": "18115:29:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes1",
                                                    "typeString": "bytes1"
                                                  }
                                                },
                                                "id": 2975,
                                                "nodeType": "ExpressionStatement",
                                                "src": "18115:29:15"
                                              }
                                            },
                                            "id": 2989,
                                            "nodeType": "IfStatement",
                                            "src": "18028:282:15",
                                            "trueBody": {
                                              "expression": {
                                                "id": 2964,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                  "baseExpression": {
                                                    "id": 2959,
                                                    "name": "output",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2863,
                                                    "src": "18046:6:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes_memory_ptr",
                                                      "typeString": "bytes memory"
                                                    }
                                                  },
                                                  "id": 2962,
                                                  "indexExpression": {
                                                    "id": 2961,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": false,
                                                    "src": "18053:14:15",
                                                    "subExpression": {
                                                      "id": 2960,
                                                      "name": "outputLength",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2873,
                                                      "src": "18053:12:15",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": true,
                                                  "nodeType": "IndexAccess",
                                                  "src": "18046:22:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes1",
                                                    "typeString": "bytes1"
                                                  }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                  "hexValue": "72",
                                                  "id": 2963,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "string",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "18071:3:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_414f72a4d550cad29f17d9d99a4af64b3776ec5538cd440cef0f03fef2e9e010",
                                                    "typeString": "literal_string \"r\""
                                                  },
                                                  "value": "r"
                                                },
                                                "src": "18046:28:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              },
                                              "id": 2965,
                                              "nodeType": "ExpressionStatement",
                                              "src": "18046:28:15"
                                            }
                                          },
                                          "id": 2990,
                                          "nodeType": "IfStatement",
                                          "src": "17959:351:15",
                                          "trueBody": {
                                            "expression": {
                                              "id": 2954,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "baseExpression": {
                                                  "id": 2949,
                                                  "name": "output",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2863,
                                                  "src": "17977:6:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                },
                                                "id": 2952,
                                                "indexExpression": {
                                                  "id": 2951,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "UnaryOperation",
                                                  "operator": "++",
                                                  "prefix": false,
                                                  "src": "17984:14:15",
                                                  "subExpression": {
                                                    "id": 2950,
                                                    "name": "outputLength",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2873,
                                                    "src": "17984:12:15",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "nodeType": "IndexAccess",
                                                "src": "17977:22:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "hexValue": "66",
                                                "id": 2953,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "18002:3:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_stringliteral_d1e8aeb79500496ef3dc2e57ba746a8315d048b7a664a2bf948db4fa91960483",
                                                  "typeString": "literal_string \"f\""
                                                },
                                                "value": "f"
                                              },
                                              "src": "17977:28:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            },
                                            "id": 2955,
                                            "nodeType": "ExpressionStatement",
                                            "src": "17977:28:15"
                                          }
                                        },
                                        "id": 2991,
                                        "nodeType": "IfStatement",
                                        "src": "17890:420:15",
                                        "trueBody": {
                                          "expression": {
                                            "id": 2944,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "baseExpression": {
                                                "id": 2939,
                                                "name": "output",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2863,
                                                "src": "17908:6:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              },
                                              "id": 2942,
                                              "indexExpression": {
                                                "id": 2941,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "UnaryOperation",
                                                "operator": "++",
                                                "prefix": false,
                                                "src": "17915:14:15",
                                                "subExpression": {
                                                  "id": 2940,
                                                  "name": "outputLength",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2873,
                                                  "src": "17915:12:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "17908:22:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "6e",
                                              "id": 2943,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "17933:3:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_4b4ecedb4964a40fe416b16c7bd8b46092040ec42ef0aa69e59f09872f105cf3",
                                                "typeString": "literal_string \"n\""
                                              },
                                              "value": "n"
                                            },
                                            "src": "17908:28:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes1",
                                              "typeString": "bytes1"
                                            }
                                          },
                                          "id": 2945,
                                          "nodeType": "ExpressionStatement",
                                          "src": "17908:28:15"
                                        }
                                      },
                                      "id": 2992,
                                      "nodeType": "IfStatement",
                                      "src": "17821:489:15",
                                      "trueBody": {
                                        "expression": {
                                          "id": 2934,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "baseExpression": {
                                              "id": 2929,
                                              "name": "output",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2863,
                                              "src": "17839:6:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 2932,
                                            "indexExpression": {
                                              "id": 2931,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "UnaryOperation",
                                              "operator": "++",
                                              "prefix": false,
                                              "src": "17846:14:15",
                                              "subExpression": {
                                                "id": 2930,
                                                "name": "outputLength",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2873,
                                                "src": "17846:12:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "17839:22:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes1",
                                              "typeString": "bytes1"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "hexValue": "74",
                                            "id": 2933,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "17864:3:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_cac1bb71f0a97c8ac94ca9546b43178a9ad254c7b757ac07433aa6df35cd8089",
                                              "typeString": "literal_string \"t\""
                                            },
                                            "value": "t"
                                          },
                                          "src": "17839:28:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          }
                                        },
                                        "id": 2935,
                                        "nodeType": "ExpressionStatement",
                                        "src": "17839:28:15"
                                      }
                                    },
                                    "id": 2993,
                                    "nodeType": "IfStatement",
                                    "src": "17752:558:15",
                                    "trueBody": {
                                      "expression": {
                                        "id": 2924,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "baseExpression": {
                                            "id": 2919,
                                            "name": "output",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2863,
                                            "src": "17770:6:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          "id": 2922,
                                          "indexExpression": {
                                            "id": 2921,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "17777:14:15",
                                            "subExpression": {
                                              "id": 2920,
                                              "name": "outputLength",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2873,
                                              "src": "17777:12:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "nodeType": "IndexAccess",
                                          "src": "17770:22:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "hexValue": "62",
                                          "id": 2923,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17795:3:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510",
                                            "typeString": "literal_string \"b\""
                                          },
                                          "value": "b"
                                        },
                                        "src": "17770:28:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "id": 2925,
                                      "nodeType": "ExpressionStatement",
                                      "src": "17770:28:15"
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2879,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2877,
                            "src": "17524:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 2880,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2856,
                              "src": "17528:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2881,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "17535:6:15",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "17528:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17524:17:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3005,
                        "initializationExpression": {
                          "assignments": [
                            2877
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2877,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "17521:1:15",
                              "nodeType": "VariableDeclaration",
                              "scope": 3005,
                              "src": "17513:9:15",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2876,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "17513:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 2878,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "17513:9:15"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 2884,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "17543:3:15",
                            "subExpression": {
                              "id": 2883,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2877,
                              "src": "17545:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2885,
                          "nodeType": "ExpressionStatement",
                          "src": "17543:3:15"
                        },
                        "nodeType": "ForStatement",
                        "src": "17508:894:15"
                      },
                      {
                        "AST": {
                          "nativeSrc": "18500:129:15",
                          "nodeType": "YulBlock",
                          "src": "18500:129:15",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "output",
                                    "nativeSrc": "18521:6:15",
                                    "nodeType": "YulIdentifier",
                                    "src": "18521:6:15"
                                  },
                                  {
                                    "name": "outputLength",
                                    "nativeSrc": "18529:12:15",
                                    "nodeType": "YulIdentifier",
                                    "src": "18529:12:15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18514:6:15",
                                  "nodeType": "YulIdentifier",
                                  "src": "18514:6:15"
                                },
                                "nativeSrc": "18514:28:15",
                                "nodeType": "YulFunctionCall",
                                "src": "18514:28:15"
                              },
                              "nativeSrc": "18514:28:15",
                              "nodeType": "YulExpressionStatement",
                              "src": "18514:28:15"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18562:4:15",
                                    "nodeType": "YulLiteral",
                                    "src": "18562:4:15",
                                    "type": "",
                                    "value": "0x40"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "output",
                                        "nativeSrc": "18572:6:15",
                                        "nodeType": "YulIdentifier",
                                        "src": "18572:6:15"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nativeSrc": "18584:1:15",
                                            "nodeType": "YulLiteral",
                                            "src": "18584:1:15",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nativeSrc": "18591:1:15",
                                                "nodeType": "YulLiteral",
                                                "src": "18591:1:15",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "outputLength",
                                                    "nativeSrc": "18598:12:15",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "18598:12:15"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nativeSrc": "18612:2:15",
                                                    "nodeType": "YulLiteral",
                                                    "src": "18612:2:15",
                                                    "type": "",
                                                    "value": "63"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nativeSrc": "18594:3:15",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18594:3:15"
                                                },
                                                "nativeSrc": "18594:21:15",
                                                "nodeType": "YulFunctionCall",
                                                "src": "18594:21:15"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shr",
                                              "nativeSrc": "18587:3:15",
                                              "nodeType": "YulIdentifier",
                                              "src": "18587:3:15"
                                            },
                                            "nativeSrc": "18587:29:15",
                                            "nodeType": "YulFunctionCall",
                                            "src": "18587:29:15"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nativeSrc": "18580:3:15",
                                          "nodeType": "YulIdentifier",
                                          "src": "18580:3:15"
                                        },
                                        "nativeSrc": "18580:37:15",
                                        "nodeType": "YulFunctionCall",
                                        "src": "18580:37:15"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "18568:3:15",
                                      "nodeType": "YulIdentifier",
                                      "src": "18568:3:15"
                                    },
                                    "nativeSrc": "18568:50:15",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18568:50:15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18555:6:15",
                                  "nodeType": "YulIdentifier",
                                  "src": "18555:6:15"
                                },
                                "nativeSrc": "18555:64:15",
                                "nodeType": "YulFunctionCall",
                                "src": "18555:64:15"
                              },
                              "nativeSrc": "18555:64:15",
                              "nodeType": "YulExpressionStatement",
                              "src": "18555:64:15"
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 2863,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18521:6:15",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2863,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18572:6:15",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2873,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18529:12:15",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2873,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18598:12:15",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3006,
                        "nodeType": "InlineAssembly",
                        "src": "18475:154:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3009,
                              "name": "output",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2863,
                              "src": "18653:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "18646:6:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 3007,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "18646:6:15",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 3010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18646:14:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 2854,
                        "id": 3011,
                        "nodeType": "Return",
                        "src": "18639:21:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2848,
                    "nodeType": "StructuredDocumentation",
                    "src": "16676:576:15",
                    "text": " @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata.\n WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped.\n NOTE: This function escapes all unicode characters, and not just the ones in ranges defined in section 2.5 of\n RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). ECMAScript's `JSON.parse` does recover escaped unicode\n characters that are not in this range, but other tooling may provide different results."
                  },
                  "id": 3013,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "escapeJSON",
                  "nameLocation": "17266:10:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2851,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2850,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "17291:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 3013,
                        "src": "17277:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2849,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "17277:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17276:21:15"
                  },
                  "returnParameters": {
                    "id": 2854,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2853,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3013,
                        "src": "17321:13:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2852,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "17321:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17320:15:15"
                  },
                  "scope": 3026,
                  "src": "17257:1410:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3024,
                    "nodeType": "Block",
                    "src": "19052:225:15",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "19201:70:15",
                          "nodeType": "YulBlock",
                          "src": "19201:70:15",
                          "statements": [
                            {
                              "nativeSrc": "19215:46:15",
                              "nodeType": "YulAssignment",
                              "src": "19215:46:15",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "buffer",
                                            "nativeSrc": "19238:6:15",
                                            "nodeType": "YulIdentifier",
                                            "src": "19238:6:15"
                                          },
                                          {
                                            "kind": "number",
                                            "nativeSrc": "19246:4:15",
                                            "nodeType": "YulLiteral",
                                            "src": "19246:4:15",
                                            "type": "",
                                            "value": "0x20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "19234:3:15",
                                          "nodeType": "YulIdentifier",
                                          "src": "19234:3:15"
                                        },
                                        "nativeSrc": "19234:17:15",
                                        "nodeType": "YulFunctionCall",
                                        "src": "19234:17:15"
                                      },
                                      {
                                        "name": "offset",
                                        "nativeSrc": "19253:6:15",
                                        "nodeType": "YulIdentifier",
                                        "src": "19253:6:15"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "19230:3:15",
                                      "nodeType": "YulIdentifier",
                                      "src": "19230:3:15"
                                    },
                                    "nativeSrc": "19230:30:15",
                                    "nodeType": "YulFunctionCall",
                                    "src": "19230:30:15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "19224:5:15",
                                  "nodeType": "YulIdentifier",
                                  "src": "19224:5:15"
                                },
                                "nativeSrc": "19224:37:15",
                                "nodeType": "YulFunctionCall",
                                "src": "19224:37:15"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nativeSrc": "19215:5:15",
                                  "nodeType": "YulIdentifier",
                                  "src": "19215:5:15"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 3016,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19238:6:15",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3018,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19253:6:15",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3021,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19215:5:15",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3023,
                        "nodeType": "InlineAssembly",
                        "src": "19176:95:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3014,
                    "nodeType": "StructuredDocumentation",
                    "src": "18673:268:15",
                    "text": " @dev Reads a bytes32 from a bytes array without bounds checking.\n NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n assembly block as such would prevent some optimizations."
                  },
                  "id": 3025,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_unsafeReadBytesOffset",
                  "nameLocation": "18955:22:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3016,
                        "mutability": "mutable",
                        "name": "buffer",
                        "nameLocation": "18991:6:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 3025,
                        "src": "18978:19:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3015,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "18978:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3018,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "19007:6:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 3025,
                        "src": "18999:14:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3017,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18999:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18977:37:15"
                  },
                  "returnParameters": {
                    "id": 3022,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3021,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "19045:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 3025,
                        "src": "19037:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3020,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19037:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19036:15:15"
                  },
                  "scope": 3026,
                  "src": "18946:331:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 3027,
              "src": "297:18982:15",
              "usedErrors": [
                1684,
                1687,
                1690
              ],
              "usedEvents": []
            }
          ],
          "src": "101:19179:15"
        },
        "id": 15
      },
      "@openzeppelin/contracts/utils/introspection/ERC165.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
          "exportedSymbols": {
            "ERC165": [
              3050
            ],
            "IERC165": [
              3062
            ]
          },
          "id": 3051,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3028,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "114:24:16"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "./IERC165.sol",
              "id": 3030,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3051,
              "sourceUnit": 3063,
              "src": "140:38:16",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3029,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3062,
                    "src": "148:7:16",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3032,
                    "name": "IERC165",
                    "nameLocations": [
                      "688:7:16"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3062,
                    "src": "688:7:16"
                  },
                  "id": 3033,
                  "nodeType": "InheritanceSpecifier",
                  "src": "688:7:16"
                }
              ],
              "canonicalName": "ERC165",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3031,
                "nodeType": "StructuredDocumentation",
                "src": "180:479:16",
                "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"
              },
              "fullyImplemented": true,
              "id": 3050,
              "linearizedBaseContracts": [
                3050,
                3062
              ],
              "name": "ERC165",
              "nameLocation": "678:6:16",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    3061
                  ],
                  "body": {
                    "id": 3048,
                    "nodeType": "Block",
                    "src": "812:64:16",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 3046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3041,
                            "name": "interfaceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3036,
                            "src": "829:11:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3043,
                                  "name": "IERC165",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3062,
                                  "src": "849:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC165_$3062_$",
                                    "typeString": "type(contract IERC165)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_contract$_IERC165_$3062_$",
                                    "typeString": "type(contract IERC165)"
                                  }
                                ],
                                "id": 3042,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "844:4:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 3044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "844:13:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$3062",
                                "typeString": "type(contract IERC165)"
                              }
                            },
                            "id": 3045,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "858:11:16",
                            "memberName": "interfaceId",
                            "nodeType": "MemberAccess",
                            "src": "844:25:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "829:40:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3040,
                        "id": 3047,
                        "nodeType": "Return",
                        "src": "822:47:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3034,
                    "nodeType": "StructuredDocumentation",
                    "src": "702:23:16",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 3049,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "739:17:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3037,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3036,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "764:11:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 3049,
                        "src": "757:18:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3035,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "757:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "756:20:16"
                  },
                  "returnParameters": {
                    "id": 3040,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3039,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3049,
                        "src": "806:4:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3038,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "806:4:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "805:6:16"
                  },
                  "scope": 3050,
                  "src": "730:146:16",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 3051,
              "src": "660:218:16",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "114:765:16"
        },
        "id": 16
      },
      "@openzeppelin/contracts/utils/introspection/IERC165.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
          "exportedSymbols": {
            "IERC165": [
              3062
            ]
          },
          "id": 3063,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3052,
              "literals": [
                "solidity",
                ">=",
                "0.4",
                ".16"
              ],
              "nodeType": "PragmaDirective",
              "src": "115:25:17"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC165",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3053,
                "nodeType": "StructuredDocumentation",
                "src": "142:280:17",
                "text": " @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."
              },
              "fullyImplemented": false,
              "id": 3062,
              "linearizedBaseContracts": [
                3062
              ],
              "name": "IERC165",
              "nameLocation": "433:7:17",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3054,
                    "nodeType": "StructuredDocumentation",
                    "src": "447:340:17",
                    "text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 3061,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "801:17:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3057,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3056,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "826:11:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3061,
                        "src": "819:18:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3055,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "819:6:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "818:20:17"
                  },
                  "returnParameters": {
                    "id": 3060,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3059,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3061,
                        "src": "862:4:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3058,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "862:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "861:6:17"
                  },
                  "scope": 3062,
                  "src": "792:76:17",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3063,
              "src": "423:447:17",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "115:756:17"
        },
        "id": 17
      },
      "@openzeppelin/contracts/utils/math/Math.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/math/Math.sol",
          "exportedSymbols": {
            "Math": [
              4683
            ],
            "Panic": [
              1516
            ],
            "SafeCast": [
              6448
            ]
          },
          "id": 4684,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3064,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "103:24:18"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Panic.sol",
              "file": "../Panic.sol",
              "id": 3066,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4684,
              "sourceUnit": 1517,
              "src": "129:35:18",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3065,
                    "name": "Panic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1516,
                    "src": "137:5:18",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/math/SafeCast.sol",
              "file": "./SafeCast.sol",
              "id": 3068,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4684,
              "sourceUnit": 6449,
              "src": "165:40:18",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3067,
                    "name": "SafeCast",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6448,
                    "src": "173:8:18",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Math",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3069,
                "nodeType": "StructuredDocumentation",
                "src": "207:73:18",
                "text": " @dev Standard math utilities missing in the Solidity language."
              },
              "fullyImplemented": true,
              "id": 4683,
              "linearizedBaseContracts": [
                4683
              ],
              "name": "Math",
              "nameLocation": "289:4:18",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "Math.Rounding",
                  "id": 3074,
                  "members": [
                    {
                      "id": 3070,
                      "name": "Floor",
                      "nameLocation": "324:5:18",
                      "nodeType": "EnumValue",
                      "src": "324:5:18"
                    },
                    {
                      "id": 3071,
                      "name": "Ceil",
                      "nameLocation": "367:4:18",
                      "nodeType": "EnumValue",
                      "src": "367:4:18"
                    },
                    {
                      "id": 3072,
                      "name": "Trunc",
                      "nameLocation": "409:5:18",
                      "nodeType": "EnumValue",
                      "src": "409:5:18"
                    },
                    {
                      "id": 3073,
                      "name": "Expand",
                      "nameLocation": "439:6:18",
                      "nodeType": "EnumValue",
                      "src": "439:6:18"
                    }
                  ],
                  "name": "Rounding",
                  "nameLocation": "305:8:18",
                  "nodeType": "EnumDefinition",
                  "src": "300:169:18"
                },
                {
                  "body": {
                    "id": 3087,
                    "nodeType": "Block",
                    "src": "731:112:18",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "766:71:18",
                          "nodeType": "YulBlock",
                          "src": "766:71:18",
                          "statements": [
                            {
                              "nativeSrc": "780:16:18",
                              "nodeType": "YulAssignment",
                              "src": "780:16:18",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "a",
                                    "nativeSrc": "791:1:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "791:1:18"
                                  },
                                  {
                                    "name": "b",
                                    "nativeSrc": "794:1:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "794:1:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "787:3:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "787:3:18"
                                },
                                "nativeSrc": "787:9:18",
                                "nodeType": "YulFunctionCall",
                                "src": "787:9:18"
                              },
                              "variableNames": [
                                {
                                  "name": "low",
                                  "nativeSrc": "780:3:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "780:3:18"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "809:18:18",
                              "nodeType": "YulAssignment",
                              "src": "809:18:18",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "low",
                                    "nativeSrc": "820:3:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "820:3:18"
                                  },
                                  {
                                    "name": "a",
                                    "nativeSrc": "825:1:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "825:1:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nativeSrc": "817:2:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "817:2:18"
                                },
                                "nativeSrc": "817:10:18",
                                "nodeType": "YulFunctionCall",
                                "src": "817:10:18"
                              },
                              "variableNames": [
                                {
                                  "name": "high",
                                  "nativeSrc": "809:4:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "809:4:18"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 3077,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "791:1:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3077,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "825:1:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3079,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "794:1:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3082,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "809:4:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3084,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "780:3:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3084,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "820:3:18",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3086,
                        "nodeType": "InlineAssembly",
                        "src": "741:96:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3075,
                    "nodeType": "StructuredDocumentation",
                    "src": "475:163:18",
                    "text": " @dev Return the 512-bit addition of two uint256.\n The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low."
                  },
                  "id": 3088,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add512",
                  "nameLocation": "652:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3080,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3077,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "667:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3088,
                        "src": "659:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3076,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "659:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3079,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "678:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3088,
                        "src": "670:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3078,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "670:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "658:22:18"
                  },
                  "returnParameters": {
                    "id": 3085,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3082,
                        "mutability": "mutable",
                        "name": "high",
                        "nameLocation": "712:4:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3088,
                        "src": "704:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3081,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "704:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3084,
                        "mutability": "mutable",
                        "name": "low",
                        "nameLocation": "726:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3088,
                        "src": "718:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3083,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "718:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "703:27:18"
                  },
                  "scope": 4683,
                  "src": "643:200:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3101,
                    "nodeType": "Block",
                    "src": "1115:462:18",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "1437:134:18",
                          "nodeType": "YulBlock",
                          "src": "1437:134:18",
                          "statements": [
                            {
                              "nativeSrc": "1451:30:18",
                              "nodeType": "YulVariableDeclaration",
                              "src": "1451:30:18",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "a",
                                    "nativeSrc": "1468:1:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "1468:1:18"
                                  },
                                  {
                                    "name": "b",
                                    "nativeSrc": "1471:1:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "1471:1:18"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "1478:1:18",
                                        "nodeType": "YulLiteral",
                                        "src": "1478:1:18",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nativeSrc": "1474:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "1474:3:18"
                                    },
                                    "nativeSrc": "1474:6:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1474:6:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mulmod",
                                  "nativeSrc": "1461:6:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "1461:6:18"
                                },
                                "nativeSrc": "1461:20:18",
                                "nodeType": "YulFunctionCall",
                                "src": "1461:20:18"
                              },
                              "variables": [
                                {
                                  "name": "mm",
                                  "nativeSrc": "1455:2:18",
                                  "nodeType": "YulTypedName",
                                  "src": "1455:2:18",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nativeSrc": "1494:16:18",
                              "nodeType": "YulAssignment",
                              "src": "1494:16:18",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "a",
                                    "nativeSrc": "1505:1:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "1505:1:18"
                                  },
                                  {
                                    "name": "b",
                                    "nativeSrc": "1508:1:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "1508:1:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nativeSrc": "1501:3:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "1501:3:18"
                                },
                                "nativeSrc": "1501:9:18",
                                "nodeType": "YulFunctionCall",
                                "src": "1501:9:18"
                              },
                              "variableNames": [
                                {
                                  "name": "low",
                                  "nativeSrc": "1494:3:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "1494:3:18"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "1523:38:18",
                              "nodeType": "YulAssignment",
                              "src": "1523:38:18",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "mm",
                                        "nativeSrc": "1539:2:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "1539:2:18"
                                      },
                                      {
                                        "name": "low",
                                        "nativeSrc": "1543:3:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "1543:3:18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nativeSrc": "1535:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "1535:3:18"
                                    },
                                    "nativeSrc": "1535:12:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1535:12:18"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "mm",
                                        "nativeSrc": "1552:2:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "1552:2:18"
                                      },
                                      {
                                        "name": "low",
                                        "nativeSrc": "1556:3:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "1556:3:18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nativeSrc": "1549:2:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "1549:2:18"
                                    },
                                    "nativeSrc": "1549:11:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1549:11:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "1531:3:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "1531:3:18"
                                },
                                "nativeSrc": "1531:30:18",
                                "nodeType": "YulFunctionCall",
                                "src": "1531:30:18"
                              },
                              "variableNames": [
                                {
                                  "name": "high",
                                  "nativeSrc": "1523:4:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "1523:4:18"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 3091,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1468:1:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3091,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1505:1:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3093,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1471:1:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3093,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1508:1:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3096,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1523:4:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3098,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1494:3:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3098,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1543:3:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3098,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1556:3:18",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3100,
                        "nodeType": "InlineAssembly",
                        "src": "1412:159:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3089,
                    "nodeType": "StructuredDocumentation",
                    "src": "849:173:18",
                    "text": " @dev Return the 512-bit multiplication of two uint256.\n The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low."
                  },
                  "id": 3102,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul512",
                  "nameLocation": "1036:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3094,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3091,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "1051:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3102,
                        "src": "1043:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3090,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1043:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3093,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "1062:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3102,
                        "src": "1054:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3092,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1054:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1042:22:18"
                  },
                  "returnParameters": {
                    "id": 3099,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3096,
                        "mutability": "mutable",
                        "name": "high",
                        "nameLocation": "1096:4:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3102,
                        "src": "1088:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3095,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1088:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3098,
                        "mutability": "mutable",
                        "name": "low",
                        "nameLocation": "1110:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3102,
                        "src": "1102:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3097,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1102:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1087:27:18"
                  },
                  "scope": 4683,
                  "src": "1027:550:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3136,
                    "nodeType": "Block",
                    "src": "1784:149:18",
                    "statements": [
                      {
                        "id": 3135,
                        "nodeType": "UncheckedBlock",
                        "src": "1794:133:18",
                        "statements": [
                          {
                            "assignments": [
                              3115
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3115,
                                "mutability": "mutable",
                                "name": "c",
                                "nameLocation": "1826:1:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 3135,
                                "src": "1818:9:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3114,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1818:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3119,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3118,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3116,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3105,
                                "src": "1830:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "id": 3117,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3107,
                                "src": "1834:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1830:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1818:17:18"
                          },
                          {
                            "expression": {
                              "id": 3124,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3120,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3110,
                                "src": "1849:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3121,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3115,
                                  "src": "1859:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "id": 3122,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3105,
                                  "src": "1864:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1859:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1849:16:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3125,
                            "nodeType": "ExpressionStatement",
                            "src": "1849:16:18"
                          },
                          {
                            "expression": {
                              "id": 3133,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3126,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3112,
                                "src": "1879:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3132,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3127,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3115,
                                  "src": "1888:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 3130,
                                      "name": "success",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3110,
                                      "src": "1908:7:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "expression": {
                                      "id": 3128,
                                      "name": "SafeCast",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6448,
                                      "src": "1892:8:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                        "typeString": "type(library SafeCast)"
                                      }
                                    },
                                    "id": 3129,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1901:6:18",
                                    "memberName": "toUint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6447,
                                    "src": "1892:15:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (bool) pure returns (uint256)"
                                    }
                                  },
                                  "id": 3131,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1892:24:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1888:28:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1879:37:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3134,
                            "nodeType": "ExpressionStatement",
                            "src": "1879:37:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3103,
                    "nodeType": "StructuredDocumentation",
                    "src": "1583:105:18",
                    "text": " @dev Returns the addition of two unsigned integers, with a success flag (no overflow)."
                  },
                  "id": 3137,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryAdd",
                  "nameLocation": "1702:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3108,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3105,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "1717:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3137,
                        "src": "1709:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3104,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1709:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3107,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "1728:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3137,
                        "src": "1720:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3106,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1720:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1708:22:18"
                  },
                  "returnParameters": {
                    "id": 3113,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3110,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "1759:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3137,
                        "src": "1754:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3109,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1754:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3112,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "1776:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3137,
                        "src": "1768:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3111,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1768:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1753:30:18"
                  },
                  "scope": 4683,
                  "src": "1693:240:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3171,
                    "nodeType": "Block",
                    "src": "2143:149:18",
                    "statements": [
                      {
                        "id": 3170,
                        "nodeType": "UncheckedBlock",
                        "src": "2153:133:18",
                        "statements": [
                          {
                            "assignments": [
                              3150
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3150,
                                "mutability": "mutable",
                                "name": "c",
                                "nameLocation": "2185:1:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 3170,
                                "src": "2177:9:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3149,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2177:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3154,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3151,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3140,
                                "src": "2189:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 3152,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3142,
                                "src": "2193:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2189:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2177:17:18"
                          },
                          {
                            "expression": {
                              "id": 3159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3155,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3145,
                                "src": "2208:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3156,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3150,
                                  "src": "2218:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "id": 3157,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3140,
                                  "src": "2223:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2218:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2208:16:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3160,
                            "nodeType": "ExpressionStatement",
                            "src": "2208:16:18"
                          },
                          {
                            "expression": {
                              "id": 3168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3161,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3147,
                                "src": "2238:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3167,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3162,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3150,
                                  "src": "2247:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 3165,
                                      "name": "success",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3145,
                                      "src": "2267:7:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "expression": {
                                      "id": 3163,
                                      "name": "SafeCast",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6448,
                                      "src": "2251:8:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                        "typeString": "type(library SafeCast)"
                                      }
                                    },
                                    "id": 3164,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2260:6:18",
                                    "memberName": "toUint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6447,
                                    "src": "2251:15:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (bool) pure returns (uint256)"
                                    }
                                  },
                                  "id": 3166,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2251:24:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2247:28:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2238:37:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3169,
                            "nodeType": "ExpressionStatement",
                            "src": "2238:37:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3138,
                    "nodeType": "StructuredDocumentation",
                    "src": "1939:108:18",
                    "text": " @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow)."
                  },
                  "id": 3172,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "trySub",
                  "nameLocation": "2061:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3143,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3140,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "2076:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3172,
                        "src": "2068:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3139,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2068:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3142,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "2087:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3172,
                        "src": "2079:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3141,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2079:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2067:22:18"
                  },
                  "returnParameters": {
                    "id": 3148,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3145,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "2118:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3172,
                        "src": "2113:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3144,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2113:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3147,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "2135:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3172,
                        "src": "2127:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3146,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2127:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2112:30:18"
                  },
                  "scope": 4683,
                  "src": "2052:240:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3201,
                    "nodeType": "Block",
                    "src": "2505:391:18",
                    "statements": [
                      {
                        "id": 3200,
                        "nodeType": "UncheckedBlock",
                        "src": "2515:375:18",
                        "statements": [
                          {
                            "assignments": [
                              3185
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3185,
                                "mutability": "mutable",
                                "name": "c",
                                "nameLocation": "2547:1:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 3200,
                                "src": "2539:9:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3184,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2539:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3189,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3186,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3175,
                                "src": "2551:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 3187,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3177,
                                "src": "2555:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2551:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2539:17:18"
                          },
                          {
                            "AST": {
                              "nativeSrc": "2595:188:18",
                              "nodeType": "YulBlock",
                              "src": "2595:188:18",
                              "statements": [
                                {
                                  "nativeSrc": "2727:42:18",
                                  "nodeType": "YulAssignment",
                                  "src": "2727:42:18",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "c",
                                                "nativeSrc": "2748:1:18",
                                                "nodeType": "YulIdentifier",
                                                "src": "2748:1:18"
                                              },
                                              {
                                                "name": "a",
                                                "nativeSrc": "2751:1:18",
                                                "nodeType": "YulIdentifier",
                                                "src": "2751:1:18"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nativeSrc": "2744:3:18",
                                              "nodeType": "YulIdentifier",
                                              "src": "2744:3:18"
                                            },
                                            "nativeSrc": "2744:9:18",
                                            "nodeType": "YulFunctionCall",
                                            "src": "2744:9:18"
                                          },
                                          {
                                            "name": "b",
                                            "nativeSrc": "2755:1:18",
                                            "nodeType": "YulIdentifier",
                                            "src": "2755:1:18"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "eq",
                                          "nativeSrc": "2741:2:18",
                                          "nodeType": "YulIdentifier",
                                          "src": "2741:2:18"
                                        },
                                        "nativeSrc": "2741:16:18",
                                        "nodeType": "YulFunctionCall",
                                        "src": "2741:16:18"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "a",
                                            "nativeSrc": "2766:1:18",
                                            "nodeType": "YulIdentifier",
                                            "src": "2766:1:18"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nativeSrc": "2759:6:18",
                                          "nodeType": "YulIdentifier",
                                          "src": "2759:6:18"
                                        },
                                        "nativeSrc": "2759:9:18",
                                        "nodeType": "YulFunctionCall",
                                        "src": "2759:9:18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nativeSrc": "2738:2:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "2738:2:18"
                                    },
                                    "nativeSrc": "2738:31:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2738:31:18"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "success",
                                      "nativeSrc": "2727:7:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "2727:7:18"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "paris",
                            "externalReferences": [
                              {
                                "declaration": 3175,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2751:1:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3175,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2766:1:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3177,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2755:1:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3185,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2748:1:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3180,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2727:7:18",
                                "valueSize": 1
                              }
                            ],
                            "flags": [
                              "memory-safe"
                            ],
                            "id": 3190,
                            "nodeType": "InlineAssembly",
                            "src": "2570:213:18"
                          },
                          {
                            "expression": {
                              "id": 3198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3191,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3182,
                                "src": "2842:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3197,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3192,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3185,
                                  "src": "2851:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 3195,
                                      "name": "success",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3180,
                                      "src": "2871:7:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "expression": {
                                      "id": 3193,
                                      "name": "SafeCast",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6448,
                                      "src": "2855:8:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                        "typeString": "type(library SafeCast)"
                                      }
                                    },
                                    "id": 3194,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2864:6:18",
                                    "memberName": "toUint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6447,
                                    "src": "2855:15:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (bool) pure returns (uint256)"
                                    }
                                  },
                                  "id": 3196,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2855:24:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2851:28:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2842:37:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3199,
                            "nodeType": "ExpressionStatement",
                            "src": "2842:37:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3173,
                    "nodeType": "StructuredDocumentation",
                    "src": "2298:111:18",
                    "text": " @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow)."
                  },
                  "id": 3202,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryMul",
                  "nameLocation": "2423:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3178,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3175,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "2438:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3202,
                        "src": "2430:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3174,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2430:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3177,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "2449:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3202,
                        "src": "2441:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3176,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2441:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2429:22:18"
                  },
                  "returnParameters": {
                    "id": 3183,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3180,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "2480:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3202,
                        "src": "2475:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3179,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2475:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3182,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "2497:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3202,
                        "src": "2489:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3181,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2489:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2474:30:18"
                  },
                  "scope": 4683,
                  "src": "2414:482:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3222,
                    "nodeType": "Block",
                    "src": "3111:231:18",
                    "statements": [
                      {
                        "id": 3221,
                        "nodeType": "UncheckedBlock",
                        "src": "3121:215:18",
                        "statements": [
                          {
                            "expression": {
                              "id": 3218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3214,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3210,
                                "src": "3145:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3217,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3215,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3207,
                                  "src": "3155:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 3216,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3159:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3155:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3145:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3219,
                            "nodeType": "ExpressionStatement",
                            "src": "3145:15:18"
                          },
                          {
                            "AST": {
                              "nativeSrc": "3199:127:18",
                              "nodeType": "YulBlock",
                              "src": "3199:127:18",
                              "statements": [
                                {
                                  "nativeSrc": "3293:19:18",
                                  "nodeType": "YulAssignment",
                                  "src": "3293:19:18",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "a",
                                        "nativeSrc": "3307:1:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "3307:1:18"
                                      },
                                      {
                                        "name": "b",
                                        "nativeSrc": "3310:1:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "3310:1:18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nativeSrc": "3303:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "3303:3:18"
                                    },
                                    "nativeSrc": "3303:9:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3303:9:18"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "result",
                                      "nativeSrc": "3293:6:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "3293:6:18"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "paris",
                            "externalReferences": [
                              {
                                "declaration": 3205,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3307:1:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3207,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3310:1:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3212,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3293:6:18",
                                "valueSize": 1
                              }
                            ],
                            "flags": [
                              "memory-safe"
                            ],
                            "id": 3220,
                            "nodeType": "InlineAssembly",
                            "src": "3174:152:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3203,
                    "nodeType": "StructuredDocumentation",
                    "src": "2902:113:18",
                    "text": " @dev Returns the division of two unsigned integers, with a success flag (no division by zero)."
                  },
                  "id": 3223,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryDiv",
                  "nameLocation": "3029:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3208,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3205,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "3044:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3223,
                        "src": "3036:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3204,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3036:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3207,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "3055:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3223,
                        "src": "3047:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3206,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3047:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3035:22:18"
                  },
                  "returnParameters": {
                    "id": 3213,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3210,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "3086:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3223,
                        "src": "3081:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3209,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3081:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3212,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "3103:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3223,
                        "src": "3095:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3211,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3095:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3080:30:18"
                  },
                  "scope": 4683,
                  "src": "3020:322:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3243,
                    "nodeType": "Block",
                    "src": "3567:231:18",
                    "statements": [
                      {
                        "id": 3242,
                        "nodeType": "UncheckedBlock",
                        "src": "3577:215:18",
                        "statements": [
                          {
                            "expression": {
                              "id": 3239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3235,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3231,
                                "src": "3601:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3236,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3228,
                                  "src": "3611:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 3237,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3615:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3611:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3601:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3240,
                            "nodeType": "ExpressionStatement",
                            "src": "3601:15:18"
                          },
                          {
                            "AST": {
                              "nativeSrc": "3655:127:18",
                              "nodeType": "YulBlock",
                              "src": "3655:127:18",
                              "statements": [
                                {
                                  "nativeSrc": "3749:19:18",
                                  "nodeType": "YulAssignment",
                                  "src": "3749:19:18",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "a",
                                        "nativeSrc": "3763:1:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "3763:1:18"
                                      },
                                      {
                                        "name": "b",
                                        "nativeSrc": "3766:1:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "3766:1:18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mod",
                                      "nativeSrc": "3759:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "3759:3:18"
                                    },
                                    "nativeSrc": "3759:9:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3759:9:18"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "result",
                                      "nativeSrc": "3749:6:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "3749:6:18"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "paris",
                            "externalReferences": [
                              {
                                "declaration": 3226,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3763:1:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3228,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3766:1:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3233,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3749:6:18",
                                "valueSize": 1
                              }
                            ],
                            "flags": [
                              "memory-safe"
                            ],
                            "id": 3241,
                            "nodeType": "InlineAssembly",
                            "src": "3630:152:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3224,
                    "nodeType": "StructuredDocumentation",
                    "src": "3348:123:18",
                    "text": " @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)."
                  },
                  "id": 3244,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryMod",
                  "nameLocation": "3485:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3229,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3226,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "3500:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3244,
                        "src": "3492:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3225,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3492:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3228,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "3511:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3244,
                        "src": "3503:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3227,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3503:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3491:22:18"
                  },
                  "returnParameters": {
                    "id": 3234,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3231,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "3542:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3244,
                        "src": "3537:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3230,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3537:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3233,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "3559:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3244,
                        "src": "3551:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3232,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3551:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3536:30:18"
                  },
                  "scope": 4683,
                  "src": "3476:322:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3273,
                    "nodeType": "Block",
                    "src": "3989:122:18",
                    "statements": [
                      {
                        "assignments": [
                          3255,
                          3257
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3255,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "4005:7:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 3273,
                            "src": "4000:12:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3254,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "4000:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3257,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "4022:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 3273,
                            "src": "4014:14:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3256,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4014:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3262,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3259,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3247,
                              "src": "4039:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3260,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3249,
                              "src": "4042:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3258,
                            "name": "tryAdd",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3137,
                            "src": "4032:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 3261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4032:12:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3999:45:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3264,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3255,
                              "src": "4069:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3265,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3257,
                              "src": "4078:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3268,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4091:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 3267,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4091:7:18",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    }
                                  ],
                                  "id": 3266,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "4086:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 3269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4086:13:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_uint256",
                                  "typeString": "type(uint256)"
                                }
                              },
                              "id": 3270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4100:3:18",
                              "memberName": "max",
                              "nodeType": "MemberAccess",
                              "src": "4086:17:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3263,
                            "name": "ternary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3351,
                            "src": "4061:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (bool,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4061:43:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3253,
                        "id": 3272,
                        "nodeType": "Return",
                        "src": "4054:50:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3245,
                    "nodeType": "StructuredDocumentation",
                    "src": "3804:103:18",
                    "text": " @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing."
                  },
                  "id": 3274,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "saturatingAdd",
                  "nameLocation": "3921:13:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3250,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3247,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "3943:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3274,
                        "src": "3935:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3246,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3935:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3249,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "3954:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3274,
                        "src": "3946:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3248,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3946:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3934:22:18"
                  },
                  "returnParameters": {
                    "id": 3253,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3252,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3274,
                        "src": "3980:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3251,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3980:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3979:9:18"
                  },
                  "scope": 4683,
                  "src": "3912:199:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3293,
                    "nodeType": "Block",
                    "src": "4294:73:18",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          3285
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 3285,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "4315:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 3293,
                            "src": "4307:14:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3284,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4307:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3290,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3287,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3277,
                              "src": "4332:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3288,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3279,
                              "src": "4335:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3286,
                            "name": "trySub",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3172,
                            "src": "4325:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 3289,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4325:12:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4304:33:18"
                      },
                      {
                        "expression": {
                          "id": 3291,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3285,
                          "src": "4354:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3283,
                        "id": 3292,
                        "nodeType": "Return",
                        "src": "4347:13:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3275,
                    "nodeType": "StructuredDocumentation",
                    "src": "4117:95:18",
                    "text": " @dev Unsigned saturating subtraction, bounds to zero instead of overflowing."
                  },
                  "id": 3294,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "saturatingSub",
                  "nameLocation": "4226:13:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3280,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3277,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "4248:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3294,
                        "src": "4240:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3276,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4240:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3279,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "4259:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3294,
                        "src": "4251:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3278,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4251:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4239:22:18"
                  },
                  "returnParameters": {
                    "id": 3283,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3282,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3294,
                        "src": "4285:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3281,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4285:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4284:9:18"
                  },
                  "scope": 4683,
                  "src": "4217:150:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3323,
                    "nodeType": "Block",
                    "src": "4564:122:18",
                    "statements": [
                      {
                        "assignments": [
                          3305,
                          3307
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3305,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "4580:7:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 3323,
                            "src": "4575:12:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3304,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "4575:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3307,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "4597:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 3323,
                            "src": "4589:14:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3306,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4589:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3312,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3309,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3297,
                              "src": "4614:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3310,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3299,
                              "src": "4617:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3308,
                            "name": "tryMul",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3202,
                            "src": "4607:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 3311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4607:12:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4574:45:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3314,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3305,
                              "src": "4644:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3315,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3307,
                              "src": "4653:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3318,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4666:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 3317,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4666:7:18",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    }
                                  ],
                                  "id": 3316,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "4661:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 3319,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4661:13:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_uint256",
                                  "typeString": "type(uint256)"
                                }
                              },
                              "id": 3320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4675:3:18",
                              "memberName": "max",
                              "nodeType": "MemberAccess",
                              "src": "4661:17:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3313,
                            "name": "ternary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3351,
                            "src": "4636:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (bool,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4636:43:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3303,
                        "id": 3322,
                        "nodeType": "Return",
                        "src": "4629:50:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3295,
                    "nodeType": "StructuredDocumentation",
                    "src": "4373:109:18",
                    "text": " @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing."
                  },
                  "id": 3324,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "saturatingMul",
                  "nameLocation": "4496:13:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3300,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3297,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "4518:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3324,
                        "src": "4510:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3296,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4510:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3299,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "4529:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3324,
                        "src": "4521:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3298,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4521:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4509:22:18"
                  },
                  "returnParameters": {
                    "id": 3303,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3302,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3324,
                        "src": "4555:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3301,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4555:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4554:9:18"
                  },
                  "scope": 4683,
                  "src": "4487:199:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3350,
                    "nodeType": "Block",
                    "src": "5158:207:18",
                    "statements": [
                      {
                        "id": 3349,
                        "nodeType": "UncheckedBlock",
                        "src": "5168:191:18",
                        "statements": [
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3336,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3331,
                                "src": "5306:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "^",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3345,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3339,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 3337,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3329,
                                            "src": "5312:1:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "^",
                                          "rightExpression": {
                                            "id": 3338,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3331,
                                            "src": "5316:1:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "5312:5:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 3340,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "5311:7:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "id": 3343,
                                          "name": "condition",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3327,
                                          "src": "5337:9:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "expression": {
                                          "id": 3341,
                                          "name": "SafeCast",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6448,
                                          "src": "5321:8:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                            "typeString": "type(library SafeCast)"
                                          }
                                        },
                                        "id": 3342,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "5330:6:18",
                                        "memberName": "toUint",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6447,
                                        "src": "5321:15:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                          "typeString": "function (bool) pure returns (uint256)"
                                        }
                                      },
                                      "id": 3344,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5321:26:18",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5311:36:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3346,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "5310:38:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5306:42:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 3335,
                            "id": 3348,
                            "nodeType": "Return",
                            "src": "5299:49:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3325,
                    "nodeType": "StructuredDocumentation",
                    "src": "4692:374:18",
                    "text": " @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive."
                  },
                  "id": 3351,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ternary",
                  "nameLocation": "5080:7:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3332,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3327,
                        "mutability": "mutable",
                        "name": "condition",
                        "nameLocation": "5093:9:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3351,
                        "src": "5088:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3326,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5088:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3329,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "5112:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3351,
                        "src": "5104:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3328,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5104:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3331,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "5123:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3351,
                        "src": "5115:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3330,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5115:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5087:38:18"
                  },
                  "returnParameters": {
                    "id": 3335,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3334,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3351,
                        "src": "5149:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3333,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5149:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5148:9:18"
                  },
                  "scope": 4683,
                  "src": "5071:294:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3369,
                    "nodeType": "Block",
                    "src": "5502:44:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3362,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3354,
                                "src": "5527:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 3363,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3356,
                                "src": "5531:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5527:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3365,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3354,
                              "src": "5534:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3366,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3356,
                              "src": "5537:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3361,
                            "name": "ternary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3351,
                            "src": "5519:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (bool,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5519:20:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3360,
                        "id": 3368,
                        "nodeType": "Return",
                        "src": "5512:27:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3352,
                    "nodeType": "StructuredDocumentation",
                    "src": "5371:59:18",
                    "text": " @dev Returns the largest of two numbers."
                  },
                  "id": 3370,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "max",
                  "nameLocation": "5444:3:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3357,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3354,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "5456:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3370,
                        "src": "5448:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3353,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5448:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3356,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "5467:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3370,
                        "src": "5459:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3355,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5459:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5447:22:18"
                  },
                  "returnParameters": {
                    "id": 3360,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3359,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3370,
                        "src": "5493:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3358,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5493:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5492:9:18"
                  },
                  "scope": 4683,
                  "src": "5435:111:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3388,
                    "nodeType": "Block",
                    "src": "5684:44:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3381,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3373,
                                "src": "5709:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 3382,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3375,
                                "src": "5713:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5709:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3384,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3373,
                              "src": "5716:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3385,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3375,
                              "src": "5719:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3380,
                            "name": "ternary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3351,
                            "src": "5701:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (bool,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5701:20:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3379,
                        "id": 3387,
                        "nodeType": "Return",
                        "src": "5694:27:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3371,
                    "nodeType": "StructuredDocumentation",
                    "src": "5552:60:18",
                    "text": " @dev Returns the smallest of two numbers."
                  },
                  "id": 3389,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "min",
                  "nameLocation": "5626:3:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3376,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3373,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "5638:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3389,
                        "src": "5630:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3372,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5630:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3375,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "5649:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3389,
                        "src": "5641:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3374,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5641:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5629:22:18"
                  },
                  "returnParameters": {
                    "id": 3379,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3378,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3389,
                        "src": "5675:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3377,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5675:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5674:9:18"
                  },
                  "scope": 4683,
                  "src": "5617:111:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3411,
                    "nodeType": "Block",
                    "src": "5912:82:18",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3399,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3392,
                                  "src": "5967:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "id": 3400,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3394,
                                  "src": "5971:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5967:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 3402,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5966:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3405,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3403,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3392,
                                    "src": "5977:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "^",
                                  "rightExpression": {
                                    "id": 3404,
                                    "name": "b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3394,
                                    "src": "5981:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5977:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 3406,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5976:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 3407,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5986:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "5976:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5966:21:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3398,
                        "id": 3410,
                        "nodeType": "Return",
                        "src": "5959:28:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3390,
                    "nodeType": "StructuredDocumentation",
                    "src": "5734:102:18",
                    "text": " @dev Returns the average of two numbers. The result is rounded towards\n zero."
                  },
                  "id": 3412,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "average",
                  "nameLocation": "5850:7:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3395,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3392,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "5866:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3412,
                        "src": "5858:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3391,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5858:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3394,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "5877:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3412,
                        "src": "5869:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3393,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5869:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5857:22:18"
                  },
                  "returnParameters": {
                    "id": 3398,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3397,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3412,
                        "src": "5903:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3396,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5903:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5902:9:18"
                  },
                  "scope": 4683,
                  "src": "5841:153:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3452,
                    "nodeType": "Block",
                    "src": "6286:633:18",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3422,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3417,
                            "src": "6300:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3423,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6305:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6300:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3433,
                        "nodeType": "IfStatement",
                        "src": "6296:150:18",
                        "trueBody": {
                          "id": 3432,
                          "nodeType": "Block",
                          "src": "6308:138:18",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 3428,
                                      "name": "Panic",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1516,
                                      "src": "6412:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Panic_$1516_$",
                                        "typeString": "type(library Panic)"
                                      }
                                    },
                                    "id": 3429,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "6418:16:18",
                                    "memberName": "DIVISION_BY_ZERO",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1483,
                                    "src": "6412:22:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3425,
                                    "name": "Panic",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1516,
                                    "src": "6400:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Panic_$1516_$",
                                      "typeString": "type(library Panic)"
                                    }
                                  },
                                  "id": 3427,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6406:5:18",
                                  "memberName": "panic",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1515,
                                  "src": "6400:11:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256) pure"
                                  }
                                },
                                "id": 3430,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6400:35:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3431,
                              "nodeType": "ExpressionStatement",
                              "src": "6400:35:18"
                            }
                          ]
                        }
                      },
                      {
                        "id": 3451,
                        "nodeType": "UncheckedBlock",
                        "src": "6829:84:18",
                        "statements": [
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3438,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3436,
                                      "name": "a",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3415,
                                      "src": "6876:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 3437,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6880:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "6876:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3434,
                                    "name": "SafeCast",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6448,
                                    "src": "6860:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                      "typeString": "type(library SafeCast)"
                                    }
                                  },
                                  "id": 3435,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6869:6:18",
                                  "memberName": "toUint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6447,
                                  "src": "6860:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (bool) pure returns (uint256)"
                                  }
                                },
                                "id": 3439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6860:22:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3447,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3445,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3442,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3440,
                                              "name": "a",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3415,
                                              "src": "6887:1:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "hexValue": "31",
                                              "id": 3441,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "6891:1:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "6887:5:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 3443,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "6886:7:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "id": 3444,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3417,
                                        "src": "6896:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6886:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 3446,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6900:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "6886:15:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3448,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "6885:17:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6860:42:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 3421,
                            "id": 3450,
                            "nodeType": "Return",
                            "src": "6853:49:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3413,
                    "nodeType": "StructuredDocumentation",
                    "src": "6000:210:18",
                    "text": " @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."
                  },
                  "id": 3453,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ceilDiv",
                  "nameLocation": "6224:7:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3418,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3415,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "6240:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3453,
                        "src": "6232:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3414,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6232:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3417,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "6251:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3453,
                        "src": "6243:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3416,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6243:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6231:22:18"
                  },
                  "returnParameters": {
                    "id": 3421,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3420,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3453,
                        "src": "6277:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3419,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6277:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6276:9:18"
                  },
                  "scope": 4683,
                  "src": "6215:704:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3588,
                    "nodeType": "Block",
                    "src": "7340:3585:18",
                    "statements": [
                      {
                        "id": 3587,
                        "nodeType": "UncheckedBlock",
                        "src": "7350:3569:18",
                        "statements": [
                          {
                            "assignments": [
                              3466,
                              3468
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3466,
                                "mutability": "mutable",
                                "name": "high",
                                "nameLocation": "7383:4:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 3587,
                                "src": "7375:12:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3465,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7375:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 3468,
                                "mutability": "mutable",
                                "name": "low",
                                "nameLocation": "7397:3:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 3587,
                                "src": "7389:11:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3467,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7389:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3473,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 3470,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3456,
                                  "src": "7411:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 3471,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3458,
                                  "src": "7414:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 3469,
                                "name": "mul512",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3102,
                                "src": "7404:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256,uint256)"
                                }
                              },
                              "id": 3472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7404:12:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7374:42:18"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3474,
                                "name": "high",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3466,
                                "src": "7498:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3475,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7506:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7498:9:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3482,
                            "nodeType": "IfStatement",
                            "src": "7494:365:18",
                            "trueBody": {
                              "id": 3481,
                              "nodeType": "Block",
                              "src": "7509:350:18",
                              "statements": [
                                {
                                  "expression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3479,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3477,
                                      "name": "low",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3468,
                                      "src": "7827:3:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 3478,
                                      "name": "denominator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3460,
                                      "src": "7833:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7827:17:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "functionReturnParameters": 3464,
                                  "id": 3480,
                                  "nodeType": "Return",
                                  "src": "7820:24:18"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3483,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3460,
                                "src": "7969:11:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 3484,
                                "name": "high",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3466,
                                "src": "7984:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7969:19:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3501,
                            "nodeType": "IfStatement",
                            "src": "7965:142:18",
                            "trueBody": {
                              "id": 3500,
                              "nodeType": "Block",
                              "src": "7990:117:18",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3492,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3490,
                                              "name": "denominator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3460,
                                              "src": "8028:11:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "hexValue": "30",
                                              "id": 3491,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "8043:1:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "8028:16:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 3493,
                                              "name": "Panic",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1516,
                                              "src": "8046:5:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_Panic_$1516_$",
                                                "typeString": "type(library Panic)"
                                              }
                                            },
                                            "id": 3494,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "8052:16:18",
                                            "memberName": "DIVISION_BY_ZERO",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1483,
                                            "src": "8046:22:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 3495,
                                              "name": "Panic",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1516,
                                              "src": "8070:5:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_Panic_$1516_$",
                                                "typeString": "type(library Panic)"
                                              }
                                            },
                                            "id": 3496,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "8076:14:18",
                                            "memberName": "UNDER_OVERFLOW",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1479,
                                            "src": "8070:20:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 3489,
                                          "name": "ternary",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3351,
                                          "src": "8020:7:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (bool,uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 3497,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8020:71:18",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 3486,
                                        "name": "Panic",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1516,
                                        "src": "8008:5:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Panic_$1516_$",
                                          "typeString": "type(library Panic)"
                                        }
                                      },
                                      "id": 3488,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "8014:5:18",
                                      "memberName": "panic",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1515,
                                      "src": "8008:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                                        "typeString": "function (uint256) pure"
                                      }
                                    },
                                    "id": 3498,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8008:84:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3499,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8008:84:18"
                                }
                              ]
                            }
                          },
                          {
                            "assignments": [
                              3503
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3503,
                                "mutability": "mutable",
                                "name": "remainder",
                                "nameLocation": "8367:9:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 3587,
                                "src": "8359:17:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3502,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8359:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3504,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "8359:17:18"
                          },
                          {
                            "AST": {
                              "nativeSrc": "8415:283:18",
                              "nodeType": "YulBlock",
                              "src": "8415:283:18",
                              "statements": [
                                {
                                  "nativeSrc": "8484:38:18",
                                  "nodeType": "YulAssignment",
                                  "src": "8484:38:18",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "x",
                                        "nativeSrc": "8504:1:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "8504:1:18"
                                      },
                                      {
                                        "name": "y",
                                        "nativeSrc": "8507:1:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "8507:1:18"
                                      },
                                      {
                                        "name": "denominator",
                                        "nativeSrc": "8510:11:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "8510:11:18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mulmod",
                                      "nativeSrc": "8497:6:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "8497:6:18"
                                    },
                                    "nativeSrc": "8497:25:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "8497:25:18"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "remainder",
                                      "nativeSrc": "8484:9:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "8484:9:18"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "8604:37:18",
                                  "nodeType": "YulAssignment",
                                  "src": "8604:37:18",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "high",
                                        "nativeSrc": "8616:4:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "8616:4:18"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "remainder",
                                            "nativeSrc": "8625:9:18",
                                            "nodeType": "YulIdentifier",
                                            "src": "8625:9:18"
                                          },
                                          {
                                            "name": "low",
                                            "nativeSrc": "8636:3:18",
                                            "nodeType": "YulIdentifier",
                                            "src": "8636:3:18"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "gt",
                                          "nativeSrc": "8622:2:18",
                                          "nodeType": "YulIdentifier",
                                          "src": "8622:2:18"
                                        },
                                        "nativeSrc": "8622:18:18",
                                        "nodeType": "YulFunctionCall",
                                        "src": "8622:18:18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nativeSrc": "8612:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "8612:3:18"
                                    },
                                    "nativeSrc": "8612:29:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "8612:29:18"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "high",
                                      "nativeSrc": "8604:4:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "8604:4:18"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "8658:26:18",
                                  "nodeType": "YulAssignment",
                                  "src": "8658:26:18",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "low",
                                        "nativeSrc": "8669:3:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "8669:3:18"
                                      },
                                      {
                                        "name": "remainder",
                                        "nativeSrc": "8674:9:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "8674:9:18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nativeSrc": "8665:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "8665:3:18"
                                    },
                                    "nativeSrc": "8665:19:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "8665:19:18"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "low",
                                      "nativeSrc": "8658:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "8658:3:18"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "paris",
                            "externalReferences": [
                              {
                                "declaration": 3460,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8510:11:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3466,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8604:4:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3466,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8616:4:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3468,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8636:3:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3468,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8658:3:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3468,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8669:3:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3503,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8484:9:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3503,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8625:9:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3503,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8674:9:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3456,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8504:1:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3458,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8507:1:18",
                                "valueSize": 1
                              }
                            ],
                            "flags": [
                              "memory-safe"
                            ],
                            "id": 3505,
                            "nodeType": "InlineAssembly",
                            "src": "8390:308:18"
                          },
                          {
                            "assignments": [
                              3507
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3507,
                                "mutability": "mutable",
                                "name": "twos",
                                "nameLocation": "8910:4:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 3587,
                                "src": "8902:12:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3506,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8902:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3514,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3513,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3508,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3460,
                                "src": "8917:11:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3511,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "30",
                                      "id": 3509,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8932:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 3510,
                                      "name": "denominator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3460,
                                      "src": "8936:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8932:15:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3512,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "8931:17:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8917:31:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "8902:46:18"
                          },
                          {
                            "AST": {
                              "nativeSrc": "8987:359:18",
                              "nodeType": "YulBlock",
                              "src": "8987:359:18",
                              "statements": [
                                {
                                  "nativeSrc": "9052:37:18",
                                  "nodeType": "YulAssignment",
                                  "src": "9052:37:18",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "denominator",
                                        "nativeSrc": "9071:11:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "9071:11:18"
                                      },
                                      {
                                        "name": "twos",
                                        "nativeSrc": "9084:4:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "9084:4:18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nativeSrc": "9067:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "9067:3:18"
                                    },
                                    "nativeSrc": "9067:22:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "9067:22:18"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "denominator",
                                      "nativeSrc": "9052:11:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "9052:11:18"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "9153:21:18",
                                  "nodeType": "YulAssignment",
                                  "src": "9153:21:18",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "low",
                                        "nativeSrc": "9164:3:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "9164:3:18"
                                      },
                                      {
                                        "name": "twos",
                                        "nativeSrc": "9169:4:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "9169:4:18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nativeSrc": "9160:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "9160:3:18"
                                    },
                                    "nativeSrc": "9160:14:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "9160:14:18"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "low",
                                      "nativeSrc": "9153:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "9153:3:18"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "9293:39:18",
                                  "nodeType": "YulAssignment",
                                  "src": "9293:39:18",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nativeSrc": "9313:1:18",
                                                "nodeType": "YulLiteral",
                                                "src": "9313:1:18",
                                                "type": "",
                                                "value": "0"
                                              },
                                              {
                                                "name": "twos",
                                                "nativeSrc": "9316:4:18",
                                                "nodeType": "YulIdentifier",
                                                "src": "9316:4:18"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nativeSrc": "9309:3:18",
                                              "nodeType": "YulIdentifier",
                                              "src": "9309:3:18"
                                            },
                                            "nativeSrc": "9309:12:18",
                                            "nodeType": "YulFunctionCall",
                                            "src": "9309:12:18"
                                          },
                                          {
                                            "name": "twos",
                                            "nativeSrc": "9323:4:18",
                                            "nodeType": "YulIdentifier",
                                            "src": "9323:4:18"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nativeSrc": "9305:3:18",
                                          "nodeType": "YulIdentifier",
                                          "src": "9305:3:18"
                                        },
                                        "nativeSrc": "9305:23:18",
                                        "nodeType": "YulFunctionCall",
                                        "src": "9305:23:18"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "9330:1:18",
                                        "nodeType": "YulLiteral",
                                        "src": "9330:1:18",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "9301:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "9301:3:18"
                                    },
                                    "nativeSrc": "9301:31:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "9301:31:18"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "twos",
                                      "nativeSrc": "9293:4:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "9293:4:18"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "paris",
                            "externalReferences": [
                              {
                                "declaration": 3460,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9052:11:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3460,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9071:11:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3468,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9153:3:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3468,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9164:3:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3507,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9084:4:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3507,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9169:4:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3507,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9293:4:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3507,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9316:4:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3507,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9323:4:18",
                                "valueSize": 1
                              }
                            ],
                            "flags": [
                              "memory-safe"
                            ],
                            "id": 3515,
                            "nodeType": "InlineAssembly",
                            "src": "8962:384:18"
                          },
                          {
                            "expression": {
                              "id": 3520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3516,
                                "name": "low",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3468,
                                "src": "9409:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "|=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3517,
                                  "name": "high",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3466,
                                  "src": "9416:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 3518,
                                  "name": "twos",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3507,
                                  "src": "9423:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9416:11:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9409:18:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3521,
                            "nodeType": "ExpressionStatement",
                            "src": "9409:18:18"
                          },
                          {
                            "assignments": [
                              3523
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3523,
                                "mutability": "mutable",
                                "name": "inverse",
                                "nameLocation": "9770:7:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 3587,
                                "src": "9762:15:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3522,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9762:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3530,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3529,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3526,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "33",
                                      "id": 3524,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9781:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 3525,
                                      "name": "denominator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3460,
                                      "src": "9785:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9781:15:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3527,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9780:17:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "^",
                              "rightExpression": {
                                "hexValue": "32",
                                "id": 3528,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9800:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "9780:21:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "9762:39:18"
                          },
                          {
                            "expression": {
                              "id": 3537,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3531,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3523,
                                "src": "10018:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3536,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 3532,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10029:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3535,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3533,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3460,
                                    "src": "10033:11:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 3534,
                                    "name": "inverse",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3523,
                                    "src": "10047:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10033:21:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10029:25:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10018:36:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3538,
                            "nodeType": "ExpressionStatement",
                            "src": "10018:36:18"
                          },
                          {
                            "expression": {
                              "id": 3545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3539,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3523,
                                "src": "10088:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 3540,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10099:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3543,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3541,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3460,
                                    "src": "10103:11:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 3542,
                                    "name": "inverse",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3523,
                                    "src": "10117:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10103:21:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10099:25:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10088:36:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3546,
                            "nodeType": "ExpressionStatement",
                            "src": "10088:36:18"
                          },
                          {
                            "expression": {
                              "id": 3553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3547,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3523,
                                "src": "10160:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3552,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 3548,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10171:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3551,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3549,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3460,
                                    "src": "10175:11:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 3550,
                                    "name": "inverse",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3523,
                                    "src": "10189:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10175:21:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10171:25:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10160:36:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3554,
                            "nodeType": "ExpressionStatement",
                            "src": "10160:36:18"
                          },
                          {
                            "expression": {
                              "id": 3561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3555,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3523,
                                "src": "10231:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3560,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 3556,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10242:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3559,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3557,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3460,
                                    "src": "10246:11:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 3558,
                                    "name": "inverse",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3523,
                                    "src": "10260:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10246:21:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10242:25:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10231:36:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3562,
                            "nodeType": "ExpressionStatement",
                            "src": "10231:36:18"
                          },
                          {
                            "expression": {
                              "id": 3569,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3563,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3523,
                                "src": "10304:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3568,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 3564,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10315:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3567,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3565,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3460,
                                    "src": "10319:11:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 3566,
                                    "name": "inverse",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3523,
                                    "src": "10333:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10319:21:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10315:25:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10304:36:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3570,
                            "nodeType": "ExpressionStatement",
                            "src": "10304:36:18"
                          },
                          {
                            "expression": {
                              "id": 3577,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3571,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3523,
                                "src": "10378:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3576,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 3572,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10389:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3575,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3573,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3460,
                                    "src": "10393:11:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 3574,
                                    "name": "inverse",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3523,
                                    "src": "10407:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10393:21:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10389:25:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10378:36:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3578,
                            "nodeType": "ExpressionStatement",
                            "src": "10378:36:18"
                          },
                          {
                            "expression": {
                              "id": 3583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3579,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3463,
                                "src": "10859:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3580,
                                  "name": "low",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3468,
                                  "src": "10868:3:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 3581,
                                  "name": "inverse",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3523,
                                  "src": "10874:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10868:13:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10859:22:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3584,
                            "nodeType": "ExpressionStatement",
                            "src": "10859:22:18"
                          },
                          {
                            "expression": {
                              "id": 3585,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3463,
                              "src": "10902:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 3464,
                            "id": 3586,
                            "nodeType": "Return",
                            "src": "10895:13:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3454,
                    "nodeType": "StructuredDocumentation",
                    "src": "6925:312:18",
                    "text": " @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."
                  },
                  "id": 3589,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mulDiv",
                  "nameLocation": "7251:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3461,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3456,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "7266:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3589,
                        "src": "7258:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3455,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7258:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3458,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "7277:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3589,
                        "src": "7269:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3457,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7269:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3460,
                        "mutability": "mutable",
                        "name": "denominator",
                        "nameLocation": "7288:11:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3589,
                        "src": "7280:19:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3459,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7280:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7257:43:18"
                  },
                  "returnParameters": {
                    "id": 3464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3463,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "7332:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3589,
                        "src": "7324:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3462,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7324:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7323:16:18"
                  },
                  "scope": 4683,
                  "src": "7242:3683:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3625,
                    "nodeType": "Block",
                    "src": "11164:128:18",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3623,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 3605,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3592,
                                "src": "11188:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 3606,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3594,
                                "src": "11191:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 3607,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3596,
                                "src": "11194:11:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3604,
                              "name": "mulDiv",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                3589,
                                3626
                              ],
                              "referencedDeclaration": 3589,
                              "src": "11181:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11181:25:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 3621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 3612,
                                      "name": "rounding",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3599,
                                      "src": "11242:8:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Rounding_$3074",
                                        "typeString": "enum Math.Rounding"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_Rounding_$3074",
                                        "typeString": "enum Math.Rounding"
                                      }
                                    ],
                                    "id": 3611,
                                    "name": "unsignedRoundsUp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4682,
                                    "src": "11225:16:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$3074_$returns$_t_bool_$",
                                      "typeString": "function (enum Math.Rounding) pure returns (bool)"
                                    }
                                  },
                                  "id": 3613,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11225:26:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3620,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 3615,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3592,
                                        "src": "11262:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 3616,
                                        "name": "y",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3594,
                                        "src": "11265:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 3617,
                                        "name": "denominator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3596,
                                        "src": "11268:11:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 3614,
                                      "name": "mulmod",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -16,
                                      "src": "11255:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 3618,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11255:25:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 3619,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11283:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "11255:29:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "11225:59:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 3609,
                                "name": "SafeCast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6448,
                                "src": "11209:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                  "typeString": "type(library SafeCast)"
                                }
                              },
                              "id": 3610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "11218:6:18",
                              "memberName": "toUint",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6447,
                              "src": "11209:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                "typeString": "function (bool) pure returns (uint256)"
                              }
                            },
                            "id": 3622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11209:76:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11181:104:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3603,
                        "id": 3624,
                        "nodeType": "Return",
                        "src": "11174:111:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3590,
                    "nodeType": "StructuredDocumentation",
                    "src": "10931:118:18",
                    "text": " @dev Calculates x * y / denominator with full precision, following the selected rounding direction."
                  },
                  "id": 3626,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mulDiv",
                  "nameLocation": "11063:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3600,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3592,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "11078:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3626,
                        "src": "11070:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3591,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11070:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3594,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "11089:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3626,
                        "src": "11081:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3593,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11081:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3596,
                        "mutability": "mutable",
                        "name": "denominator",
                        "nameLocation": "11100:11:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3626,
                        "src": "11092:19:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3595,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11092:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3599,
                        "mutability": "mutable",
                        "name": "rounding",
                        "nameLocation": "11122:8:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3626,
                        "src": "11113:17:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$3074",
                          "typeString": "enum Math.Rounding"
                        },
                        "typeName": {
                          "id": 3598,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3597,
                            "name": "Rounding",
                            "nameLocations": [
                              "11113:8:18"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3074,
                            "src": "11113:8:18"
                          },
                          "referencedDeclaration": 3074,
                          "src": "11113:8:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Rounding_$3074",
                            "typeString": "enum Math.Rounding"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11069:62:18"
                  },
                  "returnParameters": {
                    "id": 3603,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3602,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3626,
                        "src": "11155:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3601,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11155:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11154:9:18"
                  },
                  "scope": 4683,
                  "src": "11054:238:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3675,
                    "nodeType": "Block",
                    "src": "11500:245:18",
                    "statements": [
                      {
                        "id": 3674,
                        "nodeType": "UncheckedBlock",
                        "src": "11510:229:18",
                        "statements": [
                          {
                            "assignments": [
                              3639,
                              3641
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3639,
                                "mutability": "mutable",
                                "name": "high",
                                "nameLocation": "11543:4:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 3674,
                                "src": "11535:12:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3638,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11535:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 3641,
                                "mutability": "mutable",
                                "name": "low",
                                "nameLocation": "11557:3:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 3674,
                                "src": "11549:11:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3640,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11549:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3646,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 3643,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3629,
                                  "src": "11571:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 3644,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3631,
                                  "src": "11574:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 3642,
                                "name": "mul512",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3102,
                                "src": "11564:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256,uint256)"
                                }
                              },
                              "id": 3645,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11564:12:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "11534:42:18"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3647,
                                "name": "high",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3639,
                                "src": "11594:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3650,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "31",
                                  "id": 3648,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11602:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<<",
                                "rightExpression": {
                                  "id": 3649,
                                  "name": "n",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3633,
                                  "src": "11607:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "11602:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11594:14:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3660,
                            "nodeType": "IfStatement",
                            "src": "11590:86:18",
                            "trueBody": {
                              "id": 3659,
                              "nodeType": "Block",
                              "src": "11610:66:18",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 3655,
                                          "name": "Panic",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1516,
                                          "src": "11640:5:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_Panic_$1516_$",
                                            "typeString": "type(library Panic)"
                                          }
                                        },
                                        "id": 3656,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "11646:14:18",
                                        "memberName": "UNDER_OVERFLOW",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1479,
                                        "src": "11640:20:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 3652,
                                        "name": "Panic",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1516,
                                        "src": "11628:5:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Panic_$1516_$",
                                          "typeString": "type(library Panic)"
                                        }
                                      },
                                      "id": 3654,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "11634:5:18",
                                      "memberName": "panic",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1515,
                                      "src": "11628:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                                        "typeString": "function (uint256) pure"
                                      }
                                    },
                                    "id": 3657,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11628:33:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3658,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11628:33:18"
                                }
                              ]
                            }
                          },
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3672,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3666,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3661,
                                      "name": "high",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3639,
                                      "src": "11697:4:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          },
                                          "id": 3664,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "323536",
                                            "id": 3662,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11706:3:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_256_by_1",
                                              "typeString": "int_const 256"
                                            },
                                            "value": "256"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 3663,
                                            "name": "n",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3633,
                                            "src": "11712:1:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "11706:7:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        }
                                      ],
                                      "id": 3665,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "11705:9:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "src": "11697:17:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3667,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "11696:19:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "|",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3670,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3668,
                                      "name": "low",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3641,
                                      "src": "11719:3:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">>",
                                    "rightExpression": {
                                      "id": 3669,
                                      "name": "n",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3633,
                                      "src": "11726:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "11719:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3671,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "11718:10:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11696:32:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 3637,
                            "id": 3673,
                            "nodeType": "Return",
                            "src": "11689:39:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3627,
                    "nodeType": "StructuredDocumentation",
                    "src": "11298:111:18",
                    "text": " @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256."
                  },
                  "id": 3676,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mulShr",
                  "nameLocation": "11423:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3634,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3629,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "11438:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3676,
                        "src": "11430:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3628,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11430:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3631,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "11449:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3676,
                        "src": "11441:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3630,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11441:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3633,
                        "mutability": "mutable",
                        "name": "n",
                        "nameLocation": "11458:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3676,
                        "src": "11452:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 3632,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "11452:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11429:31:18"
                  },
                  "returnParameters": {
                    "id": 3637,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3636,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "11492:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3676,
                        "src": "11484:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3635,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11484:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11483:16:18"
                  },
                  "scope": 4683,
                  "src": "11414:331:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3714,
                    "nodeType": "Block",
                    "src": "11963:113:18",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 3692,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3679,
                                "src": "11987:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 3693,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3681,
                                "src": "11990:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 3694,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3683,
                                "src": "11993:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              ],
                              "id": 3691,
                              "name": "mulShr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                3676,
                                3715
                              ],
                              "referencedDeclaration": 3676,
                              "src": "11980:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint8) pure returns (uint256)"
                              }
                            },
                            "id": 3695,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11980:15:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 3710,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 3699,
                                      "name": "rounding",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3686,
                                      "src": "12031:8:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Rounding_$3074",
                                        "typeString": "enum Math.Rounding"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_Rounding_$3074",
                                        "typeString": "enum Math.Rounding"
                                      }
                                    ],
                                    "id": 3698,
                                    "name": "unsignedRoundsUp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4682,
                                    "src": "12014:16:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$3074_$returns$_t_bool_$",
                                      "typeString": "function (enum Math.Rounding) pure returns (bool)"
                                    }
                                  },
                                  "id": 3700,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12014:26:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3709,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 3702,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3679,
                                        "src": "12051:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 3703,
                                        "name": "y",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3681,
                                        "src": "12054:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3706,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "31",
                                          "id": 3704,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12057:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "id": 3705,
                                          "name": "n",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3683,
                                          "src": "12062:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "src": "12057:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 3701,
                                      "name": "mulmod",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -16,
                                      "src": "12044:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 3707,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12044:20:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 3708,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12067:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "12044:24:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "12014:54:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 3696,
                                "name": "SafeCast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6448,
                                "src": "11998:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                  "typeString": "type(library SafeCast)"
                                }
                              },
                              "id": 3697,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "12007:6:18",
                              "memberName": "toUint",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6447,
                              "src": "11998:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                "typeString": "function (bool) pure returns (uint256)"
                              }
                            },
                            "id": 3711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11998:71:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11980:89:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3690,
                        "id": 3713,
                        "nodeType": "Return",
                        "src": "11973:96:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3677,
                    "nodeType": "StructuredDocumentation",
                    "src": "11751:109:18",
                    "text": " @dev Calculates x * y >> n with full precision, following the selected rounding direction."
                  },
                  "id": 3715,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mulShr",
                  "nameLocation": "11874:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3687,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3679,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "11889:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3715,
                        "src": "11881:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3678,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11881:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3681,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "11900:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3715,
                        "src": "11892:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3680,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11892:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3683,
                        "mutability": "mutable",
                        "name": "n",
                        "nameLocation": "11909:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3715,
                        "src": "11903:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 3682,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "11903:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3686,
                        "mutability": "mutable",
                        "name": "rounding",
                        "nameLocation": "11921:8:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3715,
                        "src": "11912:17:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$3074",
                          "typeString": "enum Math.Rounding"
                        },
                        "typeName": {
                          "id": 3685,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3684,
                            "name": "Rounding",
                            "nameLocations": [
                              "11912:8:18"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3074,
                            "src": "11912:8:18"
                          },
                          "referencedDeclaration": 3074,
                          "src": "11912:8:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Rounding_$3074",
                            "typeString": "enum Math.Rounding"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11880:50:18"
                  },
                  "returnParameters": {
                    "id": 3690,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3689,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3715,
                        "src": "11954:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3688,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11954:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11953:9:18"
                  },
                  "scope": 4683,
                  "src": "11865:211:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3811,
                    "nodeType": "Block",
                    "src": "12710:1849:18",
                    "statements": [
                      {
                        "id": 3810,
                        "nodeType": "UncheckedBlock",
                        "src": "12720:1833:18",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3725,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3720,
                                "src": "12748:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3726,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12753:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "12748:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3730,
                            "nodeType": "IfStatement",
                            "src": "12744:20:18",
                            "trueBody": {
                              "expression": {
                                "hexValue": "30",
                                "id": 3728,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12763:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 3724,
                              "id": 3729,
                              "nodeType": "Return",
                              "src": "12756:8:18"
                            }
                          },
                          {
                            "assignments": [
                              3732
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3732,
                                "mutability": "mutable",
                                "name": "remainder",
                                "nameLocation": "13243:9:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 3810,
                                "src": "13235:17:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3731,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13235:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3736,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3733,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3718,
                                "src": "13255:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "%",
                              "rightExpression": {
                                "id": 3734,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3720,
                                "src": "13259:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13255:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13235:25:18"
                          },
                          {
                            "assignments": [
                              3738
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3738,
                                "mutability": "mutable",
                                "name": "gcd",
                                "nameLocation": "13282:3:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 3810,
                                "src": "13274:11:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3737,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13274:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3740,
                            "initialValue": {
                              "id": 3739,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3720,
                              "src": "13288:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13274:15:18"
                          },
                          {
                            "assignments": [
                              3742
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3742,
                                "mutability": "mutable",
                                "name": "x",
                                "nameLocation": "13432:1:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 3810,
                                "src": "13425:8:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "typeName": {
                                  "id": 3741,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13425:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3744,
                            "initialValue": {
                              "hexValue": "30",
                              "id": 3743,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13436:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13425:12:18"
                          },
                          {
                            "assignments": [
                              3746
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3746,
                                "mutability": "mutable",
                                "name": "y",
                                "nameLocation": "13458:1:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 3810,
                                "src": "13451:8:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "typeName": {
                                  "id": 3745,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13451:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3748,
                            "initialValue": {
                              "hexValue": "31",
                              "id": 3747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13462:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13451:12:18"
                          },
                          {
                            "body": {
                              "id": 3785,
                              "nodeType": "Block",
                              "src": "13501:882:18",
                              "statements": [
                                {
                                  "assignments": [
                                    3753
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3753,
                                      "mutability": "mutable",
                                      "name": "quotient",
                                      "nameLocation": "13527:8:18",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 3785,
                                      "src": "13519:16:18",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 3752,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13519:7:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3757,
                                  "initialValue": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3756,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3754,
                                      "name": "gcd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3738,
                                      "src": "13538:3:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 3755,
                                      "name": "remainder",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3732,
                                      "src": "13544:9:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13538:15:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13519:34:18"
                                },
                                {
                                  "expression": {
                                    "id": 3768,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "components": [
                                        {
                                          "id": 3758,
                                          "name": "gcd",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3738,
                                          "src": "13573:3:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 3759,
                                          "name": "remainder",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3732,
                                          "src": "13578:9:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 3760,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "13572:16:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "id": 3761,
                                          "name": "remainder",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3732,
                                          "src": "13678:9:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3766,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 3762,
                                            "name": "gcd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3738,
                                            "src": "13923:3:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3765,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3763,
                                              "name": "remainder",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3732,
                                              "src": "13929:9:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "id": 3764,
                                              "name": "quotient",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3753,
                                              "src": "13941:8:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "13929:20:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "13923:26:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 3767,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "13591:376:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "src": "13572:395:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3769,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13572:395:18"
                                },
                                {
                                  "expression": {
                                    "id": 3783,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "components": [
                                        {
                                          "id": 3770,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3742,
                                          "src": "13987:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        {
                                          "id": 3771,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3746,
                                          "src": "13990:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        }
                                      ],
                                      "id": 3772,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "13986:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$",
                                        "typeString": "tuple(int256,int256)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "id": 3773,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3746,
                                          "src": "14072:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          },
                                          "id": 3781,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 3774,
                                            "name": "x",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3742,
                                            "src": "14326:1:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            },
                                            "id": 3780,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3775,
                                              "name": "y",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3746,
                                              "src": "14330:1:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "arguments": [
                                                {
                                                  "id": 3778,
                                                  "name": "quotient",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3753,
                                                  "src": "14341:8:18",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "id": 3777,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "14334:6:18",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_int256_$",
                                                  "typeString": "type(int256)"
                                                },
                                                "typeName": {
                                                  "id": 3776,
                                                  "name": "int256",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "14334:6:18",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 3779,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "14334:16:18",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            },
                                            "src": "14330:20:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "src": "14326:24:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        }
                                      ],
                                      "id": 3782,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "13995:373:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$",
                                        "typeString": "tuple(int256,int256)"
                                      }
                                    },
                                    "src": "13986:382:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3784,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13986:382:18"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3749,
                                "name": "remainder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3732,
                                "src": "13485:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13498:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13485:14:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3786,
                            "nodeType": "WhileStatement",
                            "src": "13478:905:18"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3789,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3787,
                                "name": "gcd",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3738,
                                "src": "14401:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 3788,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14408:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "14401:8:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3792,
                            "nodeType": "IfStatement",
                            "src": "14397:22:18",
                            "trueBody": {
                              "expression": {
                                "hexValue": "30",
                                "id": 3790,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14418:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 3724,
                              "id": 3791,
                              "nodeType": "Return",
                              "src": "14411:8:18"
                            }
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 3796,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3794,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3742,
                                    "src": "14470:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 3795,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14474:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "14470:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3803,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3797,
                                    "name": "n",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3720,
                                    "src": "14477:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "id": 3801,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "14489:2:18",
                                        "subExpression": {
                                          "id": 3800,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3742,
                                          "src": "14490:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      ],
                                      "id": 3799,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "14481:7:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 3798,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14481:7:18",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3802,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14481:11:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "14477:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 3806,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3742,
                                      "src": "14502:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "id": 3805,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14494:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 3804,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14494:7:18",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14494:10:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 3793,
                                "name": "ternary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3351,
                                "src": "14462:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (bool,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 3808,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14462:43:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 3724,
                            "id": 3809,
                            "nodeType": "Return",
                            "src": "14455:50:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3716,
                    "nodeType": "StructuredDocumentation",
                    "src": "12082:553:18",
                    "text": " @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n If the input value is not inversible, 0 is returned.\n NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}."
                  },
                  "id": 3812,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invMod",
                  "nameLocation": "12649:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3721,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3718,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "12664:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3812,
                        "src": "12656:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3717,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12656:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3720,
                        "mutability": "mutable",
                        "name": "n",
                        "nameLocation": "12675:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3812,
                        "src": "12667:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3719,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12667:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12655:22:18"
                  },
                  "returnParameters": {
                    "id": 3724,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3723,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3812,
                        "src": "12701:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3722,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12701:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12700:9:18"
                  },
                  "scope": 4683,
                  "src": "12640:1919:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3832,
                    "nodeType": "Block",
                    "src": "15159:82:18",
                    "statements": [
                      {
                        "id": 3831,
                        "nodeType": "UncheckedBlock",
                        "src": "15169:66:18",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3824,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3815,
                                  "src": "15212:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3825,
                                    "name": "p",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3817,
                                    "src": "15215:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "32",
                                    "id": 3826,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15219:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "15215:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 3828,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3817,
                                  "src": "15222:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 3822,
                                  "name": "Math",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4683,
                                  "src": "15200:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Math_$4683_$",
                                    "typeString": "type(library Math)"
                                  }
                                },
                                "id": 3823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "15205:6:18",
                                "memberName": "modExp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3869,
                                "src": "15200:11:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                }
                              },
                              "id": 3829,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15200:24:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 3821,
                            "id": 3830,
                            "nodeType": "Return",
                            "src": "15193:31:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3813,
                    "nodeType": "StructuredDocumentation",
                    "src": "14565:514:18",
                    "text": " @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n NOTE: this function does NOT check that `p` is a prime greater than `2`."
                  },
                  "id": 3833,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invModPrime",
                  "nameLocation": "15093:11:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3818,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3815,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "15113:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3833,
                        "src": "15105:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3814,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15105:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3817,
                        "mutability": "mutable",
                        "name": "p",
                        "nameLocation": "15124:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3833,
                        "src": "15116:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3816,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15116:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15104:22:18"
                  },
                  "returnParameters": {
                    "id": 3821,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3820,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3833,
                        "src": "15150:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3819,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15150:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15149:9:18"
                  },
                  "scope": 4683,
                  "src": "15084:157:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3868,
                    "nodeType": "Block",
                    "src": "16011:174:18",
                    "statements": [
                      {
                        "assignments": [
                          3846,
                          3848
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3846,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "16027:7:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 3868,
                            "src": "16022:12:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3845,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "16022:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3848,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "16044:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 3868,
                            "src": "16036:14:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3847,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16036:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3854,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3850,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3836,
                              "src": "16064:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3851,
                              "name": "e",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3838,
                              "src": "16067:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3852,
                              "name": "m",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3840,
                              "src": "16070:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3849,
                            "name": "tryModExp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3893,
                              3975
                            ],
                            "referencedDeclaration": 3893,
                            "src": "16054:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) view returns (bool,uint256)"
                            }
                          },
                          "id": 3853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16054:18:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16021:51:18"
                      },
                      {
                        "condition": {
                          "id": 3856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "16086:8:18",
                          "subExpression": {
                            "id": 3855,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3846,
                            "src": "16087:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3865,
                        "nodeType": "IfStatement",
                        "src": "16082:74:18",
                        "trueBody": {
                          "id": 3864,
                          "nodeType": "Block",
                          "src": "16096:60:18",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 3860,
                                      "name": "Panic",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1516,
                                      "src": "16122:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Panic_$1516_$",
                                        "typeString": "type(library Panic)"
                                      }
                                    },
                                    "id": 3861,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "16128:16:18",
                                    "memberName": "DIVISION_BY_ZERO",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1483,
                                    "src": "16122:22:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3857,
                                    "name": "Panic",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1516,
                                    "src": "16110:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Panic_$1516_$",
                                      "typeString": "type(library Panic)"
                                    }
                                  },
                                  "id": 3859,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "16116:5:18",
                                  "memberName": "panic",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1515,
                                  "src": "16110:11:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256) pure"
                                  }
                                },
                                "id": 3862,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16110:35:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3863,
                              "nodeType": "ExpressionStatement",
                              "src": "16110:35:18"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 3866,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3848,
                          "src": "16172:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3844,
                        "id": 3867,
                        "nodeType": "Return",
                        "src": "16165:13:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3834,
                    "nodeType": "StructuredDocumentation",
                    "src": "15247:678:18",
                    "text": " @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n Requirements:\n - modulus can't be zero\n - underlying staticcall to precompile must succeed\n IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n sure the chain you're using it on supports the precompiled contract for modular exponentiation\n at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n interpreted as 0."
                  },
                  "id": 3869,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "modExp",
                  "nameLocation": "15939:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3841,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3836,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "15954:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3869,
                        "src": "15946:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3835,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15946:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3838,
                        "mutability": "mutable",
                        "name": "e",
                        "nameLocation": "15965:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3869,
                        "src": "15957:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3837,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15957:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3840,
                        "mutability": "mutable",
                        "name": "m",
                        "nameLocation": "15976:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3869,
                        "src": "15968:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3839,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15968:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15945:33:18"
                  },
                  "returnParameters": {
                    "id": 3844,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3843,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3869,
                        "src": "16002:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3842,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16002:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16001:9:18"
                  },
                  "scope": 4683,
                  "src": "15930:255:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3892,
                    "nodeType": "Block",
                    "src": "17039:1493:18",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3883,
                            "name": "m",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3876,
                            "src": "17053:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3884,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17058:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17053:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3890,
                        "nodeType": "IfStatement",
                        "src": "17049:29:18",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "66616c7365",
                                "id": 3886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17069:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "hexValue": "30",
                                "id": 3887,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17076:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 3888,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "17068:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                              "typeString": "tuple(bool,int_const 0)"
                            }
                          },
                          "functionReturnParameters": 3882,
                          "id": 3889,
                          "nodeType": "Return",
                          "src": "17061:17:18"
                        }
                      },
                      {
                        "AST": {
                          "nativeSrc": "17113:1413:18",
                          "nodeType": "YulBlock",
                          "src": "17113:1413:18",
                          "statements": [
                            {
                              "nativeSrc": "17127:22:18",
                              "nodeType": "YulVariableDeclaration",
                              "src": "17127:22:18",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "17144:4:18",
                                    "nodeType": "YulLiteral",
                                    "src": "17144:4:18",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "17138:5:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "17138:5:18"
                                },
                                "nativeSrc": "17138:11:18",
                                "nodeType": "YulFunctionCall",
                                "src": "17138:11:18"
                              },
                              "variables": [
                                {
                                  "name": "ptr",
                                  "nativeSrc": "17131:3:18",
                                  "nodeType": "YulTypedName",
                                  "src": "17131:3:18",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ptr",
                                    "nativeSrc": "18057:3:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "18057:3:18"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18062:4:18",
                                    "nodeType": "YulLiteral",
                                    "src": "18062:4:18",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18050:6:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "18050:6:18"
                                },
                                "nativeSrc": "18050:17:18",
                                "nodeType": "YulFunctionCall",
                                "src": "18050:17:18"
                              },
                              "nativeSrc": "18050:17:18",
                              "nodeType": "YulExpressionStatement",
                              "src": "18050:17:18"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "ptr",
                                        "nativeSrc": "18091:3:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "18091:3:18"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "18096:4:18",
                                        "nodeType": "YulLiteral",
                                        "src": "18096:4:18",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "18087:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "18087:3:18"
                                    },
                                    "nativeSrc": "18087:14:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18087:14:18"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18103:4:18",
                                    "nodeType": "YulLiteral",
                                    "src": "18103:4:18",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18080:6:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "18080:6:18"
                                },
                                "nativeSrc": "18080:28:18",
                                "nodeType": "YulFunctionCall",
                                "src": "18080:28:18"
                              },
                              "nativeSrc": "18080:28:18",
                              "nodeType": "YulExpressionStatement",
                              "src": "18080:28:18"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "ptr",
                                        "nativeSrc": "18132:3:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "18132:3:18"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "18137:4:18",
                                        "nodeType": "YulLiteral",
                                        "src": "18137:4:18",
                                        "type": "",
                                        "value": "0x40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "18128:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "18128:3:18"
                                    },
                                    "nativeSrc": "18128:14:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18128:14:18"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18144:4:18",
                                    "nodeType": "YulLiteral",
                                    "src": "18144:4:18",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18121:6:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "18121:6:18"
                                },
                                "nativeSrc": "18121:28:18",
                                "nodeType": "YulFunctionCall",
                                "src": "18121:28:18"
                              },
                              "nativeSrc": "18121:28:18",
                              "nodeType": "YulExpressionStatement",
                              "src": "18121:28:18"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "ptr",
                                        "nativeSrc": "18173:3:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "18173:3:18"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "18178:4:18",
                                        "nodeType": "YulLiteral",
                                        "src": "18178:4:18",
                                        "type": "",
                                        "value": "0x60"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "18169:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "18169:3:18"
                                    },
                                    "nativeSrc": "18169:14:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18169:14:18"
                                  },
                                  {
                                    "name": "b",
                                    "nativeSrc": "18185:1:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "18185:1:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18162:6:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "18162:6:18"
                                },
                                "nativeSrc": "18162:25:18",
                                "nodeType": "YulFunctionCall",
                                "src": "18162:25:18"
                              },
                              "nativeSrc": "18162:25:18",
                              "nodeType": "YulExpressionStatement",
                              "src": "18162:25:18"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "ptr",
                                        "nativeSrc": "18211:3:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "18211:3:18"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "18216:4:18",
                                        "nodeType": "YulLiteral",
                                        "src": "18216:4:18",
                                        "type": "",
                                        "value": "0x80"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "18207:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "18207:3:18"
                                    },
                                    "nativeSrc": "18207:14:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18207:14:18"
                                  },
                                  {
                                    "name": "e",
                                    "nativeSrc": "18223:1:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "18223:1:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18200:6:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "18200:6:18"
                                },
                                "nativeSrc": "18200:25:18",
                                "nodeType": "YulFunctionCall",
                                "src": "18200:25:18"
                              },
                              "nativeSrc": "18200:25:18",
                              "nodeType": "YulExpressionStatement",
                              "src": "18200:25:18"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "ptr",
                                        "nativeSrc": "18249:3:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "18249:3:18"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "18254:4:18",
                                        "nodeType": "YulLiteral",
                                        "src": "18254:4:18",
                                        "type": "",
                                        "value": "0xa0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "18245:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "18245:3:18"
                                    },
                                    "nativeSrc": "18245:14:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18245:14:18"
                                  },
                                  {
                                    "name": "m",
                                    "nativeSrc": "18261:1:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "18261:1:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18238:6:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "18238:6:18"
                                },
                                "nativeSrc": "18238:25:18",
                                "nodeType": "YulFunctionCall",
                                "src": "18238:25:18"
                              },
                              "nativeSrc": "18238:25:18",
                              "nodeType": "YulExpressionStatement",
                              "src": "18238:25:18"
                            },
                            {
                              "nativeSrc": "18425:57:18",
                              "nodeType": "YulAssignment",
                              "src": "18425:57:18",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nativeSrc": "18447:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "18447:3:18"
                                    },
                                    "nativeSrc": "18447:5:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18447:5:18"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18454:4:18",
                                    "nodeType": "YulLiteral",
                                    "src": "18454:4:18",
                                    "type": "",
                                    "value": "0x05"
                                  },
                                  {
                                    "name": "ptr",
                                    "nativeSrc": "18460:3:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "18460:3:18"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18465:4:18",
                                    "nodeType": "YulLiteral",
                                    "src": "18465:4:18",
                                    "type": "",
                                    "value": "0xc0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18471:4:18",
                                    "nodeType": "YulLiteral",
                                    "src": "18471:4:18",
                                    "type": "",
                                    "value": "0x00"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18477:4:18",
                                    "nodeType": "YulLiteral",
                                    "src": "18477:4:18",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "staticcall",
                                  "nativeSrc": "18436:10:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "18436:10:18"
                                },
                                "nativeSrc": "18436:46:18",
                                "nodeType": "YulFunctionCall",
                                "src": "18436:46:18"
                              },
                              "variableNames": [
                                {
                                  "name": "success",
                                  "nativeSrc": "18425:7:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "18425:7:18"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "18495:21:18",
                              "nodeType": "YulAssignment",
                              "src": "18495:21:18",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18511:4:18",
                                    "nodeType": "YulLiteral",
                                    "src": "18511:4:18",
                                    "type": "",
                                    "value": "0x00"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "18505:5:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "18505:5:18"
                                },
                                "nativeSrc": "18505:11:18",
                                "nodeType": "YulFunctionCall",
                                "src": "18505:11:18"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nativeSrc": "18495:6:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "18495:6:18"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 3872,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18185:1:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3874,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18223:1:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3876,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18261:1:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3881,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18495:6:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3879,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18425:7:18",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3891,
                        "nodeType": "InlineAssembly",
                        "src": "17088:1438:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3870,
                    "nodeType": "StructuredDocumentation",
                    "src": "16191:738:18",
                    "text": " @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n to operate modulo 0 or if the underlying precompile reverted.\n IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n of a revert, but the result may be incorrectly interpreted as 0."
                  },
                  "id": 3893,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryModExp",
                  "nameLocation": "16943:9:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3877,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3872,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "16961:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3893,
                        "src": "16953:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3871,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16953:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3874,
                        "mutability": "mutable",
                        "name": "e",
                        "nameLocation": "16972:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3893,
                        "src": "16964:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3873,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16964:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3876,
                        "mutability": "mutable",
                        "name": "m",
                        "nameLocation": "16983:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3893,
                        "src": "16975:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3875,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16975:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16952:33:18"
                  },
                  "returnParameters": {
                    "id": 3882,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3879,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "17014:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3893,
                        "src": "17009:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3878,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "17009:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3881,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "17031:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3893,
                        "src": "17023:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3880,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17023:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17008:30:18"
                  },
                  "scope": 4683,
                  "src": "16934:1598:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3928,
                    "nodeType": "Block",
                    "src": "18729:179:18",
                    "statements": [
                      {
                        "assignments": [
                          3906,
                          3908
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3906,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "18745:7:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 3928,
                            "src": "18740:12:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3905,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "18740:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3908,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "18767:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 3928,
                            "src": "18754:19:18",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3907,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "18754:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3914,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3910,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3896,
                              "src": "18787:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3911,
                              "name": "e",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3898,
                              "src": "18790:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3912,
                              "name": "m",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3900,
                              "src": "18793:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3909,
                            "name": "tryModExp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3893,
                              3975
                            ],
                            "referencedDeclaration": 3975,
                            "src": "18777:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,bytes memory,bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 3913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18777:18:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18739:56:18"
                      },
                      {
                        "condition": {
                          "id": 3916,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "18809:8:18",
                          "subExpression": {
                            "id": 3915,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3906,
                            "src": "18810:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3925,
                        "nodeType": "IfStatement",
                        "src": "18805:74:18",
                        "trueBody": {
                          "id": 3924,
                          "nodeType": "Block",
                          "src": "18819:60:18",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 3920,
                                      "name": "Panic",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1516,
                                      "src": "18845:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Panic_$1516_$",
                                        "typeString": "type(library Panic)"
                                      }
                                    },
                                    "id": 3921,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "18851:16:18",
                                    "memberName": "DIVISION_BY_ZERO",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1483,
                                    "src": "18845:22:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3917,
                                    "name": "Panic",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1516,
                                    "src": "18833:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Panic_$1516_$",
                                      "typeString": "type(library Panic)"
                                    }
                                  },
                                  "id": 3919,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "18839:5:18",
                                  "memberName": "panic",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1515,
                                  "src": "18833:11:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256) pure"
                                  }
                                },
                                "id": 3922,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18833:35:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3923,
                              "nodeType": "ExpressionStatement",
                              "src": "18833:35:18"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 3926,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3908,
                          "src": "18895:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3904,
                        "id": 3927,
                        "nodeType": "Return",
                        "src": "18888:13:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3894,
                    "nodeType": "StructuredDocumentation",
                    "src": "18538:85:18",
                    "text": " @dev Variant of {modExp} that supports inputs of arbitrary length."
                  },
                  "id": 3929,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "modExp",
                  "nameLocation": "18637:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3901,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3896,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "18657:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3929,
                        "src": "18644:14:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3895,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "18644:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3898,
                        "mutability": "mutable",
                        "name": "e",
                        "nameLocation": "18673:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3929,
                        "src": "18660:14:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3897,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "18660:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3900,
                        "mutability": "mutable",
                        "name": "m",
                        "nameLocation": "18689:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3929,
                        "src": "18676:14:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3899,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "18676:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18643:48:18"
                  },
                  "returnParameters": {
                    "id": 3904,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3903,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3929,
                        "src": "18715:12:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3902,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "18715:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18714:14:18"
                  },
                  "scope": 4683,
                  "src": "18628:280:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3974,
                    "nodeType": "Block",
                    "src": "19162:771:18",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 3944,
                              "name": "m",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3936,
                              "src": "19187:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3943,
                            "name": "_zeroBytes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4008,
                            "src": "19176:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (bytes memory) pure returns (bool)"
                            }
                          },
                          "id": 3945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19176:13:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3953,
                        "nodeType": "IfStatement",
                        "src": "19172:47:18",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "66616c7365",
                                "id": 3946,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "19199:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3949,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "19216:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 3948,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "NewExpression",
                                  "src": "19206:9:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function (uint256) pure returns (bytes memory)"
                                  },
                                  "typeName": {
                                    "id": 3947,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "19210:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  }
                                },
                                "id": 3950,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19206:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "id": 3951,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "19198:21:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "functionReturnParameters": 3942,
                          "id": 3952,
                          "nodeType": "Return",
                          "src": "19191:28:18"
                        }
                      },
                      {
                        "assignments": [
                          3955
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3955,
                            "mutability": "mutable",
                            "name": "mLen",
                            "nameLocation": "19238:4:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 3974,
                            "src": "19230:12:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3954,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19230:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3958,
                        "initialValue": {
                          "expression": {
                            "id": 3956,
                            "name": "m",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3936,
                            "src": "19245:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 3957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19247:6:18",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "19245:8:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19230:23:18"
                      },
                      {
                        "expression": {
                          "id": 3971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3959,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3941,
                            "src": "19335:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 3962,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3932,
                                  "src": "19361:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 3963,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "19363:6:18",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "19361:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 3964,
                                  "name": "e",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3934,
                                  "src": "19371:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 3965,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "19373:6:18",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "19371:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 3966,
                                "name": "mLen",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3955,
                                "src": "19381:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 3967,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3932,
                                "src": "19387:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 3968,
                                "name": "e",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3934,
                                "src": "19390:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 3969,
                                "name": "m",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3936,
                                "src": "19393:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "id": 3960,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "19344:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 3961,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "19348:12:18",
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "src": "19344:16:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 3970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19344:51:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "19335:60:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 3972,
                        "nodeType": "ExpressionStatement",
                        "src": "19335:60:18"
                      },
                      {
                        "AST": {
                          "nativeSrc": "19431:496:18",
                          "nodeType": "YulBlock",
                          "src": "19431:496:18",
                          "statements": [
                            {
                              "nativeSrc": "19445:32:18",
                              "nodeType": "YulVariableDeclaration",
                              "src": "19445:32:18",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "result",
                                    "nativeSrc": "19464:6:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "19464:6:18"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "19472:4:18",
                                    "nodeType": "YulLiteral",
                                    "src": "19472:4:18",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "19460:3:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "19460:3:18"
                                },
                                "nativeSrc": "19460:17:18",
                                "nodeType": "YulFunctionCall",
                                "src": "19460:17:18"
                              },
                              "variables": [
                                {
                                  "name": "dataPtr",
                                  "nativeSrc": "19449:7:18",
                                  "nodeType": "YulTypedName",
                                  "src": "19449:7:18",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nativeSrc": "19567:73:18",
                              "nodeType": "YulAssignment",
                              "src": "19567:73:18",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nativeSrc": "19589:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "19589:3:18"
                                    },
                                    "nativeSrc": "19589:5:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "19589:5:18"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "19596:4:18",
                                    "nodeType": "YulLiteral",
                                    "src": "19596:4:18",
                                    "type": "",
                                    "value": "0x05"
                                  },
                                  {
                                    "name": "dataPtr",
                                    "nativeSrc": "19602:7:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "19602:7:18"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "19617:6:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "19617:6:18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "19611:5:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "19611:5:18"
                                    },
                                    "nativeSrc": "19611:13:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "19611:13:18"
                                  },
                                  {
                                    "name": "dataPtr",
                                    "nativeSrc": "19626:7:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "19626:7:18"
                                  },
                                  {
                                    "name": "mLen",
                                    "nativeSrc": "19635:4:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "19635:4:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "staticcall",
                                  "nativeSrc": "19578:10:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "19578:10:18"
                                },
                                "nativeSrc": "19578:62:18",
                                "nodeType": "YulFunctionCall",
                                "src": "19578:62:18"
                              },
                              "variableNames": [
                                {
                                  "name": "success",
                                  "nativeSrc": "19567:7:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "19567:7:18"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "result",
                                    "nativeSrc": "19796:6:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "19796:6:18"
                                  },
                                  {
                                    "name": "mLen",
                                    "nativeSrc": "19804:4:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "19804:4:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "19789:6:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "19789:6:18"
                                },
                                "nativeSrc": "19789:20:18",
                                "nodeType": "YulFunctionCall",
                                "src": "19789:20:18"
                              },
                              "nativeSrc": "19789:20:18",
                              "nodeType": "YulExpressionStatement",
                              "src": "19789:20:18"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "19892:4:18",
                                    "nodeType": "YulLiteral",
                                    "src": "19892:4:18",
                                    "type": "",
                                    "value": "0x40"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataPtr",
                                        "nativeSrc": "19902:7:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "19902:7:18"
                                      },
                                      {
                                        "name": "mLen",
                                        "nativeSrc": "19911:4:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "19911:4:18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "19898:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "19898:3:18"
                                    },
                                    "nativeSrc": "19898:18:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "19898:18:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "19885:6:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "19885:6:18"
                                },
                                "nativeSrc": "19885:32:18",
                                "nodeType": "YulFunctionCall",
                                "src": "19885:32:18"
                              },
                              "nativeSrc": "19885:32:18",
                              "nodeType": "YulExpressionStatement",
                              "src": "19885:32:18"
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 3955,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19635:4:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3955,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19804:4:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3955,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19911:4:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3941,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19464:6:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3941,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19617:6:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3941,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19796:6:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3939,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19567:7:18",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3973,
                        "nodeType": "InlineAssembly",
                        "src": "19406:521:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3930,
                    "nodeType": "StructuredDocumentation",
                    "src": "18914:88:18",
                    "text": " @dev Variant of {tryModExp} that supports inputs of arbitrary length."
                  },
                  "id": 3975,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryModExp",
                  "nameLocation": "19016:9:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3937,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3932,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "19048:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3975,
                        "src": "19035:14:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3931,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "19035:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3934,
                        "mutability": "mutable",
                        "name": "e",
                        "nameLocation": "19072:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3975,
                        "src": "19059:14:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3933,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "19059:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3936,
                        "mutability": "mutable",
                        "name": "m",
                        "nameLocation": "19096:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3975,
                        "src": "19083:14:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3935,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "19083:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19025:78:18"
                  },
                  "returnParameters": {
                    "id": 3942,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3939,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "19132:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3975,
                        "src": "19127:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3938,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "19127:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3941,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "19154:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3975,
                        "src": "19141:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3940,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "19141:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19126:35:18"
                  },
                  "scope": 4683,
                  "src": "19007:926:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4007,
                    "nodeType": "Block",
                    "src": "20088:176:18",
                    "statements": [
                      {
                        "body": {
                          "id": 4003,
                          "nodeType": "Block",
                          "src": "20145:92:18",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                },
                                "id": 3998,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "baseExpression": {
                                    "id": 3994,
                                    "name": "byteArray",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3978,
                                    "src": "20163:9:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 3996,
                                  "indexExpression": {
                                    "id": 3995,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3984,
                                    "src": "20173:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "20163:12:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 3997,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20179:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "20163:17:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4002,
                              "nodeType": "IfStatement",
                              "src": "20159:68:18",
                              "trueBody": {
                                "id": 4001,
                                "nodeType": "Block",
                                "src": "20182:45:18",
                                "statements": [
                                  {
                                    "expression": {
                                      "hexValue": "66616c7365",
                                      "id": 3999,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "20207:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "functionReturnParameters": 3982,
                                    "id": 4000,
                                    "nodeType": "Return",
                                    "src": "20200:12:18"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3987,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3984,
                            "src": "20118:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 3988,
                              "name": "byteArray",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3978,
                              "src": "20122:9:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3989,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "20132:6:18",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "20122:16:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20118:20:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4004,
                        "initializationExpression": {
                          "assignments": [
                            3984
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3984,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "20111:1:18",
                              "nodeType": "VariableDeclaration",
                              "scope": 4004,
                              "src": "20103:9:18",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3983,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "20103:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 3986,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 3985,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20115:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "20103:13:18"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 3992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "20140:3:18",
                            "subExpression": {
                              "id": 3991,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3984,
                              "src": "20142:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3993,
                          "nodeType": "ExpressionStatement",
                          "src": "20140:3:18"
                        },
                        "nodeType": "ForStatement",
                        "src": "20098:139:18"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 4005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "20253:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3982,
                        "id": 4006,
                        "nodeType": "Return",
                        "src": "20246:11:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3976,
                    "nodeType": "StructuredDocumentation",
                    "src": "19939:72:18",
                    "text": " @dev Returns whether the provided byte array is zero."
                  },
                  "id": 4008,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_zeroBytes",
                  "nameLocation": "20025:10:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3979,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3978,
                        "mutability": "mutable",
                        "name": "byteArray",
                        "nameLocation": "20049:9:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4008,
                        "src": "20036:22:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3977,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "20036:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20035:24:18"
                  },
                  "returnParameters": {
                    "id": 3982,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3981,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4008,
                        "src": "20082:4:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3980,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "20082:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20081:6:18"
                  },
                  "scope": 4683,
                  "src": "20016:248:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 4226,
                    "nodeType": "Block",
                    "src": "20624:5124:18",
                    "statements": [
                      {
                        "id": 4225,
                        "nodeType": "UncheckedBlock",
                        "src": "20634:5108:18",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4016,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4011,
                                "src": "20728:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 4017,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20733:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "20728:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4022,
                            "nodeType": "IfStatement",
                            "src": "20724:53:18",
                            "trueBody": {
                              "id": 4021,
                              "nodeType": "Block",
                              "src": "20736:41:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4019,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4011,
                                    "src": "20761:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "functionReturnParameters": 4015,
                                  "id": 4020,
                                  "nodeType": "Return",
                                  "src": "20754:8:18"
                                }
                              ]
                            }
                          },
                          {
                            "assignments": [
                              4024
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4024,
                                "mutability": "mutable",
                                "name": "aa",
                                "nameLocation": "21712:2:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 4225,
                                "src": "21704:10:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4023,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21704:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4026,
                            "initialValue": {
                              "id": 4025,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4011,
                              "src": "21717:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "21704:14:18"
                          },
                          {
                            "assignments": [
                              4028
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4028,
                                "mutability": "mutable",
                                "name": "xn",
                                "nameLocation": "21740:2:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 4225,
                                "src": "21732:10:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4027,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21732:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4030,
                            "initialValue": {
                              "hexValue": "31",
                              "id": 4029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21745:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "21732:14:18"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4036,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4031,
                                "name": "aa",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4024,
                                "src": "21765:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                      "typeString": "int_const 3402...(31 digits omitted)...1456"
                                    },
                                    "id": 4034,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 4032,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21772:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "313238",
                                      "id": 4033,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21777:3:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_128_by_1",
                                        "typeString": "int_const 128"
                                      },
                                      "value": "128"
                                    },
                                    "src": "21772:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                      "typeString": "int_const 3402...(31 digits omitted)...1456"
                                    }
                                  }
                                ],
                                "id": 4035,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "21771:10:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...1456"
                                }
                              },
                              "src": "21765:16:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4046,
                            "nodeType": "IfStatement",
                            "src": "21761:92:18",
                            "trueBody": {
                              "id": 4045,
                              "nodeType": "Block",
                              "src": "21783:70:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4039,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4037,
                                      "name": "aa",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4024,
                                      "src": "21801:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": ">>=",
                                    "rightHandSide": {
                                      "hexValue": "313238",
                                      "id": 4038,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21808:3:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_128_by_1",
                                        "typeString": "int_const 128"
                                      },
                                      "value": "128"
                                    },
                                    "src": "21801:10:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4040,
                                  "nodeType": "ExpressionStatement",
                                  "src": "21801:10:18"
                                },
                                {
                                  "expression": {
                                    "id": 4043,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4041,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4028,
                                      "src": "21829:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "<<=",
                                    "rightHandSide": {
                                      "hexValue": "3634",
                                      "id": 4042,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21836:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_64_by_1",
                                        "typeString": "int_const 64"
                                      },
                                      "value": "64"
                                    },
                                    "src": "21829:9:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4044,
                                  "nodeType": "ExpressionStatement",
                                  "src": "21829:9:18"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4047,
                                "name": "aa",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4024,
                                "src": "21870:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_18446744073709551616_by_1",
                                      "typeString": "int_const 18446744073709551616"
                                    },
                                    "id": 4050,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 4048,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21877:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "3634",
                                      "id": 4049,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21882:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_64_by_1",
                                        "typeString": "int_const 64"
                                      },
                                      "value": "64"
                                    },
                                    "src": "21877:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_18446744073709551616_by_1",
                                      "typeString": "int_const 18446744073709551616"
                                    }
                                  }
                                ],
                                "id": 4051,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "21876:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_18446744073709551616_by_1",
                                  "typeString": "int_const 18446744073709551616"
                                }
                              },
                              "src": "21870:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4062,
                            "nodeType": "IfStatement",
                            "src": "21866:90:18",
                            "trueBody": {
                              "id": 4061,
                              "nodeType": "Block",
                              "src": "21887:69:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4055,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4053,
                                      "name": "aa",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4024,
                                      "src": "21905:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": ">>=",
                                    "rightHandSide": {
                                      "hexValue": "3634",
                                      "id": 4054,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21912:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_64_by_1",
                                        "typeString": "int_const 64"
                                      },
                                      "value": "64"
                                    },
                                    "src": "21905:9:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4056,
                                  "nodeType": "ExpressionStatement",
                                  "src": "21905:9:18"
                                },
                                {
                                  "expression": {
                                    "id": 4059,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4057,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4028,
                                      "src": "21932:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "<<=",
                                    "rightHandSide": {
                                      "hexValue": "3332",
                                      "id": 4058,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21939:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_32_by_1",
                                        "typeString": "int_const 32"
                                      },
                                      "value": "32"
                                    },
                                    "src": "21932:9:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4060,
                                  "nodeType": "ExpressionStatement",
                                  "src": "21932:9:18"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4063,
                                "name": "aa",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4024,
                                "src": "21973:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_4294967296_by_1",
                                      "typeString": "int_const 4294967296"
                                    },
                                    "id": 4066,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 4064,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21980:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "3332",
                                      "id": 4065,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21985:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_32_by_1",
                                        "typeString": "int_const 32"
                                      },
                                      "value": "32"
                                    },
                                    "src": "21980:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4294967296_by_1",
                                      "typeString": "int_const 4294967296"
                                    }
                                  }
                                ],
                                "id": 4067,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "21979:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4294967296_by_1",
                                  "typeString": "int_const 4294967296"
                                }
                              },
                              "src": "21973:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4078,
                            "nodeType": "IfStatement",
                            "src": "21969:90:18",
                            "trueBody": {
                              "id": 4077,
                              "nodeType": "Block",
                              "src": "21990:69:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4071,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4069,
                                      "name": "aa",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4024,
                                      "src": "22008:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": ">>=",
                                    "rightHandSide": {
                                      "hexValue": "3332",
                                      "id": 4070,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22015:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_32_by_1",
                                        "typeString": "int_const 32"
                                      },
                                      "value": "32"
                                    },
                                    "src": "22008:9:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4072,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22008:9:18"
                                },
                                {
                                  "expression": {
                                    "id": 4075,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4073,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4028,
                                      "src": "22035:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "<<=",
                                    "rightHandSide": {
                                      "hexValue": "3136",
                                      "id": 4074,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22042:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_16_by_1",
                                        "typeString": "int_const 16"
                                      },
                                      "value": "16"
                                    },
                                    "src": "22035:9:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4076,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22035:9:18"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4084,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4079,
                                "name": "aa",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4024,
                                "src": "22076:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_65536_by_1",
                                      "typeString": "int_const 65536"
                                    },
                                    "id": 4082,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 4080,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22083:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "3136",
                                      "id": 4081,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22088:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_16_by_1",
                                        "typeString": "int_const 16"
                                      },
                                      "value": "16"
                                    },
                                    "src": "22083:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_65536_by_1",
                                      "typeString": "int_const 65536"
                                    }
                                  }
                                ],
                                "id": 4083,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "22082:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_65536_by_1",
                                  "typeString": "int_const 65536"
                                }
                              },
                              "src": "22076:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4094,
                            "nodeType": "IfStatement",
                            "src": "22072:89:18",
                            "trueBody": {
                              "id": 4093,
                              "nodeType": "Block",
                              "src": "22093:68:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4087,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4085,
                                      "name": "aa",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4024,
                                      "src": "22111:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": ">>=",
                                    "rightHandSide": {
                                      "hexValue": "3136",
                                      "id": 4086,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22118:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_16_by_1",
                                        "typeString": "int_const 16"
                                      },
                                      "value": "16"
                                    },
                                    "src": "22111:9:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4088,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22111:9:18"
                                },
                                {
                                  "expression": {
                                    "id": 4091,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4089,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4028,
                                      "src": "22138:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "<<=",
                                    "rightHandSide": {
                                      "hexValue": "38",
                                      "id": 4090,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22145:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "8"
                                    },
                                    "src": "22138:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4092,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22138:8:18"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4100,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4095,
                                "name": "aa",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4024,
                                "src": "22178:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_256_by_1",
                                      "typeString": "int_const 256"
                                    },
                                    "id": 4098,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 4096,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22185:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "38",
                                      "id": 4097,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22190:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "8"
                                    },
                                    "src": "22185:6:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_256_by_1",
                                      "typeString": "int_const 256"
                                    }
                                  }
                                ],
                                "id": 4099,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "22184:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_256_by_1",
                                  "typeString": "int_const 256"
                                }
                              },
                              "src": "22178:14:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4110,
                            "nodeType": "IfStatement",
                            "src": "22174:87:18",
                            "trueBody": {
                              "id": 4109,
                              "nodeType": "Block",
                              "src": "22194:67:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4103,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4101,
                                      "name": "aa",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4024,
                                      "src": "22212:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": ">>=",
                                    "rightHandSide": {
                                      "hexValue": "38",
                                      "id": 4102,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22219:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "8"
                                    },
                                    "src": "22212:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4104,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22212:8:18"
                                },
                                {
                                  "expression": {
                                    "id": 4107,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4105,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4028,
                                      "src": "22238:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "<<=",
                                    "rightHandSide": {
                                      "hexValue": "34",
                                      "id": 4106,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22245:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "src": "22238:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4108,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22238:8:18"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4116,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4111,
                                "name": "aa",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4024,
                                "src": "22278:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_16_by_1",
                                      "typeString": "int_const 16"
                                    },
                                    "id": 4114,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 4112,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22285:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "34",
                                      "id": 4113,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22290:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "src": "22285:6:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_16_by_1",
                                      "typeString": "int_const 16"
                                    }
                                  }
                                ],
                                "id": 4115,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "22284:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_16_by_1",
                                  "typeString": "int_const 16"
                                }
                              },
                              "src": "22278:14:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4126,
                            "nodeType": "IfStatement",
                            "src": "22274:87:18",
                            "trueBody": {
                              "id": 4125,
                              "nodeType": "Block",
                              "src": "22294:67:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4119,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4117,
                                      "name": "aa",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4024,
                                      "src": "22312:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": ">>=",
                                    "rightHandSide": {
                                      "hexValue": "34",
                                      "id": 4118,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22319:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "src": "22312:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4120,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22312:8:18"
                                },
                                {
                                  "expression": {
                                    "id": 4123,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4121,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4028,
                                      "src": "22338:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "<<=",
                                    "rightHandSide": {
                                      "hexValue": "32",
                                      "id": 4122,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22345:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "22338:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4124,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22338:8:18"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4127,
                                "name": "aa",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4024,
                                "src": "22378:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "id": 4130,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 4128,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22385:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "32",
                                      "id": 4129,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22390:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "22385:6:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    }
                                  }
                                ],
                                "id": 4131,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "22384:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                }
                              },
                              "src": "22378:14:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4138,
                            "nodeType": "IfStatement",
                            "src": "22374:61:18",
                            "trueBody": {
                              "id": 4137,
                              "nodeType": "Block",
                              "src": "22394:41:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4135,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4133,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4028,
                                      "src": "22412:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "<<=",
                                    "rightHandSide": {
                                      "hexValue": "31",
                                      "id": 4134,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22419:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "22412:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4136,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22412:8:18"
                                }
                              ]
                            }
                          },
                          {
                            "expression": {
                              "id": 4146,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4139,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4028,
                                "src": "22855:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4145,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4142,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "33",
                                        "id": 4140,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "22861:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_3_by_1",
                                          "typeString": "int_const 3"
                                        },
                                        "value": "3"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 4141,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4028,
                                        "src": "22865:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "22861:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 4143,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "22860:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4144,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22872:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "22860:13:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "22855:18:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4147,
                            "nodeType": "ExpressionStatement",
                            "src": "22855:18:18"
                          },
                          {
                            "expression": {
                              "id": 4157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4148,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4028,
                                "src": "24760:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4156,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4153,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4149,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4028,
                                        "src": "24766:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4152,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4150,
                                          "name": "a",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4011,
                                          "src": "24771:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "id": 4151,
                                          "name": "xn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4028,
                                          "src": "24775:2:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "24771:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24766:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 4154,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "24765:13:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4155,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24782:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "24765:18:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "24760:23:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4158,
                            "nodeType": "ExpressionStatement",
                            "src": "24760:23:18"
                          },
                          {
                            "expression": {
                              "id": 4168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4159,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4028,
                                "src": "24869:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4167,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4164,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4160,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4028,
                                        "src": "24875:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4163,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4161,
                                          "name": "a",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4011,
                                          "src": "24880:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "id": 4162,
                                          "name": "xn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4028,
                                          "src": "24884:2:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "24880:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24875:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 4165,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "24874:13:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4166,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24891:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "24874:18:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "24869:23:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4169,
                            "nodeType": "ExpressionStatement",
                            "src": "24869:23:18"
                          },
                          {
                            "expression": {
                              "id": 4179,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4170,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4028,
                                "src": "24980:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4178,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4175,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4171,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4028,
                                        "src": "24986:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4174,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4172,
                                          "name": "a",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4011,
                                          "src": "24991:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "id": 4173,
                                          "name": "xn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4028,
                                          "src": "24995:2:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "24991:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24986:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 4176,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "24985:13:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4177,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25002:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "24985:18:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "24980:23:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4180,
                            "nodeType": "ExpressionStatement",
                            "src": "24980:23:18"
                          },
                          {
                            "expression": {
                              "id": 4190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4181,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4028,
                                "src": "25089:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4189,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4186,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4182,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4028,
                                        "src": "25095:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4185,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4183,
                                          "name": "a",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4011,
                                          "src": "25100:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "id": 4184,
                                          "name": "xn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4028,
                                          "src": "25104:2:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "25100:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25095:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 4187,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "25094:13:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4188,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25111:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "25094:18:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "25089:23:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4191,
                            "nodeType": "ExpressionStatement",
                            "src": "25089:23:18"
                          },
                          {
                            "expression": {
                              "id": 4201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4192,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4028,
                                "src": "25199:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4197,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4193,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4028,
                                        "src": "25205:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4196,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4194,
                                          "name": "a",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4011,
                                          "src": "25210:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "id": 4195,
                                          "name": "xn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4028,
                                          "src": "25214:2:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "25210:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25205:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 4198,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "25204:13:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4199,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25221:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "25204:18:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "25199:23:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4202,
                            "nodeType": "ExpressionStatement",
                            "src": "25199:23:18"
                          },
                          {
                            "expression": {
                              "id": 4212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4203,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4028,
                                "src": "25309:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4211,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4208,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4204,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4028,
                                        "src": "25315:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4207,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4205,
                                          "name": "a",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4011,
                                          "src": "25320:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "id": 4206,
                                          "name": "xn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4028,
                                          "src": "25324:2:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "25320:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25315:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 4209,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "25314:13:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4210,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25331:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "25314:18:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "25309:23:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4213,
                            "nodeType": "ExpressionStatement",
                            "src": "25309:23:18"
                          },
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4214,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4028,
                                "src": "25698:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4221,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4217,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4028,
                                      "src": "25719:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4220,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4218,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4011,
                                        "src": "25724:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "id": 4219,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4028,
                                        "src": "25728:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25724:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "25719:11:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 4215,
                                    "name": "SafeCast",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6448,
                                    "src": "25703:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                      "typeString": "type(library SafeCast)"
                                    }
                                  },
                                  "id": 4216,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "25712:6:18",
                                  "memberName": "toUint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6447,
                                  "src": "25703:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (bool) pure returns (uint256)"
                                  }
                                },
                                "id": 4222,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25703:28:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "25698:33:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 4015,
                            "id": 4224,
                            "nodeType": "Return",
                            "src": "25691:40:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4009,
                    "nodeType": "StructuredDocumentation",
                    "src": "20270:292:18",
                    "text": " @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n using integer operations."
                  },
                  "id": 4227,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sqrt",
                  "nameLocation": "20576:4:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4012,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4011,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "20589:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4227,
                        "src": "20581:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4010,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20581:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20580:11:18"
                  },
                  "returnParameters": {
                    "id": 4015,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4014,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4227,
                        "src": "20615:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4013,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20615:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20614:9:18"
                  },
                  "scope": 4683,
                  "src": "20567:5181:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4260,
                    "nodeType": "Block",
                    "src": "25921:171:18",
                    "statements": [
                      {
                        "id": 4259,
                        "nodeType": "UncheckedBlock",
                        "src": "25931:155:18",
                        "statements": [
                          {
                            "assignments": [
                              4239
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4239,
                                "mutability": "mutable",
                                "name": "result",
                                "nameLocation": "25963:6:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 4259,
                                "src": "25955:14:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4238,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "25955:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4243,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 4241,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4230,
                                  "src": "25977:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 4240,
                                "name": "sqrt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4227,
                                  4261
                                ],
                                "referencedDeclaration": 4227,
                                "src": "25972:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 4242,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25972:7:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "25955:24:18"
                          },
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4257,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4244,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4239,
                                "src": "26000:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4255,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 4248,
                                          "name": "rounding",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4233,
                                          "src": "26042:8:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_Rounding_$3074",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_enum$_Rounding_$3074",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        ],
                                        "id": 4247,
                                        "name": "unsignedRoundsUp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4682,
                                        "src": "26025:16:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$3074_$returns$_t_bool_$",
                                          "typeString": "function (enum Math.Rounding) pure returns (bool)"
                                        }
                                      },
                                      "id": 4249,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26025:26:18",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4254,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4252,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4250,
                                          "name": "result",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4239,
                                          "src": "26055:6:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 4251,
                                          "name": "result",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4239,
                                          "src": "26064:6:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "26055:15:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "id": 4253,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4230,
                                        "src": "26073:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "26055:19:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "26025:49:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 4245,
                                    "name": "SafeCast",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6448,
                                    "src": "26009:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                      "typeString": "type(library SafeCast)"
                                    }
                                  },
                                  "id": 4246,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "26018:6:18",
                                  "memberName": "toUint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6447,
                                  "src": "26009:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (bool) pure returns (uint256)"
                                  }
                                },
                                "id": 4256,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26009:66:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "26000:75:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 4237,
                            "id": 4258,
                            "nodeType": "Return",
                            "src": "25993:82:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4228,
                    "nodeType": "StructuredDocumentation",
                    "src": "25754:86:18",
                    "text": " @dev Calculates sqrt(a), following the selected rounding direction."
                  },
                  "id": 4261,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sqrt",
                  "nameLocation": "25854:4:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4234,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4230,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "25867:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4261,
                        "src": "25859:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4229,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25859:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4233,
                        "mutability": "mutable",
                        "name": "rounding",
                        "nameLocation": "25879:8:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4261,
                        "src": "25870:17:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$3074",
                          "typeString": "enum Math.Rounding"
                        },
                        "typeName": {
                          "id": 4232,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4231,
                            "name": "Rounding",
                            "nameLocations": [
                              "25870:8:18"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3074,
                            "src": "25870:8:18"
                          },
                          "referencedDeclaration": 3074,
                          "src": "25870:8:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Rounding_$3074",
                            "typeString": "enum Math.Rounding"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25858:30:18"
                  },
                  "returnParameters": {
                    "id": 4237,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4236,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4261,
                        "src": "25912:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4235,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25912:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25911:9:18"
                  },
                  "scope": 4683,
                  "src": "25845:247:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4351,
                    "nodeType": "Block",
                    "src": "26281:2334:18",
                    "statements": [
                      {
                        "expression": {
                          "id": 4278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4269,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4267,
                            "src": "26363:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4277,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4274,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4272,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4264,
                                    "src": "26383:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30786666666666666666666666666666666666666666666666666666666666666666",
                                    "id": 4273,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26387:34:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1",
                                      "typeString": "int_const 3402...(31 digits omitted)...1455"
                                    },
                                    "value": "0xffffffffffffffffffffffffffffffff"
                                  },
                                  "src": "26383:38:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 4270,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6448,
                                  "src": "26367:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 4271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "26376:6:18",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6447,
                                "src": "26367:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 4275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26367:55:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "37",
                              "id": 4276,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26426:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_7_by_1",
                                "typeString": "int_const 7"
                              },
                              "value": "7"
                            },
                            "src": "26367:60:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26363:64:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4279,
                        "nodeType": "ExpressionStatement",
                        "src": "26363:64:18"
                      },
                      {
                        "expression": {
                          "id": 4292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4280,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4267,
                            "src": "26503:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4288,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4285,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4283,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4264,
                                          "src": "26525:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 4284,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4267,
                                          "src": "26530:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "26525:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4286,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "26524:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "307866666666666666666666666666666666",
                                    "id": 4287,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26535:18:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_18446744073709551615_by_1",
                                      "typeString": "int_const 18446744073709551615"
                                    },
                                    "value": "0xffffffffffffffff"
                                  },
                                  "src": "26524:29:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 4281,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6448,
                                  "src": "26508:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 4282,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "26517:6:18",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6447,
                                "src": "26508:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 4289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26508:46:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "36",
                              "id": 4290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26558:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_6_by_1",
                                "typeString": "int_const 6"
                              },
                              "value": "6"
                            },
                            "src": "26508:51:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26503:56:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4293,
                        "nodeType": "ExpressionStatement",
                        "src": "26503:56:18"
                      },
                      {
                        "expression": {
                          "id": 4306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4294,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4267,
                            "src": "26634:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4302,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4299,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4297,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4264,
                                          "src": "26656:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 4298,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4267,
                                          "src": "26661:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "26656:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4300,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "26655:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30786666666666666666",
                                    "id": 4301,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26666:10:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4294967295_by_1",
                                      "typeString": "int_const 4294967295"
                                    },
                                    "value": "0xffffffff"
                                  },
                                  "src": "26655:21:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 4295,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6448,
                                  "src": "26639:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 4296,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "26648:6:18",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6447,
                                "src": "26639:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 4303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26639:38:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "35",
                              "id": 4304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26681:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_5_by_1",
                                "typeString": "int_const 5"
                              },
                              "value": "5"
                            },
                            "src": "26639:43:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26634:48:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4307,
                        "nodeType": "ExpressionStatement",
                        "src": "26634:48:18"
                      },
                      {
                        "expression": {
                          "id": 4320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4308,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4267,
                            "src": "26757:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4319,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4316,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4313,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4311,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4264,
                                          "src": "26779:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 4312,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4267,
                                          "src": "26784:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "26779:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4314,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "26778:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "307866666666",
                                    "id": 4315,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26789:6:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_65535_by_1",
                                      "typeString": "int_const 65535"
                                    },
                                    "value": "0xffff"
                                  },
                                  "src": "26778:17:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 4309,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6448,
                                  "src": "26762:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 4310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "26771:6:18",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6447,
                                "src": "26762:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 4317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26762:34:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "34",
                              "id": 4318,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26800:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "src": "26762:39:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26757:44:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4321,
                        "nodeType": "ExpressionStatement",
                        "src": "26757:44:18"
                      },
                      {
                        "expression": {
                          "id": 4334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4322,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4267,
                            "src": "26874:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4333,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4330,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4327,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4325,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4264,
                                          "src": "26896:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 4326,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4267,
                                          "src": "26901:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "26896:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4328,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "26895:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30786666",
                                    "id": 4329,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26906:4:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_255_by_1",
                                      "typeString": "int_const 255"
                                    },
                                    "value": "0xff"
                                  },
                                  "src": "26895:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 4323,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6448,
                                  "src": "26879:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 4324,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "26888:6:18",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6447,
                                "src": "26879:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 4331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26879:32:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "33",
                              "id": 4332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26915:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              },
                              "value": "3"
                            },
                            "src": "26879:37:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26874:42:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4335,
                        "nodeType": "ExpressionStatement",
                        "src": "26874:42:18"
                      },
                      {
                        "expression": {
                          "id": 4348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4336,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4267,
                            "src": "26988:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4344,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4341,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4339,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4264,
                                          "src": "27010:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 4340,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4267,
                                          "src": "27015:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "27010:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4342,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "27009:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "307866",
                                    "id": 4343,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27020:3:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_15_by_1",
                                      "typeString": "int_const 15"
                                    },
                                    "value": "0xf"
                                  },
                                  "src": "27009:14:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 4337,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6448,
                                  "src": "26993:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 4338,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "27002:6:18",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6447,
                                "src": "26993:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 4345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26993:31:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 4346,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "27028:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "26993:36:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26988:41:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4349,
                        "nodeType": "ExpressionStatement",
                        "src": "26988:41:18"
                      },
                      {
                        "AST": {
                          "nativeSrc": "28490:119:18",
                          "nodeType": "YulBlock",
                          "src": "28490:119:18",
                          "statements": [
                            {
                              "nativeSrc": "28504:95:18",
                              "nodeType": "YulAssignment",
                              "src": "28504:95:18",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "r",
                                    "nativeSrc": "28512:1:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "28512:1:18"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nativeSrc": "28524:1:18",
                                            "nodeType": "YulIdentifier",
                                            "src": "28524:1:18"
                                          },
                                          {
                                            "name": "x",
                                            "nativeSrc": "28527:1:18",
                                            "nodeType": "YulIdentifier",
                                            "src": "28527:1:18"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shr",
                                          "nativeSrc": "28520:3:18",
                                          "nodeType": "YulIdentifier",
                                          "src": "28520:3:18"
                                        },
                                        "nativeSrc": "28520:9:18",
                                        "nodeType": "YulFunctionCall",
                                        "src": "28520:9:18"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "28531:66:18",
                                        "nodeType": "YulLiteral",
                                        "src": "28531:66:18",
                                        "type": "",
                                        "value": "0x0000010102020202030303030303030300000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "byte",
                                      "nativeSrc": "28515:4:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "28515:4:18"
                                    },
                                    "nativeSrc": "28515:83:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "28515:83:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nativeSrc": "28509:2:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "28509:2:18"
                                },
                                "nativeSrc": "28509:90:18",
                                "nodeType": "YulFunctionCall",
                                "src": "28509:90:18"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nativeSrc": "28504:1:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "28504:1:18"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 4267,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "28504:1:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4267,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "28512:1:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4267,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "28524:1:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4264,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "28527:1:18",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 4350,
                        "nodeType": "InlineAssembly",
                        "src": "28465:144:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4262,
                    "nodeType": "StructuredDocumentation",
                    "src": "26098:119:18",
                    "text": " @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."
                  },
                  "id": 4352,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log2",
                  "nameLocation": "26231:4:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4265,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4264,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "26244:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4352,
                        "src": "26236:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4263,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26236:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26235:11:18"
                  },
                  "returnParameters": {
                    "id": 4268,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4267,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "26278:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4352,
                        "src": "26270:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4266,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26270:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26269:11:18"
                  },
                  "scope": 4683,
                  "src": "26222:2393:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4385,
                    "nodeType": "Block",
                    "src": "28848:175:18",
                    "statements": [
                      {
                        "id": 4384,
                        "nodeType": "UncheckedBlock",
                        "src": "28858:159:18",
                        "statements": [
                          {
                            "assignments": [
                              4364
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4364,
                                "mutability": "mutable",
                                "name": "result",
                                "nameLocation": "28890:6:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 4384,
                                "src": "28882:14:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4363,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "28882:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4368,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 4366,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4355,
                                  "src": "28904:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 4365,
                                "name": "log2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4352,
                                  4386
                                ],
                                "referencedDeclaration": 4352,
                                "src": "28899:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 4367,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28899:11:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "28882:28:18"
                          },
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4369,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4364,
                                "src": "28931:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4380,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 4373,
                                          "name": "rounding",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4358,
                                          "src": "28973:8:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_Rounding_$3074",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_enum$_Rounding_$3074",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        ],
                                        "id": 4372,
                                        "name": "unsignedRoundsUp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4682,
                                        "src": "28956:16:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$3074_$returns$_t_bool_$",
                                          "typeString": "function (enum Math.Rounding) pure returns (bool)"
                                        }
                                      },
                                      "id": 4374,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "28956:26:18",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4379,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4377,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "31",
                                          "id": 4375,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "28986:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "id": 4376,
                                          "name": "result",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4364,
                                          "src": "28991:6:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "28986:11:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "id": 4378,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4355,
                                        "src": "29000:5:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "28986:19:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "28956:49:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 4370,
                                    "name": "SafeCast",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6448,
                                    "src": "28940:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                      "typeString": "type(library SafeCast)"
                                    }
                                  },
                                  "id": 4371,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "28949:6:18",
                                  "memberName": "toUint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6447,
                                  "src": "28940:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (bool) pure returns (uint256)"
                                  }
                                },
                                "id": 4381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28940:66:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "28931:75:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 4362,
                            "id": 4383,
                            "nodeType": "Return",
                            "src": "28924:82:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4353,
                    "nodeType": "StructuredDocumentation",
                    "src": "28621:142:18",
                    "text": " @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."
                  },
                  "id": 4386,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log2",
                  "nameLocation": "28777:4:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4359,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4355,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "28790:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4386,
                        "src": "28782:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4354,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28782:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4358,
                        "mutability": "mutable",
                        "name": "rounding",
                        "nameLocation": "28806:8:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4386,
                        "src": "28797:17:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$3074",
                          "typeString": "enum Math.Rounding"
                        },
                        "typeName": {
                          "id": 4357,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4356,
                            "name": "Rounding",
                            "nameLocations": [
                              "28797:8:18"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3074,
                            "src": "28797:8:18"
                          },
                          "referencedDeclaration": 3074,
                          "src": "28797:8:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Rounding_$3074",
                            "typeString": "enum Math.Rounding"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28781:34:18"
                  },
                  "returnParameters": {
                    "id": 4362,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4361,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4386,
                        "src": "28839:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4360,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28839:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28838:9:18"
                  },
                  "scope": 4683,
                  "src": "28768:255:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4514,
                    "nodeType": "Block",
                    "src": "29216:854:18",
                    "statements": [
                      {
                        "assignments": [
                          4395
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4395,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "29234:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4514,
                            "src": "29226:14:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4394,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "29226:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4397,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 4396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "29243:1:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "29226:18:18"
                      },
                      {
                        "id": 4511,
                        "nodeType": "UncheckedBlock",
                        "src": "29254:787:18",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4402,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4398,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4389,
                                "src": "29282:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1",
                                  "typeString": "int_const 1000...(57 digits omitted)...0000"
                                },
                                "id": 4401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 4399,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29291:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "3634",
                                  "id": 4400,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29297:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_64_by_1",
                                    "typeString": "int_const 64"
                                  },
                                  "value": "64"
                                },
                                "src": "29291:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1",
                                  "typeString": "int_const 1000...(57 digits omitted)...0000"
                                }
                              },
                              "src": "29282:17:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4414,
                            "nodeType": "IfStatement",
                            "src": "29278:103:18",
                            "trueBody": {
                              "id": 4413,
                              "nodeType": "Block",
                              "src": "29301:80:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4407,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4403,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4389,
                                      "src": "29319:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(57 digits omitted)...0000"
                                      },
                                      "id": 4406,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3130",
                                        "id": 4404,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29328:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "hexValue": "3634",
                                        "id": 4405,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29334:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_64_by_1",
                                          "typeString": "int_const 64"
                                        },
                                        "value": "64"
                                      },
                                      "src": "29328:8:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(57 digits omitted)...0000"
                                      }
                                    },
                                    "src": "29319:17:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4408,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29319:17:18"
                                },
                                {
                                  "expression": {
                                    "id": 4411,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4409,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4395,
                                      "src": "29354:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "3634",
                                      "id": 4410,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "29364:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_64_by_1",
                                        "typeString": "int_const 64"
                                      },
                                      "value": "64"
                                    },
                                    "src": "29354:12:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4412,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29354:12:18"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4419,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4415,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4389,
                                "src": "29398:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1",
                                  "typeString": "int_const 1000...(25 digits omitted)...0000"
                                },
                                "id": 4418,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 4416,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29407:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "3332",
                                  "id": 4417,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29413:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "29407:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1",
                                  "typeString": "int_const 1000...(25 digits omitted)...0000"
                                }
                              },
                              "src": "29398:17:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4431,
                            "nodeType": "IfStatement",
                            "src": "29394:103:18",
                            "trueBody": {
                              "id": 4430,
                              "nodeType": "Block",
                              "src": "29417:80:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4424,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4420,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4389,
                                      "src": "29435:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(25 digits omitted)...0000"
                                      },
                                      "id": 4423,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3130",
                                        "id": 4421,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29444:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "hexValue": "3332",
                                        "id": 4422,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29450:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_32_by_1",
                                          "typeString": "int_const 32"
                                        },
                                        "value": "32"
                                      },
                                      "src": "29444:8:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(25 digits omitted)...0000"
                                      }
                                    },
                                    "src": "29435:17:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4425,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29435:17:18"
                                },
                                {
                                  "expression": {
                                    "id": 4428,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4426,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4395,
                                      "src": "29470:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "3332",
                                      "id": 4427,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "29480:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_32_by_1",
                                        "typeString": "int_const 32"
                                      },
                                      "value": "32"
                                    },
                                    "src": "29470:12:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4429,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29470:12:18"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4436,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4432,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4389,
                                "src": "29514:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_10000000000000000_by_1",
                                  "typeString": "int_const 10000000000000000"
                                },
                                "id": 4435,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 4433,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29523:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "3136",
                                  "id": 4434,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29529:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_16_by_1",
                                    "typeString": "int_const 16"
                                  },
                                  "value": "16"
                                },
                                "src": "29523:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000000000000000_by_1",
                                  "typeString": "int_const 10000000000000000"
                                }
                              },
                              "src": "29514:17:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4448,
                            "nodeType": "IfStatement",
                            "src": "29510:103:18",
                            "trueBody": {
                              "id": 4447,
                              "nodeType": "Block",
                              "src": "29533:80:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4441,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4437,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4389,
                                      "src": "29551:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_rational_10000000000000000_by_1",
                                        "typeString": "int_const 10000000000000000"
                                      },
                                      "id": 4440,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3130",
                                        "id": 4438,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29560:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "hexValue": "3136",
                                        "id": 4439,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29566:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_16_by_1",
                                          "typeString": "int_const 16"
                                        },
                                        "value": "16"
                                      },
                                      "src": "29560:8:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10000000000000000_by_1",
                                        "typeString": "int_const 10000000000000000"
                                      }
                                    },
                                    "src": "29551:17:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4442,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29551:17:18"
                                },
                                {
                                  "expression": {
                                    "id": 4445,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4443,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4395,
                                      "src": "29586:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "3136",
                                      "id": 4444,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "29596:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_16_by_1",
                                        "typeString": "int_const 16"
                                      },
                                      "value": "16"
                                    },
                                    "src": "29586:12:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4446,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29586:12:18"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4453,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4449,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4389,
                                "src": "29630:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000_by_1",
                                  "typeString": "int_const 100000000"
                                },
                                "id": 4452,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 4450,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29639:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "38",
                                  "id": 4451,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29645:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_8_by_1",
                                    "typeString": "int_const 8"
                                  },
                                  "value": "8"
                                },
                                "src": "29639:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000_by_1",
                                  "typeString": "int_const 100000000"
                                }
                              },
                              "src": "29630:16:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4465,
                            "nodeType": "IfStatement",
                            "src": "29626:100:18",
                            "trueBody": {
                              "id": 4464,
                              "nodeType": "Block",
                              "src": "29648:78:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4458,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4454,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4389,
                                      "src": "29666:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_rational_100000000_by_1",
                                        "typeString": "int_const 100000000"
                                      },
                                      "id": 4457,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3130",
                                        "id": 4455,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29675:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "hexValue": "38",
                                        "id": 4456,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29681:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_8_by_1",
                                          "typeString": "int_const 8"
                                        },
                                        "value": "8"
                                      },
                                      "src": "29675:7:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100000000_by_1",
                                        "typeString": "int_const 100000000"
                                      }
                                    },
                                    "src": "29666:16:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4459,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29666:16:18"
                                },
                                {
                                  "expression": {
                                    "id": 4462,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4460,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4395,
                                      "src": "29700:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "38",
                                      "id": 4461,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "29710:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "8"
                                    },
                                    "src": "29700:11:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4463,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29700:11:18"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4466,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4389,
                                "src": "29743:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "id": 4469,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 4467,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29752:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "34",
                                  "id": 4468,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29758:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "29752:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                }
                              },
                              "src": "29743:16:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4482,
                            "nodeType": "IfStatement",
                            "src": "29739:100:18",
                            "trueBody": {
                              "id": 4481,
                              "nodeType": "Block",
                              "src": "29761:78:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4475,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4471,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4389,
                                      "src": "29779:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_rational_10000_by_1",
                                        "typeString": "int_const 10000"
                                      },
                                      "id": 4474,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3130",
                                        "id": 4472,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29788:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "hexValue": "34",
                                        "id": 4473,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29794:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_4_by_1",
                                          "typeString": "int_const 4"
                                        },
                                        "value": "4"
                                      },
                                      "src": "29788:7:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10000_by_1",
                                        "typeString": "int_const 10000"
                                      }
                                    },
                                    "src": "29779:16:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4476,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29779:16:18"
                                },
                                {
                                  "expression": {
                                    "id": 4479,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4477,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4395,
                                      "src": "29813:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "34",
                                      "id": 4478,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "29823:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "src": "29813:11:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4480,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29813:11:18"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4483,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4389,
                                "src": "29856:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                },
                                "id": 4486,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 4484,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29865:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 4485,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29871:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "29865:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                }
                              },
                              "src": "29856:16:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4499,
                            "nodeType": "IfStatement",
                            "src": "29852:100:18",
                            "trueBody": {
                              "id": 4498,
                              "nodeType": "Block",
                              "src": "29874:78:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4492,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4488,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4389,
                                      "src": "29892:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_rational_100_by_1",
                                        "typeString": "int_const 100"
                                      },
                                      "id": 4491,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3130",
                                        "id": 4489,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29901:2:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "hexValue": "32",
                                        "id": 4490,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29907:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "29901:7:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100_by_1",
                                        "typeString": "int_const 100"
                                      }
                                    },
                                    "src": "29892:16:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4493,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29892:16:18"
                                },
                                {
                                  "expression": {
                                    "id": 4496,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4494,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4395,
                                      "src": "29926:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "32",
                                      "id": 4495,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "29936:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "29926:11:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4497,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29926:11:18"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4500,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4389,
                                "src": "29969:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "id": 4503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 4501,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29978:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4502,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29984:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "29978:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                }
                              },
                              "src": "29969:16:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4510,
                            "nodeType": "IfStatement",
                            "src": "29965:66:18",
                            "trueBody": {
                              "id": 4509,
                              "nodeType": "Block",
                              "src": "29987:44:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4507,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4505,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4395,
                                      "src": "30005:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "31",
                                      "id": 4506,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "30015:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "30005:11:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4508,
                                  "nodeType": "ExpressionStatement",
                                  "src": "30005:11:18"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 4512,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4395,
                          "src": "30057:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4393,
                        "id": 4513,
                        "nodeType": "Return",
                        "src": "30050:13:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4387,
                    "nodeType": "StructuredDocumentation",
                    "src": "29029:120:18",
                    "text": " @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."
                  },
                  "id": 4515,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log10",
                  "nameLocation": "29163:5:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4390,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4389,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "29177:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4515,
                        "src": "29169:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4388,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "29169:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29168:15:18"
                  },
                  "returnParameters": {
                    "id": 4393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4392,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4515,
                        "src": "29207:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4391,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "29207:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29206:9:18"
                  },
                  "scope": 4683,
                  "src": "29154:916:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4548,
                    "nodeType": "Block",
                    "src": "30305:177:18",
                    "statements": [
                      {
                        "id": 4547,
                        "nodeType": "UncheckedBlock",
                        "src": "30315:161:18",
                        "statements": [
                          {
                            "assignments": [
                              4527
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4527,
                                "mutability": "mutable",
                                "name": "result",
                                "nameLocation": "30347:6:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 4547,
                                "src": "30339:14:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4526,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "30339:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4531,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 4529,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4518,
                                  "src": "30362:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 4528,
                                "name": "log10",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4515,
                                  4549
                                ],
                                "referencedDeclaration": 4515,
                                "src": "30356:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 4530,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "30356:12:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "30339:29:18"
                          },
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4532,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4527,
                                "src": "30389:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4543,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 4536,
                                          "name": "rounding",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4521,
                                          "src": "30431:8:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_Rounding_$3074",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_enum$_Rounding_$3074",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        ],
                                        "id": 4535,
                                        "name": "unsignedRoundsUp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4682,
                                        "src": "30414:16:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$3074_$returns$_t_bool_$",
                                          "typeString": "function (enum Math.Rounding) pure returns (bool)"
                                        }
                                      },
                                      "id": 4537,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "30414:26:18",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4542,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4540,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "3130",
                                          "id": 4538,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "30444:2:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_10_by_1",
                                            "typeString": "int_const 10"
                                          },
                                          "value": "10"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "**",
                                        "rightExpression": {
                                          "id": 4539,
                                          "name": "result",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4527,
                                          "src": "30450:6:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "30444:12:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "id": 4541,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4518,
                                        "src": "30459:5:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "30444:20:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "30414:50:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 4533,
                                    "name": "SafeCast",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6448,
                                    "src": "30398:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                      "typeString": "type(library SafeCast)"
                                    }
                                  },
                                  "id": 4534,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "30407:6:18",
                                  "memberName": "toUint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6447,
                                  "src": "30398:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (bool) pure returns (uint256)"
                                  }
                                },
                                "id": 4544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "30398:67:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "30389:76:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 4525,
                            "id": 4546,
                            "nodeType": "Return",
                            "src": "30382:83:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4516,
                    "nodeType": "StructuredDocumentation",
                    "src": "30076:143:18",
                    "text": " @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."
                  },
                  "id": 4549,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log10",
                  "nameLocation": "30233:5:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4522,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4518,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "30247:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4549,
                        "src": "30239:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4517,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30239:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4521,
                        "mutability": "mutable",
                        "name": "rounding",
                        "nameLocation": "30263:8:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4549,
                        "src": "30254:17:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$3074",
                          "typeString": "enum Math.Rounding"
                        },
                        "typeName": {
                          "id": 4520,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4519,
                            "name": "Rounding",
                            "nameLocations": [
                              "30254:8:18"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3074,
                            "src": "30254:8:18"
                          },
                          "referencedDeclaration": 3074,
                          "src": "30254:8:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Rounding_$3074",
                            "typeString": "enum Math.Rounding"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30238:34:18"
                  },
                  "returnParameters": {
                    "id": 4525,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4524,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4549,
                        "src": "30296:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4523,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30296:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30295:9:18"
                  },
                  "scope": 4683,
                  "src": "30224:258:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4625,
                    "nodeType": "Block",
                    "src": "30800:675:18",
                    "statements": [
                      {
                        "expression": {
                          "id": 4566,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4557,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4555,
                            "src": "30882:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4565,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4562,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4560,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4552,
                                    "src": "30902:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30786666666666666666666666666666666666666666666666666666666666666666",
                                    "id": 4561,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "30906:34:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1",
                                      "typeString": "int_const 3402...(31 digits omitted)...1455"
                                    },
                                    "value": "0xffffffffffffffffffffffffffffffff"
                                  },
                                  "src": "30902:38:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 4558,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6448,
                                  "src": "30886:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 4559,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "30895:6:18",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6447,
                                "src": "30886:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 4563,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "30886:55:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "37",
                              "id": 4564,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "30945:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_7_by_1",
                                "typeString": "int_const 7"
                              },
                              "value": "7"
                            },
                            "src": "30886:60:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30882:64:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4567,
                        "nodeType": "ExpressionStatement",
                        "src": "30882:64:18"
                      },
                      {
                        "expression": {
                          "id": 4580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4568,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4555,
                            "src": "31022:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4579,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4576,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4573,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4571,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4552,
                                          "src": "31044:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 4572,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4555,
                                          "src": "31049:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "31044:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4574,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "31043:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "307866666666666666666666666666666666",
                                    "id": 4575,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "31054:18:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_18446744073709551615_by_1",
                                      "typeString": "int_const 18446744073709551615"
                                    },
                                    "value": "0xffffffffffffffff"
                                  },
                                  "src": "31043:29:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 4569,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6448,
                                  "src": "31027:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 4570,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "31036:6:18",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6447,
                                "src": "31027:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 4577,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31027:46:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "36",
                              "id": 4578,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "31077:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_6_by_1",
                                "typeString": "int_const 6"
                              },
                              "value": "6"
                            },
                            "src": "31027:51:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "31022:56:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4581,
                        "nodeType": "ExpressionStatement",
                        "src": "31022:56:18"
                      },
                      {
                        "expression": {
                          "id": 4594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4582,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4555,
                            "src": "31153:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4593,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4590,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4587,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4585,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4552,
                                          "src": "31175:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 4586,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4555,
                                          "src": "31180:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "31175:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4588,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "31174:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30786666666666666666",
                                    "id": 4589,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "31185:10:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4294967295_by_1",
                                      "typeString": "int_const 4294967295"
                                    },
                                    "value": "0xffffffff"
                                  },
                                  "src": "31174:21:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 4583,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6448,
                                  "src": "31158:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 4584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "31167:6:18",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6447,
                                "src": "31158:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 4591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31158:38:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "35",
                              "id": 4592,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "31200:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_5_by_1",
                                "typeString": "int_const 5"
                              },
                              "value": "5"
                            },
                            "src": "31158:43:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "31153:48:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4595,
                        "nodeType": "ExpressionStatement",
                        "src": "31153:48:18"
                      },
                      {
                        "expression": {
                          "id": 4608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4596,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4555,
                            "src": "31276:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4607,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4604,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4601,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4599,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4552,
                                          "src": "31298:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 4600,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4555,
                                          "src": "31303:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "31298:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4602,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "31297:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "307866666666",
                                    "id": 4603,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "31308:6:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_65535_by_1",
                                      "typeString": "int_const 65535"
                                    },
                                    "value": "0xffff"
                                  },
                                  "src": "31297:17:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 4597,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6448,
                                  "src": "31281:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 4598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "31290:6:18",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6447,
                                "src": "31281:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 4605,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31281:34:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "34",
                              "id": 4606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "31319:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "src": "31281:39:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "31276:44:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4609,
                        "nodeType": "ExpressionStatement",
                        "src": "31276:44:18"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4623,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4610,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4555,
                                  "src": "31426:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "33",
                                  "id": 4611,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "31431:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_3_by_1",
                                    "typeString": "int_const 3"
                                  },
                                  "value": "3"
                                },
                                "src": "31426:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 4613,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "31425:8:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "|",
                          "rightExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4618,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4616,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4552,
                                        "src": "31453:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "id": 4617,
                                        "name": "r",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4555,
                                        "src": "31458:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "31453:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 4619,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "31452:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30786666",
                                  "id": 4620,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "31463:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_255_by_1",
                                    "typeString": "int_const 255"
                                  },
                                  "value": "0xff"
                                },
                                "src": "31452:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 4614,
                                "name": "SafeCast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6448,
                                "src": "31436:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                  "typeString": "type(library SafeCast)"
                                }
                              },
                              "id": 4615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "31445:6:18",
                              "memberName": "toUint",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6447,
                              "src": "31436:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                "typeString": "function (bool) pure returns (uint256)"
                              }
                            },
                            "id": 4622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "31436:32:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "31425:43:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4556,
                        "id": 4624,
                        "nodeType": "Return",
                        "src": "31418:50:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4550,
                    "nodeType": "StructuredDocumentation",
                    "src": "30488:246:18",
                    "text": " @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."
                  },
                  "id": 4626,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log256",
                  "nameLocation": "30748:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4553,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4552,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "30763:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4626,
                        "src": "30755:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4551,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30755:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30754:11:18"
                  },
                  "returnParameters": {
                    "id": 4556,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4555,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "30797:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4626,
                        "src": "30789:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4554,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30789:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30788:11:18"
                  },
                  "scope": 4683,
                  "src": "30739:736:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4662,
                    "nodeType": "Block",
                    "src": "31712:184:18",
                    "statements": [
                      {
                        "id": 4661,
                        "nodeType": "UncheckedBlock",
                        "src": "31722:168:18",
                        "statements": [
                          {
                            "assignments": [
                              4638
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4638,
                                "mutability": "mutable",
                                "name": "result",
                                "nameLocation": "31754:6:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 4661,
                                "src": "31746:14:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4637,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "31746:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4642,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 4640,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4629,
                                  "src": "31770:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 4639,
                                "name": "log256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4626,
                                  4663
                                ],
                                "referencedDeclaration": 4626,
                                "src": "31763:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 4641,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31763:13:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "31746:30:18"
                          },
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4643,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4638,
                                "src": "31797:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4657,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 4647,
                                          "name": "rounding",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4632,
                                          "src": "31839:8:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_Rounding_$3074",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_enum$_Rounding_$3074",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        ],
                                        "id": 4646,
                                        "name": "unsignedRoundsUp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4682,
                                        "src": "31822:16:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$3074_$returns$_t_bool_$",
                                          "typeString": "function (enum Math.Rounding) pure returns (bool)"
                                        }
                                      },
                                      "id": 4648,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "31822:26:18",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4656,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4654,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "31",
                                          "id": 4649,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "31852:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 4652,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 4650,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4638,
                                                "src": "31858:6:18",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "<<",
                                              "rightExpression": {
                                                "hexValue": "33",
                                                "id": 4651,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "31868:1:18",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_3_by_1",
                                                  "typeString": "int_const 3"
                                                },
                                                "value": "3"
                                              },
                                              "src": "31858:11:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 4653,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "31857:13:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "31852:18:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "id": 4655,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4629,
                                        "src": "31873:5:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "31852:26:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "31822:56:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 4644,
                                    "name": "SafeCast",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6448,
                                    "src": "31806:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                      "typeString": "type(library SafeCast)"
                                    }
                                  },
                                  "id": 4645,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "31815:6:18",
                                  "memberName": "toUint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6447,
                                  "src": "31806:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (bool) pure returns (uint256)"
                                  }
                                },
                                "id": 4658,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "31806:73:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "31797:82:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 4636,
                            "id": 4660,
                            "nodeType": "Return",
                            "src": "31790:89:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4627,
                    "nodeType": "StructuredDocumentation",
                    "src": "31481:144:18",
                    "text": " @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."
                  },
                  "id": 4663,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log256",
                  "nameLocation": "31639:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4629,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "31654:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4663,
                        "src": "31646:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4628,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31646:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4632,
                        "mutability": "mutable",
                        "name": "rounding",
                        "nameLocation": "31670:8:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4663,
                        "src": "31661:17:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$3074",
                          "typeString": "enum Math.Rounding"
                        },
                        "typeName": {
                          "id": 4631,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4630,
                            "name": "Rounding",
                            "nameLocations": [
                              "31661:8:18"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3074,
                            "src": "31661:8:18"
                          },
                          "referencedDeclaration": 3074,
                          "src": "31661:8:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Rounding_$3074",
                            "typeString": "enum Math.Rounding"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31645:34:18"
                  },
                  "returnParameters": {
                    "id": 4636,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4635,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4663,
                        "src": "31703:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4634,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31703:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31702:9:18"
                  },
                  "scope": 4683,
                  "src": "31630:266:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4681,
                    "nodeType": "Block",
                    "src": "32094:48:18",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 4679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 4677,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 4674,
                                  "name": "rounding",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4667,
                                  "src": "32117:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Rounding_$3074",
                                    "typeString": "enum Math.Rounding"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_Rounding_$3074",
                                    "typeString": "enum Math.Rounding"
                                  }
                                ],
                                "id": 4673,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "32111:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": {
                                  "id": 4672,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "32111:5:18",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4675,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "32111:15:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 4676,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "32129:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "32111:19:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 4678,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32134:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "32111:24:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4671,
                        "id": 4680,
                        "nodeType": "Return",
                        "src": "32104:31:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4664,
                    "nodeType": "StructuredDocumentation",
                    "src": "31902:113:18",
                    "text": " @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."
                  },
                  "id": 4682,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "unsignedRoundsUp",
                  "nameLocation": "32029:16:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4668,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4667,
                        "mutability": "mutable",
                        "name": "rounding",
                        "nameLocation": "32055:8:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4682,
                        "src": "32046:17:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$3074",
                          "typeString": "enum Math.Rounding"
                        },
                        "typeName": {
                          "id": 4666,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4665,
                            "name": "Rounding",
                            "nameLocations": [
                              "32046:8:18"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3074,
                            "src": "32046:8:18"
                          },
                          "referencedDeclaration": 3074,
                          "src": "32046:8:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Rounding_$3074",
                            "typeString": "enum Math.Rounding"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32045:19:18"
                  },
                  "returnParameters": {
                    "id": 4671,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4670,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4682,
                        "src": "32088:4:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4669,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "32088:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32087:6:18"
                  },
                  "scope": 4683,
                  "src": "32020:122:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4684,
              "src": "281:31863:18",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "103:32042:18"
        },
        "id": 18
      },
      "@openzeppelin/contracts/utils/math/SafeCast.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/math/SafeCast.sol",
          "exportedSymbols": {
            "SafeCast": [
              6448
            ]
          },
          "id": 6449,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4685,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "192:24:19"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "SafeCast",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 4686,
                "nodeType": "StructuredDocumentation",
                "src": "218:550:19",
                "text": " @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."
              },
              "fullyImplemented": true,
              "id": 6448,
              "linearizedBaseContracts": [
                6448
              ],
              "name": "SafeCast",
              "nameLocation": "777:8:19",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 4687,
                    "nodeType": "StructuredDocumentation",
                    "src": "792:68:19",
                    "text": " @dev Value doesn't fit in an uint of `bits` size."
                  },
                  "errorSelector": "6dfcc650",
                  "id": 4693,
                  "name": "SafeCastOverflowedUintDowncast",
                  "nameLocation": "871:30:19",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 4692,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4689,
                        "mutability": "mutable",
                        "name": "bits",
                        "nameLocation": "908:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4693,
                        "src": "902:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4688,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "902:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4691,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "922:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4693,
                        "src": "914:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4690,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "914:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "901:27:19"
                  },
                  "src": "865:64:19"
                },
                {
                  "documentation": {
                    "id": 4694,
                    "nodeType": "StructuredDocumentation",
                    "src": "935:75:19",
                    "text": " @dev An int value doesn't fit in an uint of `bits` size."
                  },
                  "errorSelector": "a8ce4432",
                  "id": 4698,
                  "name": "SafeCastOverflowedIntToUint",
                  "nameLocation": "1021:27:19",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 4697,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4696,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1056:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4698,
                        "src": "1049:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4695,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1049:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1048:14:19"
                  },
                  "src": "1015:48:19"
                },
                {
                  "documentation": {
                    "id": 4699,
                    "nodeType": "StructuredDocumentation",
                    "src": "1069:67:19",
                    "text": " @dev Value doesn't fit in an int of `bits` size."
                  },
                  "errorSelector": "327269a7",
                  "id": 4705,
                  "name": "SafeCastOverflowedIntDowncast",
                  "nameLocation": "1147:29:19",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 4704,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4701,
                        "mutability": "mutable",
                        "name": "bits",
                        "nameLocation": "1183:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4705,
                        "src": "1177:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4700,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1177:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4703,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1196:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4705,
                        "src": "1189:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4702,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1189:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1176:26:19"
                  },
                  "src": "1141:62:19"
                },
                {
                  "documentation": {
                    "id": 4706,
                    "nodeType": "StructuredDocumentation",
                    "src": "1209:75:19",
                    "text": " @dev An uint value doesn't fit in an int of `bits` size."
                  },
                  "errorSelector": "24775e06",
                  "id": 4710,
                  "name": "SafeCastOverflowedUintToInt",
                  "nameLocation": "1295:27:19",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 4709,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4708,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1331:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4710,
                        "src": "1323:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4707,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1323:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1322:15:19"
                  },
                  "src": "1289:49:19"
                },
                {
                  "body": {
                    "id": 4737,
                    "nodeType": "Block",
                    "src": "1695:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4718,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4713,
                            "src": "1709:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4721,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1722:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint248_$",
                                    "typeString": "type(uint248)"
                                  },
                                  "typeName": {
                                    "id": 4720,
                                    "name": "uint248",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1722:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint248_$",
                                    "typeString": "type(uint248)"
                                  }
                                ],
                                "id": 4719,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "1717:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4722,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1717:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint248",
                                "typeString": "type(uint248)"
                              }
                            },
                            "id": 4723,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "1731:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "1717:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint248",
                              "typeString": "uint248"
                            }
                          },
                          "src": "1709:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4731,
                        "nodeType": "IfStatement",
                        "src": "1705:105:19",
                        "trueBody": {
                          "id": 4730,
                          "nodeType": "Block",
                          "src": "1736:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323438",
                                    "id": 4726,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1788:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_248_by_1",
                                      "typeString": "int_const 248"
                                    },
                                    "value": "248"
                                  },
                                  {
                                    "id": 4727,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4713,
                                    "src": "1793:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_248_by_1",
                                      "typeString": "int_const 248"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4725,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "1757:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 4728,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1757:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 4729,
                              "nodeType": "RevertStatement",
                              "src": "1750:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4734,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4713,
                              "src": "1834:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4733,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1826:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint248_$",
                              "typeString": "type(uint248)"
                            },
                            "typeName": {
                              "id": 4732,
                              "name": "uint248",
                              "nodeType": "ElementaryTypeName",
                              "src": "1826:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1826:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint248",
                            "typeString": "uint248"
                          }
                        },
                        "functionReturnParameters": 4717,
                        "id": 4736,
                        "nodeType": "Return",
                        "src": "1819:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4711,
                    "nodeType": "StructuredDocumentation",
                    "src": "1344:280:19",
                    "text": " @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits"
                  },
                  "id": 4738,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint248",
                  "nameLocation": "1638:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4714,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4713,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1656:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4738,
                        "src": "1648:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4712,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1648:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1647:15:19"
                  },
                  "returnParameters": {
                    "id": 4717,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4716,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4738,
                        "src": "1686:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint248",
                          "typeString": "uint248"
                        },
                        "typeName": {
                          "id": 4715,
                          "name": "uint248",
                          "nodeType": "ElementaryTypeName",
                          "src": "1686:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint248",
                            "typeString": "uint248"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1685:9:19"
                  },
                  "scope": 6448,
                  "src": "1629:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4765,
                    "nodeType": "Block",
                    "src": "2204:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4746,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4741,
                            "src": "2218:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4749,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2231:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint240_$",
                                    "typeString": "type(uint240)"
                                  },
                                  "typeName": {
                                    "id": 4748,
                                    "name": "uint240",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2231:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint240_$",
                                    "typeString": "type(uint240)"
                                  }
                                ],
                                "id": 4747,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "2226:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2226:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint240",
                                "typeString": "type(uint240)"
                              }
                            },
                            "id": 4751,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "2240:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "2226:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint240",
                              "typeString": "uint240"
                            }
                          },
                          "src": "2218:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4759,
                        "nodeType": "IfStatement",
                        "src": "2214:105:19",
                        "trueBody": {
                          "id": 4758,
                          "nodeType": "Block",
                          "src": "2245:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323430",
                                    "id": 4754,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2297:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_240_by_1",
                                      "typeString": "int_const 240"
                                    },
                                    "value": "240"
                                  },
                                  {
                                    "id": 4755,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4741,
                                    "src": "2302:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_240_by_1",
                                      "typeString": "int_const 240"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4753,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "2266:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 4756,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2266:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 4757,
                              "nodeType": "RevertStatement",
                              "src": "2259:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4762,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4741,
                              "src": "2343:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4761,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2335:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint240_$",
                              "typeString": "type(uint240)"
                            },
                            "typeName": {
                              "id": 4760,
                              "name": "uint240",
                              "nodeType": "ElementaryTypeName",
                              "src": "2335:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2335:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint240",
                            "typeString": "uint240"
                          }
                        },
                        "functionReturnParameters": 4745,
                        "id": 4764,
                        "nodeType": "Return",
                        "src": "2328:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4739,
                    "nodeType": "StructuredDocumentation",
                    "src": "1853:280:19",
                    "text": " @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits"
                  },
                  "id": 4766,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint240",
                  "nameLocation": "2147:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4742,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4741,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2165:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4766,
                        "src": "2157:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4740,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2157:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2156:15:19"
                  },
                  "returnParameters": {
                    "id": 4745,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4744,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4766,
                        "src": "2195:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint240",
                          "typeString": "uint240"
                        },
                        "typeName": {
                          "id": 4743,
                          "name": "uint240",
                          "nodeType": "ElementaryTypeName",
                          "src": "2195:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint240",
                            "typeString": "uint240"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2194:9:19"
                  },
                  "scope": 6448,
                  "src": "2138:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4793,
                    "nodeType": "Block",
                    "src": "2713:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4780,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4774,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4769,
                            "src": "2727:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4777,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2740:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint232_$",
                                    "typeString": "type(uint232)"
                                  },
                                  "typeName": {
                                    "id": 4776,
                                    "name": "uint232",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2740:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint232_$",
                                    "typeString": "type(uint232)"
                                  }
                                ],
                                "id": 4775,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "2735:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4778,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2735:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint232",
                                "typeString": "type(uint232)"
                              }
                            },
                            "id": 4779,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "2749:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "2735:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint232",
                              "typeString": "uint232"
                            }
                          },
                          "src": "2727:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4787,
                        "nodeType": "IfStatement",
                        "src": "2723:105:19",
                        "trueBody": {
                          "id": 4786,
                          "nodeType": "Block",
                          "src": "2754:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323332",
                                    "id": 4782,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2806:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_232_by_1",
                                      "typeString": "int_const 232"
                                    },
                                    "value": "232"
                                  },
                                  {
                                    "id": 4783,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4769,
                                    "src": "2811:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_232_by_1",
                                      "typeString": "int_const 232"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4781,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "2775:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 4784,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2775:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 4785,
                              "nodeType": "RevertStatement",
                              "src": "2768:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4790,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4769,
                              "src": "2852:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4789,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2844:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint232_$",
                              "typeString": "type(uint232)"
                            },
                            "typeName": {
                              "id": 4788,
                              "name": "uint232",
                              "nodeType": "ElementaryTypeName",
                              "src": "2844:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2844:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint232",
                            "typeString": "uint232"
                          }
                        },
                        "functionReturnParameters": 4773,
                        "id": 4792,
                        "nodeType": "Return",
                        "src": "2837:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4767,
                    "nodeType": "StructuredDocumentation",
                    "src": "2362:280:19",
                    "text": " @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits"
                  },
                  "id": 4794,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint232",
                  "nameLocation": "2656:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4770,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4769,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2674:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4794,
                        "src": "2666:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4768,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2666:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2665:15:19"
                  },
                  "returnParameters": {
                    "id": 4773,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4772,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4794,
                        "src": "2704:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint232",
                          "typeString": "uint232"
                        },
                        "typeName": {
                          "id": 4771,
                          "name": "uint232",
                          "nodeType": "ElementaryTypeName",
                          "src": "2704:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint232",
                            "typeString": "uint232"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2703:9:19"
                  },
                  "scope": 6448,
                  "src": "2647:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4821,
                    "nodeType": "Block",
                    "src": "3222:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4802,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4797,
                            "src": "3236:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4805,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3249:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint224_$",
                                    "typeString": "type(uint224)"
                                  },
                                  "typeName": {
                                    "id": 4804,
                                    "name": "uint224",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3249:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint224_$",
                                    "typeString": "type(uint224)"
                                  }
                                ],
                                "id": 4803,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "3244:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3244:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint224",
                                "typeString": "type(uint224)"
                              }
                            },
                            "id": 4807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "3258:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "3244:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "src": "3236:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4815,
                        "nodeType": "IfStatement",
                        "src": "3232:105:19",
                        "trueBody": {
                          "id": 4814,
                          "nodeType": "Block",
                          "src": "3263:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323234",
                                    "id": 4810,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3315:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_224_by_1",
                                      "typeString": "int_const 224"
                                    },
                                    "value": "224"
                                  },
                                  {
                                    "id": 4811,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4797,
                                    "src": "3320:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_224_by_1",
                                      "typeString": "int_const 224"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4809,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "3284:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 4812,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3284:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 4813,
                              "nodeType": "RevertStatement",
                              "src": "3277:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4818,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4797,
                              "src": "3361:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4817,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3353:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint224_$",
                              "typeString": "type(uint224)"
                            },
                            "typeName": {
                              "id": 4816,
                              "name": "uint224",
                              "nodeType": "ElementaryTypeName",
                              "src": "3353:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4819,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3353:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "functionReturnParameters": 4801,
                        "id": 4820,
                        "nodeType": "Return",
                        "src": "3346:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4795,
                    "nodeType": "StructuredDocumentation",
                    "src": "2871:280:19",
                    "text": " @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits"
                  },
                  "id": 4822,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint224",
                  "nameLocation": "3165:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4798,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4797,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "3183:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4822,
                        "src": "3175:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4796,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3175:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3174:15:19"
                  },
                  "returnParameters": {
                    "id": 4801,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4800,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4822,
                        "src": "3213:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "typeName": {
                          "id": 4799,
                          "name": "uint224",
                          "nodeType": "ElementaryTypeName",
                          "src": "3213:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3212:9:19"
                  },
                  "scope": 6448,
                  "src": "3156:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4849,
                    "nodeType": "Block",
                    "src": "3731:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4830,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "3745:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4833,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3758:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint216_$",
                                    "typeString": "type(uint216)"
                                  },
                                  "typeName": {
                                    "id": 4832,
                                    "name": "uint216",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3758:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint216_$",
                                    "typeString": "type(uint216)"
                                  }
                                ],
                                "id": 4831,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "3753:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4834,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3753:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint216",
                                "typeString": "type(uint216)"
                              }
                            },
                            "id": 4835,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "3767:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "3753:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint216",
                              "typeString": "uint216"
                            }
                          },
                          "src": "3745:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4843,
                        "nodeType": "IfStatement",
                        "src": "3741:105:19",
                        "trueBody": {
                          "id": 4842,
                          "nodeType": "Block",
                          "src": "3772:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323136",
                                    "id": 4838,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3824:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_216_by_1",
                                      "typeString": "int_const 216"
                                    },
                                    "value": "216"
                                  },
                                  {
                                    "id": 4839,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4825,
                                    "src": "3829:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_216_by_1",
                                      "typeString": "int_const 216"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4837,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "3793:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 4840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3793:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 4841,
                              "nodeType": "RevertStatement",
                              "src": "3786:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4846,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4825,
                              "src": "3870:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4845,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3862:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint216_$",
                              "typeString": "type(uint216)"
                            },
                            "typeName": {
                              "id": 4844,
                              "name": "uint216",
                              "nodeType": "ElementaryTypeName",
                              "src": "3862:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3862:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint216",
                            "typeString": "uint216"
                          }
                        },
                        "functionReturnParameters": 4829,
                        "id": 4848,
                        "nodeType": "Return",
                        "src": "3855:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4823,
                    "nodeType": "StructuredDocumentation",
                    "src": "3380:280:19",
                    "text": " @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits"
                  },
                  "id": 4850,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint216",
                  "nameLocation": "3674:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4826,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4825,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "3692:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4850,
                        "src": "3684:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4824,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3684:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3683:15:19"
                  },
                  "returnParameters": {
                    "id": 4829,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4828,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4850,
                        "src": "3722:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint216",
                          "typeString": "uint216"
                        },
                        "typeName": {
                          "id": 4827,
                          "name": "uint216",
                          "nodeType": "ElementaryTypeName",
                          "src": "3722:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint216",
                            "typeString": "uint216"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3721:9:19"
                  },
                  "scope": 6448,
                  "src": "3665:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4877,
                    "nodeType": "Block",
                    "src": "4240:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4858,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4853,
                            "src": "4254:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4861,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4267:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint208_$",
                                    "typeString": "type(uint208)"
                                  },
                                  "typeName": {
                                    "id": 4860,
                                    "name": "uint208",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4267:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint208_$",
                                    "typeString": "type(uint208)"
                                  }
                                ],
                                "id": 4859,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "4262:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4262:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint208",
                                "typeString": "type(uint208)"
                              }
                            },
                            "id": 4863,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "4276:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "4262:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint208",
                              "typeString": "uint208"
                            }
                          },
                          "src": "4254:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4871,
                        "nodeType": "IfStatement",
                        "src": "4250:105:19",
                        "trueBody": {
                          "id": 4870,
                          "nodeType": "Block",
                          "src": "4281:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323038",
                                    "id": 4866,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4333:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_208_by_1",
                                      "typeString": "int_const 208"
                                    },
                                    "value": "208"
                                  },
                                  {
                                    "id": 4867,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4853,
                                    "src": "4338:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_208_by_1",
                                      "typeString": "int_const 208"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4865,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "4302:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 4868,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4302:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 4869,
                              "nodeType": "RevertStatement",
                              "src": "4295:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4874,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4853,
                              "src": "4379:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4873,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4371:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint208_$",
                              "typeString": "type(uint208)"
                            },
                            "typeName": {
                              "id": 4872,
                              "name": "uint208",
                              "nodeType": "ElementaryTypeName",
                              "src": "4371:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4875,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4371:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint208",
                            "typeString": "uint208"
                          }
                        },
                        "functionReturnParameters": 4857,
                        "id": 4876,
                        "nodeType": "Return",
                        "src": "4364:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4851,
                    "nodeType": "StructuredDocumentation",
                    "src": "3889:280:19",
                    "text": " @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits"
                  },
                  "id": 4878,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint208",
                  "nameLocation": "4183:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4854,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4853,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "4201:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4878,
                        "src": "4193:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4852,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4193:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4192:15:19"
                  },
                  "returnParameters": {
                    "id": 4857,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4856,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4878,
                        "src": "4231:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint208",
                          "typeString": "uint208"
                        },
                        "typeName": {
                          "id": 4855,
                          "name": "uint208",
                          "nodeType": "ElementaryTypeName",
                          "src": "4231:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint208",
                            "typeString": "uint208"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4230:9:19"
                  },
                  "scope": 6448,
                  "src": "4174:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4905,
                    "nodeType": "Block",
                    "src": "4749:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4886,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4881,
                            "src": "4763:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4889,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4776:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint200_$",
                                    "typeString": "type(uint200)"
                                  },
                                  "typeName": {
                                    "id": 4888,
                                    "name": "uint200",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4776:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint200_$",
                                    "typeString": "type(uint200)"
                                  }
                                ],
                                "id": 4887,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "4771:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4890,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4771:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint200",
                                "typeString": "type(uint200)"
                              }
                            },
                            "id": 4891,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "4785:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "4771:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint200",
                              "typeString": "uint200"
                            }
                          },
                          "src": "4763:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4899,
                        "nodeType": "IfStatement",
                        "src": "4759:105:19",
                        "trueBody": {
                          "id": 4898,
                          "nodeType": "Block",
                          "src": "4790:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323030",
                                    "id": 4894,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4842:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_200_by_1",
                                      "typeString": "int_const 200"
                                    },
                                    "value": "200"
                                  },
                                  {
                                    "id": 4895,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4881,
                                    "src": "4847:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_200_by_1",
                                      "typeString": "int_const 200"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4893,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "4811:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 4896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4811:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 4897,
                              "nodeType": "RevertStatement",
                              "src": "4804:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4902,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4881,
                              "src": "4888:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4901,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4880:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint200_$",
                              "typeString": "type(uint200)"
                            },
                            "typeName": {
                              "id": 4900,
                              "name": "uint200",
                              "nodeType": "ElementaryTypeName",
                              "src": "4880:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4880:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint200",
                            "typeString": "uint200"
                          }
                        },
                        "functionReturnParameters": 4885,
                        "id": 4904,
                        "nodeType": "Return",
                        "src": "4873:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4879,
                    "nodeType": "StructuredDocumentation",
                    "src": "4398:280:19",
                    "text": " @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits"
                  },
                  "id": 4906,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint200",
                  "nameLocation": "4692:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4882,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4881,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "4710:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4906,
                        "src": "4702:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4880,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4702:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4701:15:19"
                  },
                  "returnParameters": {
                    "id": 4885,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4884,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4906,
                        "src": "4740:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint200",
                          "typeString": "uint200"
                        },
                        "typeName": {
                          "id": 4883,
                          "name": "uint200",
                          "nodeType": "ElementaryTypeName",
                          "src": "4740:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint200",
                            "typeString": "uint200"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4739:9:19"
                  },
                  "scope": 6448,
                  "src": "4683:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4933,
                    "nodeType": "Block",
                    "src": "5258:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4914,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4909,
                            "src": "5272:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4917,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5285:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint192_$",
                                    "typeString": "type(uint192)"
                                  },
                                  "typeName": {
                                    "id": 4916,
                                    "name": "uint192",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5285:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint192_$",
                                    "typeString": "type(uint192)"
                                  }
                                ],
                                "id": 4915,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "5280:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4918,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5280:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint192",
                                "typeString": "type(uint192)"
                              }
                            },
                            "id": 4919,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "5294:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "5280:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint192",
                              "typeString": "uint192"
                            }
                          },
                          "src": "5272:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4927,
                        "nodeType": "IfStatement",
                        "src": "5268:105:19",
                        "trueBody": {
                          "id": 4926,
                          "nodeType": "Block",
                          "src": "5299:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313932",
                                    "id": 4922,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5351:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_192_by_1",
                                      "typeString": "int_const 192"
                                    },
                                    "value": "192"
                                  },
                                  {
                                    "id": 4923,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4909,
                                    "src": "5356:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_192_by_1",
                                      "typeString": "int_const 192"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4921,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "5320:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 4924,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5320:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 4925,
                              "nodeType": "RevertStatement",
                              "src": "5313:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4930,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4909,
                              "src": "5397:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4929,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5389:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint192_$",
                              "typeString": "type(uint192)"
                            },
                            "typeName": {
                              "id": 4928,
                              "name": "uint192",
                              "nodeType": "ElementaryTypeName",
                              "src": "5389:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5389:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint192",
                            "typeString": "uint192"
                          }
                        },
                        "functionReturnParameters": 4913,
                        "id": 4932,
                        "nodeType": "Return",
                        "src": "5382:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4907,
                    "nodeType": "StructuredDocumentation",
                    "src": "4907:280:19",
                    "text": " @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits"
                  },
                  "id": 4934,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint192",
                  "nameLocation": "5201:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4910,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4909,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5219:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4934,
                        "src": "5211:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4908,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5211:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5210:15:19"
                  },
                  "returnParameters": {
                    "id": 4913,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4912,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4934,
                        "src": "5249:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint192",
                          "typeString": "uint192"
                        },
                        "typeName": {
                          "id": 4911,
                          "name": "uint192",
                          "nodeType": "ElementaryTypeName",
                          "src": "5249:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint192",
                            "typeString": "uint192"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5248:9:19"
                  },
                  "scope": 6448,
                  "src": "5192:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4961,
                    "nodeType": "Block",
                    "src": "5767:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4942,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4937,
                            "src": "5781:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4945,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5794:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint184_$",
                                    "typeString": "type(uint184)"
                                  },
                                  "typeName": {
                                    "id": 4944,
                                    "name": "uint184",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5794:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint184_$",
                                    "typeString": "type(uint184)"
                                  }
                                ],
                                "id": 4943,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "5789:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5789:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint184",
                                "typeString": "type(uint184)"
                              }
                            },
                            "id": 4947,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "5803:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "5789:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint184",
                              "typeString": "uint184"
                            }
                          },
                          "src": "5781:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4955,
                        "nodeType": "IfStatement",
                        "src": "5777:105:19",
                        "trueBody": {
                          "id": 4954,
                          "nodeType": "Block",
                          "src": "5808:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313834",
                                    "id": 4950,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5860:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_184_by_1",
                                      "typeString": "int_const 184"
                                    },
                                    "value": "184"
                                  },
                                  {
                                    "id": 4951,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4937,
                                    "src": "5865:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_184_by_1",
                                      "typeString": "int_const 184"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4949,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "5829:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 4952,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5829:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 4953,
                              "nodeType": "RevertStatement",
                              "src": "5822:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4958,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4937,
                              "src": "5906:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4957,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5898:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint184_$",
                              "typeString": "type(uint184)"
                            },
                            "typeName": {
                              "id": 4956,
                              "name": "uint184",
                              "nodeType": "ElementaryTypeName",
                              "src": "5898:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5898:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint184",
                            "typeString": "uint184"
                          }
                        },
                        "functionReturnParameters": 4941,
                        "id": 4960,
                        "nodeType": "Return",
                        "src": "5891:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4935,
                    "nodeType": "StructuredDocumentation",
                    "src": "5416:280:19",
                    "text": " @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits"
                  },
                  "id": 4962,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint184",
                  "nameLocation": "5710:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4938,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4937,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5728:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4962,
                        "src": "5720:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4936,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5720:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5719:15:19"
                  },
                  "returnParameters": {
                    "id": 4941,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4940,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4962,
                        "src": "5758:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint184",
                          "typeString": "uint184"
                        },
                        "typeName": {
                          "id": 4939,
                          "name": "uint184",
                          "nodeType": "ElementaryTypeName",
                          "src": "5758:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint184",
                            "typeString": "uint184"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5757:9:19"
                  },
                  "scope": 6448,
                  "src": "5701:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4989,
                    "nodeType": "Block",
                    "src": "6276:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4970,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4965,
                            "src": "6290:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4973,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6303:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint176_$",
                                    "typeString": "type(uint176)"
                                  },
                                  "typeName": {
                                    "id": 4972,
                                    "name": "uint176",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6303:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint176_$",
                                    "typeString": "type(uint176)"
                                  }
                                ],
                                "id": 4971,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "6298:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6298:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint176",
                                "typeString": "type(uint176)"
                              }
                            },
                            "id": 4975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "6312:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "6298:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint176",
                              "typeString": "uint176"
                            }
                          },
                          "src": "6290:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4983,
                        "nodeType": "IfStatement",
                        "src": "6286:105:19",
                        "trueBody": {
                          "id": 4982,
                          "nodeType": "Block",
                          "src": "6317:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313736",
                                    "id": 4978,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6369:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_176_by_1",
                                      "typeString": "int_const 176"
                                    },
                                    "value": "176"
                                  },
                                  {
                                    "id": 4979,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4965,
                                    "src": "6374:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_176_by_1",
                                      "typeString": "int_const 176"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4977,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "6338:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 4980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6338:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 4981,
                              "nodeType": "RevertStatement",
                              "src": "6331:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4986,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4965,
                              "src": "6415:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4985,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6407:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint176_$",
                              "typeString": "type(uint176)"
                            },
                            "typeName": {
                              "id": 4984,
                              "name": "uint176",
                              "nodeType": "ElementaryTypeName",
                              "src": "6407:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6407:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint176",
                            "typeString": "uint176"
                          }
                        },
                        "functionReturnParameters": 4969,
                        "id": 4988,
                        "nodeType": "Return",
                        "src": "6400:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4963,
                    "nodeType": "StructuredDocumentation",
                    "src": "5925:280:19",
                    "text": " @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits"
                  },
                  "id": 4990,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint176",
                  "nameLocation": "6219:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4966,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4965,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "6237:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4990,
                        "src": "6229:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4964,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6229:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6228:15:19"
                  },
                  "returnParameters": {
                    "id": 4969,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4968,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4990,
                        "src": "6267:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint176",
                          "typeString": "uint176"
                        },
                        "typeName": {
                          "id": 4967,
                          "name": "uint176",
                          "nodeType": "ElementaryTypeName",
                          "src": "6267:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint176",
                            "typeString": "uint176"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6266:9:19"
                  },
                  "scope": 6448,
                  "src": "6210:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5017,
                    "nodeType": "Block",
                    "src": "6785:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4998,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4993,
                            "src": "6799:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5001,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6812:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint168_$",
                                    "typeString": "type(uint168)"
                                  },
                                  "typeName": {
                                    "id": 5000,
                                    "name": "uint168",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6812:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint168_$",
                                    "typeString": "type(uint168)"
                                  }
                                ],
                                "id": 4999,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "6807:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5002,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6807:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint168",
                                "typeString": "type(uint168)"
                              }
                            },
                            "id": 5003,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "6821:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "6807:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint168",
                              "typeString": "uint168"
                            }
                          },
                          "src": "6799:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5011,
                        "nodeType": "IfStatement",
                        "src": "6795:105:19",
                        "trueBody": {
                          "id": 5010,
                          "nodeType": "Block",
                          "src": "6826:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313638",
                                    "id": 5006,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6878:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_168_by_1",
                                      "typeString": "int_const 168"
                                    },
                                    "value": "168"
                                  },
                                  {
                                    "id": 5007,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4993,
                                    "src": "6883:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_168_by_1",
                                      "typeString": "int_const 168"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5005,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "6847:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5008,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6847:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5009,
                              "nodeType": "RevertStatement",
                              "src": "6840:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5014,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4993,
                              "src": "6924:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5013,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6916:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint168_$",
                              "typeString": "type(uint168)"
                            },
                            "typeName": {
                              "id": 5012,
                              "name": "uint168",
                              "nodeType": "ElementaryTypeName",
                              "src": "6916:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6916:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint168",
                            "typeString": "uint168"
                          }
                        },
                        "functionReturnParameters": 4997,
                        "id": 5016,
                        "nodeType": "Return",
                        "src": "6909:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4991,
                    "nodeType": "StructuredDocumentation",
                    "src": "6434:280:19",
                    "text": " @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits"
                  },
                  "id": 5018,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint168",
                  "nameLocation": "6728:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4994,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4993,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "6746:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5018,
                        "src": "6738:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4992,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6738:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6737:15:19"
                  },
                  "returnParameters": {
                    "id": 4997,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4996,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5018,
                        "src": "6776:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint168",
                          "typeString": "uint168"
                        },
                        "typeName": {
                          "id": 4995,
                          "name": "uint168",
                          "nodeType": "ElementaryTypeName",
                          "src": "6776:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint168",
                            "typeString": "uint168"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6775:9:19"
                  },
                  "scope": 6448,
                  "src": "6719:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5045,
                    "nodeType": "Block",
                    "src": "7294:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5026,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5021,
                            "src": "7308:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5029,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7321:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 5028,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7321:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  }
                                ],
                                "id": 5027,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "7316:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7316:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint160",
                                "typeString": "type(uint160)"
                              }
                            },
                            "id": 5031,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "7330:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "7316:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "src": "7308:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5039,
                        "nodeType": "IfStatement",
                        "src": "7304:105:19",
                        "trueBody": {
                          "id": 5038,
                          "nodeType": "Block",
                          "src": "7335:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313630",
                                    "id": 5034,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7387:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_160_by_1",
                                      "typeString": "int_const 160"
                                    },
                                    "value": "160"
                                  },
                                  {
                                    "id": 5035,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5021,
                                    "src": "7392:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_160_by_1",
                                      "typeString": "int_const 160"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5033,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "7356:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5036,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7356:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5037,
                              "nodeType": "RevertStatement",
                              "src": "7349:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5042,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5021,
                              "src": "7433:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5041,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7425:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint160_$",
                              "typeString": "type(uint160)"
                            },
                            "typeName": {
                              "id": 5040,
                              "name": "uint160",
                              "nodeType": "ElementaryTypeName",
                              "src": "7425:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7425:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "functionReturnParameters": 5025,
                        "id": 5044,
                        "nodeType": "Return",
                        "src": "7418:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5019,
                    "nodeType": "StructuredDocumentation",
                    "src": "6943:280:19",
                    "text": " @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits"
                  },
                  "id": 5046,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint160",
                  "nameLocation": "7237:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5022,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5021,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "7255:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5046,
                        "src": "7247:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5020,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7247:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7246:15:19"
                  },
                  "returnParameters": {
                    "id": 5025,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5024,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5046,
                        "src": "7285:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 5023,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "7285:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7284:9:19"
                  },
                  "scope": 6448,
                  "src": "7228:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5073,
                    "nodeType": "Block",
                    "src": "7803:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5054,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5049,
                            "src": "7817:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5057,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7830:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint152_$",
                                    "typeString": "type(uint152)"
                                  },
                                  "typeName": {
                                    "id": 5056,
                                    "name": "uint152",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7830:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint152_$",
                                    "typeString": "type(uint152)"
                                  }
                                ],
                                "id": 5055,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "7825:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7825:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint152",
                                "typeString": "type(uint152)"
                              }
                            },
                            "id": 5059,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "7839:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "7825:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint152",
                              "typeString": "uint152"
                            }
                          },
                          "src": "7817:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5067,
                        "nodeType": "IfStatement",
                        "src": "7813:105:19",
                        "trueBody": {
                          "id": 5066,
                          "nodeType": "Block",
                          "src": "7844:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313532",
                                    "id": 5062,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7896:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_152_by_1",
                                      "typeString": "int_const 152"
                                    },
                                    "value": "152"
                                  },
                                  {
                                    "id": 5063,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5049,
                                    "src": "7901:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_152_by_1",
                                      "typeString": "int_const 152"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5061,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "7865:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5064,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7865:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5065,
                              "nodeType": "RevertStatement",
                              "src": "7858:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5070,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5049,
                              "src": "7942:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5069,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7934:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint152_$",
                              "typeString": "type(uint152)"
                            },
                            "typeName": {
                              "id": 5068,
                              "name": "uint152",
                              "nodeType": "ElementaryTypeName",
                              "src": "7934:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7934:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint152",
                            "typeString": "uint152"
                          }
                        },
                        "functionReturnParameters": 5053,
                        "id": 5072,
                        "nodeType": "Return",
                        "src": "7927:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5047,
                    "nodeType": "StructuredDocumentation",
                    "src": "7452:280:19",
                    "text": " @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits"
                  },
                  "id": 5074,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint152",
                  "nameLocation": "7746:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5050,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5049,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "7764:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5074,
                        "src": "7756:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5048,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7756:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7755:15:19"
                  },
                  "returnParameters": {
                    "id": 5053,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5052,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5074,
                        "src": "7794:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint152",
                          "typeString": "uint152"
                        },
                        "typeName": {
                          "id": 5051,
                          "name": "uint152",
                          "nodeType": "ElementaryTypeName",
                          "src": "7794:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint152",
                            "typeString": "uint152"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7793:9:19"
                  },
                  "scope": 6448,
                  "src": "7737:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5101,
                    "nodeType": "Block",
                    "src": "8312:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5082,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5077,
                            "src": "8326:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5085,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8339:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint144_$",
                                    "typeString": "type(uint144)"
                                  },
                                  "typeName": {
                                    "id": 5084,
                                    "name": "uint144",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8339:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint144_$",
                                    "typeString": "type(uint144)"
                                  }
                                ],
                                "id": 5083,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "8334:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5086,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8334:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint144",
                                "typeString": "type(uint144)"
                              }
                            },
                            "id": 5087,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "8348:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "8334:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint144",
                              "typeString": "uint144"
                            }
                          },
                          "src": "8326:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5095,
                        "nodeType": "IfStatement",
                        "src": "8322:105:19",
                        "trueBody": {
                          "id": 5094,
                          "nodeType": "Block",
                          "src": "8353:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313434",
                                    "id": 5090,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8405:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_144_by_1",
                                      "typeString": "int_const 144"
                                    },
                                    "value": "144"
                                  },
                                  {
                                    "id": 5091,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5077,
                                    "src": "8410:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_144_by_1",
                                      "typeString": "int_const 144"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5089,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "8374:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5092,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8374:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5093,
                              "nodeType": "RevertStatement",
                              "src": "8367:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5098,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5077,
                              "src": "8451:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8443:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint144_$",
                              "typeString": "type(uint144)"
                            },
                            "typeName": {
                              "id": 5096,
                              "name": "uint144",
                              "nodeType": "ElementaryTypeName",
                              "src": "8443:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8443:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint144",
                            "typeString": "uint144"
                          }
                        },
                        "functionReturnParameters": 5081,
                        "id": 5100,
                        "nodeType": "Return",
                        "src": "8436:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5075,
                    "nodeType": "StructuredDocumentation",
                    "src": "7961:280:19",
                    "text": " @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits"
                  },
                  "id": 5102,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint144",
                  "nameLocation": "8255:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5078,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5077,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "8273:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5102,
                        "src": "8265:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5076,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8265:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8264:15:19"
                  },
                  "returnParameters": {
                    "id": 5081,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5080,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5102,
                        "src": "8303:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint144",
                          "typeString": "uint144"
                        },
                        "typeName": {
                          "id": 5079,
                          "name": "uint144",
                          "nodeType": "ElementaryTypeName",
                          "src": "8303:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint144",
                            "typeString": "uint144"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8302:9:19"
                  },
                  "scope": 6448,
                  "src": "8246:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5129,
                    "nodeType": "Block",
                    "src": "8821:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5110,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5105,
                            "src": "8835:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5113,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8848:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint136_$",
                                    "typeString": "type(uint136)"
                                  },
                                  "typeName": {
                                    "id": 5112,
                                    "name": "uint136",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8848:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint136_$",
                                    "typeString": "type(uint136)"
                                  }
                                ],
                                "id": 5111,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "8843:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5114,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8843:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint136",
                                "typeString": "type(uint136)"
                              }
                            },
                            "id": 5115,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "8857:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "8843:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint136",
                              "typeString": "uint136"
                            }
                          },
                          "src": "8835:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5123,
                        "nodeType": "IfStatement",
                        "src": "8831:105:19",
                        "trueBody": {
                          "id": 5122,
                          "nodeType": "Block",
                          "src": "8862:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313336",
                                    "id": 5118,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8914:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_136_by_1",
                                      "typeString": "int_const 136"
                                    },
                                    "value": "136"
                                  },
                                  {
                                    "id": 5119,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5105,
                                    "src": "8919:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_136_by_1",
                                      "typeString": "int_const 136"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5117,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "8883:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8883:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5121,
                              "nodeType": "RevertStatement",
                              "src": "8876:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5126,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5105,
                              "src": "8960:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5125,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8952:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint136_$",
                              "typeString": "type(uint136)"
                            },
                            "typeName": {
                              "id": 5124,
                              "name": "uint136",
                              "nodeType": "ElementaryTypeName",
                              "src": "8952:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8952:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint136",
                            "typeString": "uint136"
                          }
                        },
                        "functionReturnParameters": 5109,
                        "id": 5128,
                        "nodeType": "Return",
                        "src": "8945:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5103,
                    "nodeType": "StructuredDocumentation",
                    "src": "8470:280:19",
                    "text": " @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits"
                  },
                  "id": 5130,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint136",
                  "nameLocation": "8764:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5105,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "8782:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5130,
                        "src": "8774:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5104,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8774:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8773:15:19"
                  },
                  "returnParameters": {
                    "id": 5109,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5108,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5130,
                        "src": "8812:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint136",
                          "typeString": "uint136"
                        },
                        "typeName": {
                          "id": 5107,
                          "name": "uint136",
                          "nodeType": "ElementaryTypeName",
                          "src": "8812:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint136",
                            "typeString": "uint136"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8811:9:19"
                  },
                  "scope": 6448,
                  "src": "8755:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5157,
                    "nodeType": "Block",
                    "src": "9330:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5138,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5133,
                            "src": "9344:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5141,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9357:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": {
                                    "id": 5140,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9357:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  }
                                ],
                                "id": 5139,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "9352:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9352:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint128",
                                "typeString": "type(uint128)"
                              }
                            },
                            "id": 5143,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "9366:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "9352:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "9344:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5151,
                        "nodeType": "IfStatement",
                        "src": "9340:105:19",
                        "trueBody": {
                          "id": 5150,
                          "nodeType": "Block",
                          "src": "9371:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313238",
                                    "id": 5146,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9423:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  {
                                    "id": 5147,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5133,
                                    "src": "9428:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5145,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "9392:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5148,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9392:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5149,
                              "nodeType": "RevertStatement",
                              "src": "9385:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5154,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5133,
                              "src": "9469:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5153,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9461:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint128_$",
                              "typeString": "type(uint128)"
                            },
                            "typeName": {
                              "id": 5152,
                              "name": "uint128",
                              "nodeType": "ElementaryTypeName",
                              "src": "9461:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9461:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "functionReturnParameters": 5137,
                        "id": 5156,
                        "nodeType": "Return",
                        "src": "9454:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5131,
                    "nodeType": "StructuredDocumentation",
                    "src": "8979:280:19",
                    "text": " @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits"
                  },
                  "id": 5158,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint128",
                  "nameLocation": "9273:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5134,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5133,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "9291:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5158,
                        "src": "9283:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5132,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9283:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9282:15:19"
                  },
                  "returnParameters": {
                    "id": 5137,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5136,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5158,
                        "src": "9321:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 5135,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "9321:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9320:9:19"
                  },
                  "scope": 6448,
                  "src": "9264:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5185,
                    "nodeType": "Block",
                    "src": "9839:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5166,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5161,
                            "src": "9853:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5169,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9866:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  },
                                  "typeName": {
                                    "id": 5168,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9866:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  }
                                ],
                                "id": 5167,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "9861:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9861:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint120",
                                "typeString": "type(uint120)"
                              }
                            },
                            "id": 5171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "9875:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "9861:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint120",
                              "typeString": "uint120"
                            }
                          },
                          "src": "9853:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5179,
                        "nodeType": "IfStatement",
                        "src": "9849:105:19",
                        "trueBody": {
                          "id": 5178,
                          "nodeType": "Block",
                          "src": "9880:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313230",
                                    "id": 5174,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9932:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_120_by_1",
                                      "typeString": "int_const 120"
                                    },
                                    "value": "120"
                                  },
                                  {
                                    "id": 5175,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5161,
                                    "src": "9937:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_120_by_1",
                                      "typeString": "int_const 120"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5173,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "9901:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5176,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9901:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5177,
                              "nodeType": "RevertStatement",
                              "src": "9894:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5182,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5161,
                              "src": "9978:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5181,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9970:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint120_$",
                              "typeString": "type(uint120)"
                            },
                            "typeName": {
                              "id": 5180,
                              "name": "uint120",
                              "nodeType": "ElementaryTypeName",
                              "src": "9970:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9970:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint120",
                            "typeString": "uint120"
                          }
                        },
                        "functionReturnParameters": 5165,
                        "id": 5184,
                        "nodeType": "Return",
                        "src": "9963:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5159,
                    "nodeType": "StructuredDocumentation",
                    "src": "9488:280:19",
                    "text": " @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits"
                  },
                  "id": 5186,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint120",
                  "nameLocation": "9782:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5162,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5161,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "9800:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5186,
                        "src": "9792:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5160,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9792:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9791:15:19"
                  },
                  "returnParameters": {
                    "id": 5165,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5164,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5186,
                        "src": "9830:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint120",
                          "typeString": "uint120"
                        },
                        "typeName": {
                          "id": 5163,
                          "name": "uint120",
                          "nodeType": "ElementaryTypeName",
                          "src": "9830:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint120",
                            "typeString": "uint120"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9829:9:19"
                  },
                  "scope": 6448,
                  "src": "9773:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5213,
                    "nodeType": "Block",
                    "src": "10348:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5194,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5189,
                            "src": "10362:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5197,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10375:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint112_$",
                                    "typeString": "type(uint112)"
                                  },
                                  "typeName": {
                                    "id": 5196,
                                    "name": "uint112",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10375:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint112_$",
                                    "typeString": "type(uint112)"
                                  }
                                ],
                                "id": 5195,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "10370:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10370:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint112",
                                "typeString": "type(uint112)"
                              }
                            },
                            "id": 5199,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "10384:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "10370:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "10362:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5207,
                        "nodeType": "IfStatement",
                        "src": "10358:105:19",
                        "trueBody": {
                          "id": 5206,
                          "nodeType": "Block",
                          "src": "10389:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313132",
                                    "id": 5202,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10441:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_112_by_1",
                                      "typeString": "int_const 112"
                                    },
                                    "value": "112"
                                  },
                                  {
                                    "id": 5203,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5189,
                                    "src": "10446:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_112_by_1",
                                      "typeString": "int_const 112"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5201,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "10410:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5204,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10410:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5205,
                              "nodeType": "RevertStatement",
                              "src": "10403:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5210,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5189,
                              "src": "10487:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5209,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10479:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint112_$",
                              "typeString": "type(uint112)"
                            },
                            "typeName": {
                              "id": 5208,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "10479:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10479:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "functionReturnParameters": 5193,
                        "id": 5212,
                        "nodeType": "Return",
                        "src": "10472:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5187,
                    "nodeType": "StructuredDocumentation",
                    "src": "9997:280:19",
                    "text": " @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits"
                  },
                  "id": 5214,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint112",
                  "nameLocation": "10291:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5190,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5189,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "10309:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5214,
                        "src": "10301:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5188,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10301:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10300:15:19"
                  },
                  "returnParameters": {
                    "id": 5193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5192,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5214,
                        "src": "10339:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 5191,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "10339:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10338:9:19"
                  },
                  "scope": 6448,
                  "src": "10282:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5241,
                    "nodeType": "Block",
                    "src": "10857:152:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5222,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5217,
                            "src": "10871:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5225,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10884:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint104_$",
                                    "typeString": "type(uint104)"
                                  },
                                  "typeName": {
                                    "id": 5224,
                                    "name": "uint104",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10884:7:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint104_$",
                                    "typeString": "type(uint104)"
                                  }
                                ],
                                "id": 5223,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "10879:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10879:13:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint104",
                                "typeString": "type(uint104)"
                              }
                            },
                            "id": 5227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "10893:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "10879:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint104",
                              "typeString": "uint104"
                            }
                          },
                          "src": "10871:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5235,
                        "nodeType": "IfStatement",
                        "src": "10867:105:19",
                        "trueBody": {
                          "id": 5234,
                          "nodeType": "Block",
                          "src": "10898:74:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313034",
                                    "id": 5230,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10950:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_104_by_1",
                                      "typeString": "int_const 104"
                                    },
                                    "value": "104"
                                  },
                                  {
                                    "id": 5231,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5217,
                                    "src": "10955:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_104_by_1",
                                      "typeString": "int_const 104"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5229,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "10919:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5232,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10919:42:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5233,
                              "nodeType": "RevertStatement",
                              "src": "10912:49:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5238,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5217,
                              "src": "10996:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5237,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10988:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint104_$",
                              "typeString": "type(uint104)"
                            },
                            "typeName": {
                              "id": 5236,
                              "name": "uint104",
                              "nodeType": "ElementaryTypeName",
                              "src": "10988:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10988:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint104",
                            "typeString": "uint104"
                          }
                        },
                        "functionReturnParameters": 5221,
                        "id": 5240,
                        "nodeType": "Return",
                        "src": "10981:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5215,
                    "nodeType": "StructuredDocumentation",
                    "src": "10506:280:19",
                    "text": " @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits"
                  },
                  "id": 5242,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint104",
                  "nameLocation": "10800:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5218,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5217,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "10818:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5242,
                        "src": "10810:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5216,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10810:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10809:15:19"
                  },
                  "returnParameters": {
                    "id": 5221,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5220,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5242,
                        "src": "10848:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint104",
                          "typeString": "uint104"
                        },
                        "typeName": {
                          "id": 5219,
                          "name": "uint104",
                          "nodeType": "ElementaryTypeName",
                          "src": "10848:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint104",
                            "typeString": "uint104"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10847:9:19"
                  },
                  "scope": 6448,
                  "src": "10791:218:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5269,
                    "nodeType": "Block",
                    "src": "11360:149:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5250,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5245,
                            "src": "11374:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5253,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11387:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint96_$",
                                    "typeString": "type(uint96)"
                                  },
                                  "typeName": {
                                    "id": 5252,
                                    "name": "uint96",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11387:6:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint96_$",
                                    "typeString": "type(uint96)"
                                  }
                                ],
                                "id": 5251,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "11382:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5254,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11382:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint96",
                                "typeString": "type(uint96)"
                              }
                            },
                            "id": 5255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "11395:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "11382:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "11374:24:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5263,
                        "nodeType": "IfStatement",
                        "src": "11370:103:19",
                        "trueBody": {
                          "id": 5262,
                          "nodeType": "Block",
                          "src": "11400:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3936",
                                    "id": 5258,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11452:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_96_by_1",
                                      "typeString": "int_const 96"
                                    },
                                    "value": "96"
                                  },
                                  {
                                    "id": 5259,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5245,
                                    "src": "11456:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_96_by_1",
                                      "typeString": "int_const 96"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5257,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "11421:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5260,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11421:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5261,
                              "nodeType": "RevertStatement",
                              "src": "11414:48:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5266,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5245,
                              "src": "11496:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5265,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "11489:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint96_$",
                              "typeString": "type(uint96)"
                            },
                            "typeName": {
                              "id": 5264,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "11489:6:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11489:13:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 5249,
                        "id": 5268,
                        "nodeType": "Return",
                        "src": "11482:20:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5243,
                    "nodeType": "StructuredDocumentation",
                    "src": "11015:276:19",
                    "text": " @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits"
                  },
                  "id": 5270,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint96",
                  "nameLocation": "11305:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5246,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5245,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "11322:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5270,
                        "src": "11314:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5244,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11314:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11313:15:19"
                  },
                  "returnParameters": {
                    "id": 5249,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5248,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5270,
                        "src": "11352:6:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 5247,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "11352:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11351:8:19"
                  },
                  "scope": 6448,
                  "src": "11296:213:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5297,
                    "nodeType": "Block",
                    "src": "11860:149:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5278,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5273,
                            "src": "11874:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5281,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11887:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint88_$",
                                    "typeString": "type(uint88)"
                                  },
                                  "typeName": {
                                    "id": 5280,
                                    "name": "uint88",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11887:6:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint88_$",
                                    "typeString": "type(uint88)"
                                  }
                                ],
                                "id": 5279,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "11882:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5282,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11882:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint88",
                                "typeString": "type(uint88)"
                              }
                            },
                            "id": 5283,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "11895:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "11882:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint88",
                              "typeString": "uint88"
                            }
                          },
                          "src": "11874:24:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5291,
                        "nodeType": "IfStatement",
                        "src": "11870:103:19",
                        "trueBody": {
                          "id": 5290,
                          "nodeType": "Block",
                          "src": "11900:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3838",
                                    "id": 5286,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11952:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_88_by_1",
                                      "typeString": "int_const 88"
                                    },
                                    "value": "88"
                                  },
                                  {
                                    "id": 5287,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5273,
                                    "src": "11956:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_88_by_1",
                                      "typeString": "int_const 88"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5285,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "11921:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11921:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5289,
                              "nodeType": "RevertStatement",
                              "src": "11914:48:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5294,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5273,
                              "src": "11996:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5293,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "11989:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint88_$",
                              "typeString": "type(uint88)"
                            },
                            "typeName": {
                              "id": 5292,
                              "name": "uint88",
                              "nodeType": "ElementaryTypeName",
                              "src": "11989:6:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11989:13:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "functionReturnParameters": 5277,
                        "id": 5296,
                        "nodeType": "Return",
                        "src": "11982:20:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5271,
                    "nodeType": "StructuredDocumentation",
                    "src": "11515:276:19",
                    "text": " @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits"
                  },
                  "id": 5298,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint88",
                  "nameLocation": "11805:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5274,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5273,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "11822:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5298,
                        "src": "11814:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5272,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11814:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11813:15:19"
                  },
                  "returnParameters": {
                    "id": 5277,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5276,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5298,
                        "src": "11852:6:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint88",
                          "typeString": "uint88"
                        },
                        "typeName": {
                          "id": 5275,
                          "name": "uint88",
                          "nodeType": "ElementaryTypeName",
                          "src": "11852:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11851:8:19"
                  },
                  "scope": 6448,
                  "src": "11796:213:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5325,
                    "nodeType": "Block",
                    "src": "12360:149:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5306,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5301,
                            "src": "12374:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5309,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12387:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint80_$",
                                    "typeString": "type(uint80)"
                                  },
                                  "typeName": {
                                    "id": 5308,
                                    "name": "uint80",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12387:6:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint80_$",
                                    "typeString": "type(uint80)"
                                  }
                                ],
                                "id": 5307,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "12382:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12382:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint80",
                                "typeString": "type(uint80)"
                              }
                            },
                            "id": 5311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "12395:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "12382:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint80",
                              "typeString": "uint80"
                            }
                          },
                          "src": "12374:24:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5319,
                        "nodeType": "IfStatement",
                        "src": "12370:103:19",
                        "trueBody": {
                          "id": 5318,
                          "nodeType": "Block",
                          "src": "12400:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3830",
                                    "id": 5314,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12452:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_80_by_1",
                                      "typeString": "int_const 80"
                                    },
                                    "value": "80"
                                  },
                                  {
                                    "id": 5315,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5301,
                                    "src": "12456:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_80_by_1",
                                      "typeString": "int_const 80"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5313,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "12421:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5316,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12421:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5317,
                              "nodeType": "RevertStatement",
                              "src": "12414:48:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5322,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5301,
                              "src": "12496:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12489:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint80_$",
                              "typeString": "type(uint80)"
                            },
                            "typeName": {
                              "id": 5320,
                              "name": "uint80",
                              "nodeType": "ElementaryTypeName",
                              "src": "12489:6:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5323,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12489:13:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint80",
                            "typeString": "uint80"
                          }
                        },
                        "functionReturnParameters": 5305,
                        "id": 5324,
                        "nodeType": "Return",
                        "src": "12482:20:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5299,
                    "nodeType": "StructuredDocumentation",
                    "src": "12015:276:19",
                    "text": " @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits"
                  },
                  "id": 5326,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint80",
                  "nameLocation": "12305:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5302,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5301,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "12322:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5326,
                        "src": "12314:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5300,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12314:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12313:15:19"
                  },
                  "returnParameters": {
                    "id": 5305,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5304,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5326,
                        "src": "12352:6:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint80",
                          "typeString": "uint80"
                        },
                        "typeName": {
                          "id": 5303,
                          "name": "uint80",
                          "nodeType": "ElementaryTypeName",
                          "src": "12352:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint80",
                            "typeString": "uint80"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12351:8:19"
                  },
                  "scope": 6448,
                  "src": "12296:213:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5353,
                    "nodeType": "Block",
                    "src": "12860:149:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5334,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5329,
                            "src": "12874:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5337,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12887:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint72_$",
                                    "typeString": "type(uint72)"
                                  },
                                  "typeName": {
                                    "id": 5336,
                                    "name": "uint72",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12887:6:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint72_$",
                                    "typeString": "type(uint72)"
                                  }
                                ],
                                "id": 5335,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "12882:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5338,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12882:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint72",
                                "typeString": "type(uint72)"
                              }
                            },
                            "id": 5339,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "12895:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "12882:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint72",
                              "typeString": "uint72"
                            }
                          },
                          "src": "12874:24:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5347,
                        "nodeType": "IfStatement",
                        "src": "12870:103:19",
                        "trueBody": {
                          "id": 5346,
                          "nodeType": "Block",
                          "src": "12900:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3732",
                                    "id": 5342,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12952:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_72_by_1",
                                      "typeString": "int_const 72"
                                    },
                                    "value": "72"
                                  },
                                  {
                                    "id": 5343,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5329,
                                    "src": "12956:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_72_by_1",
                                      "typeString": "int_const 72"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5341,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "12921:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5344,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12921:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5345,
                              "nodeType": "RevertStatement",
                              "src": "12914:48:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5350,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5329,
                              "src": "12996:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12989:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint72_$",
                              "typeString": "type(uint72)"
                            },
                            "typeName": {
                              "id": 5348,
                              "name": "uint72",
                              "nodeType": "ElementaryTypeName",
                              "src": "12989:6:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12989:13:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          }
                        },
                        "functionReturnParameters": 5333,
                        "id": 5352,
                        "nodeType": "Return",
                        "src": "12982:20:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5327,
                    "nodeType": "StructuredDocumentation",
                    "src": "12515:276:19",
                    "text": " @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits"
                  },
                  "id": 5354,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint72",
                  "nameLocation": "12805:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5330,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5329,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "12822:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5354,
                        "src": "12814:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5328,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12814:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12813:15:19"
                  },
                  "returnParameters": {
                    "id": 5333,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5332,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5354,
                        "src": "12852:6:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint72",
                          "typeString": "uint72"
                        },
                        "typeName": {
                          "id": 5331,
                          "name": "uint72",
                          "nodeType": "ElementaryTypeName",
                          "src": "12852:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12851:8:19"
                  },
                  "scope": 6448,
                  "src": "12796:213:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5381,
                    "nodeType": "Block",
                    "src": "13360:149:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5362,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5357,
                            "src": "13374:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5365,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13387:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint64_$",
                                    "typeString": "type(uint64)"
                                  },
                                  "typeName": {
                                    "id": 5364,
                                    "name": "uint64",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13387:6:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint64_$",
                                    "typeString": "type(uint64)"
                                  }
                                ],
                                "id": 5363,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "13382:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13382:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint64",
                                "typeString": "type(uint64)"
                              }
                            },
                            "id": 5367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "13395:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "13382:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "13374:24:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5375,
                        "nodeType": "IfStatement",
                        "src": "13370:103:19",
                        "trueBody": {
                          "id": 5374,
                          "nodeType": "Block",
                          "src": "13400:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3634",
                                    "id": 5370,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13452:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_64_by_1",
                                      "typeString": "int_const 64"
                                    },
                                    "value": "64"
                                  },
                                  {
                                    "id": 5371,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5357,
                                    "src": "13456:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_64_by_1",
                                      "typeString": "int_const 64"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5369,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "13421:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5372,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13421:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5373,
                              "nodeType": "RevertStatement",
                              "src": "13414:48:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5378,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5357,
                              "src": "13496:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "13489:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint64_$",
                              "typeString": "type(uint64)"
                            },
                            "typeName": {
                              "id": 5376,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "13489:6:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13489:13:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 5361,
                        "id": 5380,
                        "nodeType": "Return",
                        "src": "13482:20:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5355,
                    "nodeType": "StructuredDocumentation",
                    "src": "13015:276:19",
                    "text": " @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits"
                  },
                  "id": 5382,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint64",
                  "nameLocation": "13305:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5358,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5357,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "13322:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5382,
                        "src": "13314:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5356,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13314:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13313:15:19"
                  },
                  "returnParameters": {
                    "id": 5361,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5360,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5382,
                        "src": "13352:6:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 5359,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "13352:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13351:8:19"
                  },
                  "scope": 6448,
                  "src": "13296:213:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5409,
                    "nodeType": "Block",
                    "src": "13860:149:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5390,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5385,
                            "src": "13874:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5393,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13887:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint56_$",
                                    "typeString": "type(uint56)"
                                  },
                                  "typeName": {
                                    "id": 5392,
                                    "name": "uint56",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13887:6:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint56_$",
                                    "typeString": "type(uint56)"
                                  }
                                ],
                                "id": 5391,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "13882:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13882:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint56",
                                "typeString": "type(uint56)"
                              }
                            },
                            "id": 5395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "13895:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "13882:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint56",
                              "typeString": "uint56"
                            }
                          },
                          "src": "13874:24:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5403,
                        "nodeType": "IfStatement",
                        "src": "13870:103:19",
                        "trueBody": {
                          "id": 5402,
                          "nodeType": "Block",
                          "src": "13900:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3536",
                                    "id": 5398,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13952:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_56_by_1",
                                      "typeString": "int_const 56"
                                    },
                                    "value": "56"
                                  },
                                  {
                                    "id": 5399,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5385,
                                    "src": "13956:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_56_by_1",
                                      "typeString": "int_const 56"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5397,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "13921:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5400,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13921:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5401,
                              "nodeType": "RevertStatement",
                              "src": "13914:48:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5406,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5385,
                              "src": "13996:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "13989:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint56_$",
                              "typeString": "type(uint56)"
                            },
                            "typeName": {
                              "id": 5404,
                              "name": "uint56",
                              "nodeType": "ElementaryTypeName",
                              "src": "13989:6:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13989:13:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint56",
                            "typeString": "uint56"
                          }
                        },
                        "functionReturnParameters": 5389,
                        "id": 5408,
                        "nodeType": "Return",
                        "src": "13982:20:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5383,
                    "nodeType": "StructuredDocumentation",
                    "src": "13515:276:19",
                    "text": " @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits"
                  },
                  "id": 5410,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint56",
                  "nameLocation": "13805:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5386,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5385,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "13822:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5410,
                        "src": "13814:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5384,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13814:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13813:15:19"
                  },
                  "returnParameters": {
                    "id": 5389,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5388,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5410,
                        "src": "13852:6:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint56",
                          "typeString": "uint56"
                        },
                        "typeName": {
                          "id": 5387,
                          "name": "uint56",
                          "nodeType": "ElementaryTypeName",
                          "src": "13852:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint56",
                            "typeString": "uint56"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13851:8:19"
                  },
                  "scope": 6448,
                  "src": "13796:213:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5437,
                    "nodeType": "Block",
                    "src": "14360:149:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5418,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5413,
                            "src": "14374:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5421,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14387:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint48_$",
                                    "typeString": "type(uint48)"
                                  },
                                  "typeName": {
                                    "id": 5420,
                                    "name": "uint48",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14387:6:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint48_$",
                                    "typeString": "type(uint48)"
                                  }
                                ],
                                "id": 5419,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "14382:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14382:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint48",
                                "typeString": "type(uint48)"
                              }
                            },
                            "id": 5423,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "14395:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "14382:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint48",
                              "typeString": "uint48"
                            }
                          },
                          "src": "14374:24:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5431,
                        "nodeType": "IfStatement",
                        "src": "14370:103:19",
                        "trueBody": {
                          "id": 5430,
                          "nodeType": "Block",
                          "src": "14400:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3438",
                                    "id": 5426,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14452:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_48_by_1",
                                      "typeString": "int_const 48"
                                    },
                                    "value": "48"
                                  },
                                  {
                                    "id": 5427,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5413,
                                    "src": "14456:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_48_by_1",
                                      "typeString": "int_const 48"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5425,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "14421:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5428,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14421:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5429,
                              "nodeType": "RevertStatement",
                              "src": "14414:48:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5434,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5413,
                              "src": "14496:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "14489:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint48_$",
                              "typeString": "type(uint48)"
                            },
                            "typeName": {
                              "id": 5432,
                              "name": "uint48",
                              "nodeType": "ElementaryTypeName",
                              "src": "14489:6:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14489:13:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint48",
                            "typeString": "uint48"
                          }
                        },
                        "functionReturnParameters": 5417,
                        "id": 5436,
                        "nodeType": "Return",
                        "src": "14482:20:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5411,
                    "nodeType": "StructuredDocumentation",
                    "src": "14015:276:19",
                    "text": " @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits"
                  },
                  "id": 5438,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint48",
                  "nameLocation": "14305:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5414,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5413,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "14322:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5438,
                        "src": "14314:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5412,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14314:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14313:15:19"
                  },
                  "returnParameters": {
                    "id": 5417,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5416,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5438,
                        "src": "14352:6:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint48",
                          "typeString": "uint48"
                        },
                        "typeName": {
                          "id": 5415,
                          "name": "uint48",
                          "nodeType": "ElementaryTypeName",
                          "src": "14352:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint48",
                            "typeString": "uint48"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14351:8:19"
                  },
                  "scope": 6448,
                  "src": "14296:213:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5465,
                    "nodeType": "Block",
                    "src": "14860:149:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5446,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5441,
                            "src": "14874:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5449,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14887:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint40_$",
                                    "typeString": "type(uint40)"
                                  },
                                  "typeName": {
                                    "id": 5448,
                                    "name": "uint40",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14887:6:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint40_$",
                                    "typeString": "type(uint40)"
                                  }
                                ],
                                "id": 5447,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "14882:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5450,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14882:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint40",
                                "typeString": "type(uint40)"
                              }
                            },
                            "id": 5451,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "14895:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "14882:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "src": "14874:24:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5459,
                        "nodeType": "IfStatement",
                        "src": "14870:103:19",
                        "trueBody": {
                          "id": 5458,
                          "nodeType": "Block",
                          "src": "14900:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3430",
                                    "id": 5454,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14952:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_40_by_1",
                                      "typeString": "int_const 40"
                                    },
                                    "value": "40"
                                  },
                                  {
                                    "id": 5455,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5441,
                                    "src": "14956:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_40_by_1",
                                      "typeString": "int_const 40"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5453,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "14921:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5456,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14921:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5457,
                              "nodeType": "RevertStatement",
                              "src": "14914:48:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5462,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5441,
                              "src": "14996:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "14989:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint40_$",
                              "typeString": "type(uint40)"
                            },
                            "typeName": {
                              "id": 5460,
                              "name": "uint40",
                              "nodeType": "ElementaryTypeName",
                              "src": "14989:6:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14989:13:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "functionReturnParameters": 5445,
                        "id": 5464,
                        "nodeType": "Return",
                        "src": "14982:20:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5439,
                    "nodeType": "StructuredDocumentation",
                    "src": "14515:276:19",
                    "text": " @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits"
                  },
                  "id": 5466,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint40",
                  "nameLocation": "14805:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5442,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5441,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "14822:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5466,
                        "src": "14814:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5440,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14814:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14813:15:19"
                  },
                  "returnParameters": {
                    "id": 5445,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5444,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5466,
                        "src": "14852:6:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 5443,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "14852:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14851:8:19"
                  },
                  "scope": 6448,
                  "src": "14796:213:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5493,
                    "nodeType": "Block",
                    "src": "15360:149:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5474,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5469,
                            "src": "15374:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5477,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15387:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint32_$",
                                    "typeString": "type(uint32)"
                                  },
                                  "typeName": {
                                    "id": 5476,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15387:6:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint32_$",
                                    "typeString": "type(uint32)"
                                  }
                                ],
                                "id": 5475,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "15382:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15382:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint32",
                                "typeString": "type(uint32)"
                              }
                            },
                            "id": 5479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "15395:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "15382:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "15374:24:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5487,
                        "nodeType": "IfStatement",
                        "src": "15370:103:19",
                        "trueBody": {
                          "id": 5486,
                          "nodeType": "Block",
                          "src": "15400:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3332",
                                    "id": 5482,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15452:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    },
                                    "value": "32"
                                  },
                                  {
                                    "id": 5483,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5469,
                                    "src": "15456:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5481,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "15421:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5484,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15421:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5485,
                              "nodeType": "RevertStatement",
                              "src": "15414:48:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5490,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5469,
                              "src": "15496:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5489,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "15489:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint32_$",
                              "typeString": "type(uint32)"
                            },
                            "typeName": {
                              "id": 5488,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "15489:6:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15489:13:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "functionReturnParameters": 5473,
                        "id": 5492,
                        "nodeType": "Return",
                        "src": "15482:20:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5467,
                    "nodeType": "StructuredDocumentation",
                    "src": "15015:276:19",
                    "text": " @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits"
                  },
                  "id": 5494,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint32",
                  "nameLocation": "15305:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5470,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5469,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "15322:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5494,
                        "src": "15314:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5468,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15314:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15313:15:19"
                  },
                  "returnParameters": {
                    "id": 5473,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5472,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5494,
                        "src": "15352:6:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 5471,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "15352:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15351:8:19"
                  },
                  "scope": 6448,
                  "src": "15296:213:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5521,
                    "nodeType": "Block",
                    "src": "15860:149:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5508,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5502,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5497,
                            "src": "15874:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5505,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15887:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint24_$",
                                    "typeString": "type(uint24)"
                                  },
                                  "typeName": {
                                    "id": 5504,
                                    "name": "uint24",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15887:6:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint24_$",
                                    "typeString": "type(uint24)"
                                  }
                                ],
                                "id": 5503,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "15882:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5506,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15882:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint24",
                                "typeString": "type(uint24)"
                              }
                            },
                            "id": 5507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "15895:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "15882:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "src": "15874:24:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5515,
                        "nodeType": "IfStatement",
                        "src": "15870:103:19",
                        "trueBody": {
                          "id": 5514,
                          "nodeType": "Block",
                          "src": "15900:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3234",
                                    "id": 5510,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15952:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_24_by_1",
                                      "typeString": "int_const 24"
                                    },
                                    "value": "24"
                                  },
                                  {
                                    "id": 5511,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5497,
                                    "src": "15956:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_24_by_1",
                                      "typeString": "int_const 24"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5509,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "15921:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5512,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15921:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5513,
                              "nodeType": "RevertStatement",
                              "src": "15914:48:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5518,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5497,
                              "src": "15996:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "15989:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint24_$",
                              "typeString": "type(uint24)"
                            },
                            "typeName": {
                              "id": 5516,
                              "name": "uint24",
                              "nodeType": "ElementaryTypeName",
                              "src": "15989:6:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5519,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15989:13:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "functionReturnParameters": 5501,
                        "id": 5520,
                        "nodeType": "Return",
                        "src": "15982:20:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5495,
                    "nodeType": "StructuredDocumentation",
                    "src": "15515:276:19",
                    "text": " @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits"
                  },
                  "id": 5522,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint24",
                  "nameLocation": "15805:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5498,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5497,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "15822:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5522,
                        "src": "15814:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5496,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15814:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15813:15:19"
                  },
                  "returnParameters": {
                    "id": 5501,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5500,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5522,
                        "src": "15852:6:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        "typeName": {
                          "id": 5499,
                          "name": "uint24",
                          "nodeType": "ElementaryTypeName",
                          "src": "15852:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15851:8:19"
                  },
                  "scope": 6448,
                  "src": "15796:213:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5549,
                    "nodeType": "Block",
                    "src": "16360:149:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5530,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5525,
                            "src": "16374:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5533,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "16387:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint16_$",
                                    "typeString": "type(uint16)"
                                  },
                                  "typeName": {
                                    "id": 5532,
                                    "name": "uint16",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16387:6:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint16_$",
                                    "typeString": "type(uint16)"
                                  }
                                ],
                                "id": 5531,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "16382:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16382:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint16",
                                "typeString": "type(uint16)"
                              }
                            },
                            "id": 5535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "16395:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "16382:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "16374:24:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5543,
                        "nodeType": "IfStatement",
                        "src": "16370:103:19",
                        "trueBody": {
                          "id": 5542,
                          "nodeType": "Block",
                          "src": "16400:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3136",
                                    "id": 5538,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16452:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_16_by_1",
                                      "typeString": "int_const 16"
                                    },
                                    "value": "16"
                                  },
                                  {
                                    "id": 5539,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5525,
                                    "src": "16456:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_16_by_1",
                                      "typeString": "int_const 16"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5537,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "16421:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5540,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16421:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5541,
                              "nodeType": "RevertStatement",
                              "src": "16414:48:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5546,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5525,
                              "src": "16496:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16489:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint16_$",
                              "typeString": "type(uint16)"
                            },
                            "typeName": {
                              "id": 5544,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "16489:6:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16489:13:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "functionReturnParameters": 5529,
                        "id": 5548,
                        "nodeType": "Return",
                        "src": "16482:20:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5523,
                    "nodeType": "StructuredDocumentation",
                    "src": "16015:276:19",
                    "text": " @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits"
                  },
                  "id": 5550,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint16",
                  "nameLocation": "16305:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5526,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5525,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "16322:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5550,
                        "src": "16314:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5524,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16314:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16313:15:19"
                  },
                  "returnParameters": {
                    "id": 5529,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5528,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5550,
                        "src": "16352:6:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 5527,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "16352:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16351:8:19"
                  },
                  "scope": 6448,
                  "src": "16296:213:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5577,
                    "nodeType": "Block",
                    "src": "16854:146:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5558,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5553,
                            "src": "16868:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5561,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "16881:5:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  },
                                  "typeName": {
                                    "id": 5560,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16881:5:19",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  }
                                ],
                                "id": 5559,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "16876:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5562,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16876:11:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint8",
                                "typeString": "type(uint8)"
                              }
                            },
                            "id": 5563,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "16888:3:19",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "16876:15:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "16868:23:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5571,
                        "nodeType": "IfStatement",
                        "src": "16864:101:19",
                        "trueBody": {
                          "id": 5570,
                          "nodeType": "Block",
                          "src": "16893:72:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "38",
                                    "id": 5566,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16945:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    "value": "8"
                                  },
                                  {
                                    "id": 5567,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5553,
                                    "src": "16948:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5565,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4693,
                                  "src": "16914:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 5568,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16914:40:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5569,
                              "nodeType": "RevertStatement",
                              "src": "16907:47:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5574,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5553,
                              "src": "16987:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16981:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint8_$",
                              "typeString": "type(uint8)"
                            },
                            "typeName": {
                              "id": 5572,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "16981:5:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16981:12:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 5557,
                        "id": 5576,
                        "nodeType": "Return",
                        "src": "16974:19:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5551,
                    "nodeType": "StructuredDocumentation",
                    "src": "16515:272:19",
                    "text": " @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits"
                  },
                  "id": 5578,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint8",
                  "nameLocation": "16801:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5554,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5553,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "16817:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5578,
                        "src": "16809:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5552,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16809:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16808:15:19"
                  },
                  "returnParameters": {
                    "id": 5557,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5556,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5578,
                        "src": "16847:5:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 5555,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "16847:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16846:7:19"
                  },
                  "scope": 6448,
                  "src": "16792:208:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5600,
                    "nodeType": "Block",
                    "src": "17236:128:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5586,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5581,
                            "src": "17250:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 5587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17258:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17250:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5594,
                        "nodeType": "IfStatement",
                        "src": "17246:81:19",
                        "trueBody": {
                          "id": 5593,
                          "nodeType": "Block",
                          "src": "17261:66:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 5590,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5581,
                                    "src": "17310:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5589,
                                  "name": "SafeCastOverflowedIntToUint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4698,
                                  "src": "17282:27:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (int256) pure returns (error)"
                                  }
                                },
                                "id": 5591,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17282:34:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5592,
                              "nodeType": "RevertStatement",
                              "src": "17275:41:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5597,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5581,
                              "src": "17351:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 5596,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "17343:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 5595,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17343:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5598,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17343:14:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 5585,
                        "id": 5599,
                        "nodeType": "Return",
                        "src": "17336:21:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5579,
                    "nodeType": "StructuredDocumentation",
                    "src": "17006:160:19",
                    "text": " @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."
                  },
                  "id": 5601,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint256",
                  "nameLocation": "17180:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5582,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5581,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "17197:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5601,
                        "src": "17190:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5580,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17190:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17189:14:19"
                  },
                  "returnParameters": {
                    "id": 5585,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5584,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5601,
                        "src": "17227:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5583,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17227:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17226:9:19"
                  },
                  "scope": 6448,
                  "src": "17171:193:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5626,
                    "nodeType": "Block",
                    "src": "17761:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 5614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5609,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5607,
                            "src": "17771:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int248",
                              "typeString": "int248"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5612,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5604,
                                "src": "17791:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 5611,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17784:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int248_$",
                                "typeString": "type(int248)"
                              },
                              "typeName": {
                                "id": 5610,
                                "name": "int248",
                                "nodeType": "ElementaryTypeName",
                                "src": "17784:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5613,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17784:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int248",
                              "typeString": "int248"
                            }
                          },
                          "src": "17771:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int248",
                            "typeString": "int248"
                          }
                        },
                        "id": 5615,
                        "nodeType": "ExpressionStatement",
                        "src": "17771:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5616,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5607,
                            "src": "17811:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int248",
                              "typeString": "int248"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5617,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5604,
                            "src": "17825:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "17811:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5625,
                        "nodeType": "IfStatement",
                        "src": "17807:98:19",
                        "trueBody": {
                          "id": 5624,
                          "nodeType": "Block",
                          "src": "17832:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323438",
                                    "id": 5620,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17883:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_248_by_1",
                                      "typeString": "int_const 248"
                                    },
                                    "value": "248"
                                  },
                                  {
                                    "id": 5621,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5604,
                                    "src": "17888:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_248_by_1",
                                      "typeString": "int_const 248"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5619,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "17853:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 5622,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17853:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5623,
                              "nodeType": "RevertStatement",
                              "src": "17846:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5602,
                    "nodeType": "StructuredDocumentation",
                    "src": "17370:312:19",
                    "text": " @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits"
                  },
                  "id": 5627,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt248",
                  "nameLocation": "17696:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5605,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5604,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "17712:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5627,
                        "src": "17705:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5603,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17705:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17704:14:19"
                  },
                  "returnParameters": {
                    "id": 5608,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5607,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "17749:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5627,
                        "src": "17742:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int248",
                          "typeString": "int248"
                        },
                        "typeName": {
                          "id": 5606,
                          "name": "int248",
                          "nodeType": "ElementaryTypeName",
                          "src": "17742:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int248",
                            "typeString": "int248"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17741:19:19"
                  },
                  "scope": 6448,
                  "src": "17687:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5652,
                    "nodeType": "Block",
                    "src": "18308:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 5640,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5635,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5633,
                            "src": "18318:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int240",
                              "typeString": "int240"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5638,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5630,
                                "src": "18338:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 5637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "18331:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int240_$",
                                "typeString": "type(int240)"
                              },
                              "typeName": {
                                "id": 5636,
                                "name": "int240",
                                "nodeType": "ElementaryTypeName",
                                "src": "18331:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5639,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18331:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int240",
                              "typeString": "int240"
                            }
                          },
                          "src": "18318:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int240",
                            "typeString": "int240"
                          }
                        },
                        "id": 5641,
                        "nodeType": "ExpressionStatement",
                        "src": "18318:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5642,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5633,
                            "src": "18358:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int240",
                              "typeString": "int240"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5643,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5630,
                            "src": "18372:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "18358:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5651,
                        "nodeType": "IfStatement",
                        "src": "18354:98:19",
                        "trueBody": {
                          "id": 5650,
                          "nodeType": "Block",
                          "src": "18379:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323430",
                                    "id": 5646,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18430:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_240_by_1",
                                      "typeString": "int_const 240"
                                    },
                                    "value": "240"
                                  },
                                  {
                                    "id": 5647,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5630,
                                    "src": "18435:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_240_by_1",
                                      "typeString": "int_const 240"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5645,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "18400:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 5648,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18400:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5649,
                              "nodeType": "RevertStatement",
                              "src": "18393:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5628,
                    "nodeType": "StructuredDocumentation",
                    "src": "17917:312:19",
                    "text": " @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits"
                  },
                  "id": 5653,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt240",
                  "nameLocation": "18243:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5631,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5630,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "18259:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5653,
                        "src": "18252:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5629,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18252:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18251:14:19"
                  },
                  "returnParameters": {
                    "id": 5634,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5633,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "18296:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5653,
                        "src": "18289:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int240",
                          "typeString": "int240"
                        },
                        "typeName": {
                          "id": 5632,
                          "name": "int240",
                          "nodeType": "ElementaryTypeName",
                          "src": "18289:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int240",
                            "typeString": "int240"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18288:19:19"
                  },
                  "scope": 6448,
                  "src": "18234:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5678,
                    "nodeType": "Block",
                    "src": "18855:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 5666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5661,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5659,
                            "src": "18865:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int232",
                              "typeString": "int232"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5664,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5656,
                                "src": "18885:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 5663,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "18878:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int232_$",
                                "typeString": "type(int232)"
                              },
                              "typeName": {
                                "id": 5662,
                                "name": "int232",
                                "nodeType": "ElementaryTypeName",
                                "src": "18878:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18878:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int232",
                              "typeString": "int232"
                            }
                          },
                          "src": "18865:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int232",
                            "typeString": "int232"
                          }
                        },
                        "id": 5667,
                        "nodeType": "ExpressionStatement",
                        "src": "18865:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5668,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5659,
                            "src": "18905:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int232",
                              "typeString": "int232"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5669,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5656,
                            "src": "18919:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "18905:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5677,
                        "nodeType": "IfStatement",
                        "src": "18901:98:19",
                        "trueBody": {
                          "id": 5676,
                          "nodeType": "Block",
                          "src": "18926:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323332",
                                    "id": 5672,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18977:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_232_by_1",
                                      "typeString": "int_const 232"
                                    },
                                    "value": "232"
                                  },
                                  {
                                    "id": 5673,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5656,
                                    "src": "18982:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_232_by_1",
                                      "typeString": "int_const 232"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5671,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "18947:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 5674,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18947:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5675,
                              "nodeType": "RevertStatement",
                              "src": "18940:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5654,
                    "nodeType": "StructuredDocumentation",
                    "src": "18464:312:19",
                    "text": " @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits"
                  },
                  "id": 5679,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt232",
                  "nameLocation": "18790:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5657,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5656,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "18806:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5679,
                        "src": "18799:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5655,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18799:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18798:14:19"
                  },
                  "returnParameters": {
                    "id": 5660,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5659,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "18843:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5679,
                        "src": "18836:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int232",
                          "typeString": "int232"
                        },
                        "typeName": {
                          "id": 5658,
                          "name": "int232",
                          "nodeType": "ElementaryTypeName",
                          "src": "18836:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int232",
                            "typeString": "int232"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18835:19:19"
                  },
                  "scope": 6448,
                  "src": "18781:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5704,
                    "nodeType": "Block",
                    "src": "19402:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 5692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5687,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5685,
                            "src": "19412:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int224",
                              "typeString": "int224"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5690,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5682,
                                "src": "19432:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 5689,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "19425:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int224_$",
                                "typeString": "type(int224)"
                              },
                              "typeName": {
                                "id": 5688,
                                "name": "int224",
                                "nodeType": "ElementaryTypeName",
                                "src": "19425:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5691,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19425:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int224",
                              "typeString": "int224"
                            }
                          },
                          "src": "19412:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int224",
                            "typeString": "int224"
                          }
                        },
                        "id": 5693,
                        "nodeType": "ExpressionStatement",
                        "src": "19412:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5694,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5685,
                            "src": "19452:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int224",
                              "typeString": "int224"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5695,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5682,
                            "src": "19466:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "19452:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5703,
                        "nodeType": "IfStatement",
                        "src": "19448:98:19",
                        "trueBody": {
                          "id": 5702,
                          "nodeType": "Block",
                          "src": "19473:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323234",
                                    "id": 5698,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "19524:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_224_by_1",
                                      "typeString": "int_const 224"
                                    },
                                    "value": "224"
                                  },
                                  {
                                    "id": 5699,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5682,
                                    "src": "19529:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_224_by_1",
                                      "typeString": "int_const 224"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5697,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "19494:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 5700,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19494:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5701,
                              "nodeType": "RevertStatement",
                              "src": "19487:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5680,
                    "nodeType": "StructuredDocumentation",
                    "src": "19011:312:19",
                    "text": " @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits"
                  },
                  "id": 5705,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt224",
                  "nameLocation": "19337:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5683,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5682,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "19353:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5705,
                        "src": "19346:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5681,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19346:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19345:14:19"
                  },
                  "returnParameters": {
                    "id": 5686,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5685,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "19390:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5705,
                        "src": "19383:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int224",
                          "typeString": "int224"
                        },
                        "typeName": {
                          "id": 5684,
                          "name": "int224",
                          "nodeType": "ElementaryTypeName",
                          "src": "19383:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int224",
                            "typeString": "int224"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19382:19:19"
                  },
                  "scope": 6448,
                  "src": "19328:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5730,
                    "nodeType": "Block",
                    "src": "19949:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 5718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5713,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5711,
                            "src": "19959:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int216",
                              "typeString": "int216"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5716,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5708,
                                "src": "19979:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 5715,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "19972:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int216_$",
                                "typeString": "type(int216)"
                              },
                              "typeName": {
                                "id": 5714,
                                "name": "int216",
                                "nodeType": "ElementaryTypeName",
                                "src": "19972:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19972:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int216",
                              "typeString": "int216"
                            }
                          },
                          "src": "19959:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int216",
                            "typeString": "int216"
                          }
                        },
                        "id": 5719,
                        "nodeType": "ExpressionStatement",
                        "src": "19959:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5720,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5711,
                            "src": "19999:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int216",
                              "typeString": "int216"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5721,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5708,
                            "src": "20013:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "19999:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5729,
                        "nodeType": "IfStatement",
                        "src": "19995:98:19",
                        "trueBody": {
                          "id": 5728,
                          "nodeType": "Block",
                          "src": "20020:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323136",
                                    "id": 5724,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20071:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_216_by_1",
                                      "typeString": "int_const 216"
                                    },
                                    "value": "216"
                                  },
                                  {
                                    "id": 5725,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5708,
                                    "src": "20076:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_216_by_1",
                                      "typeString": "int_const 216"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5723,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "20041:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 5726,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20041:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5727,
                              "nodeType": "RevertStatement",
                              "src": "20034:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5706,
                    "nodeType": "StructuredDocumentation",
                    "src": "19558:312:19",
                    "text": " @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits"
                  },
                  "id": 5731,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt216",
                  "nameLocation": "19884:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5709,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5708,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "19900:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5731,
                        "src": "19893:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5707,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19893:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19892:14:19"
                  },
                  "returnParameters": {
                    "id": 5712,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5711,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "19937:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5731,
                        "src": "19930:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int216",
                          "typeString": "int216"
                        },
                        "typeName": {
                          "id": 5710,
                          "name": "int216",
                          "nodeType": "ElementaryTypeName",
                          "src": "19930:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int216",
                            "typeString": "int216"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19929:19:19"
                  },
                  "scope": 6448,
                  "src": "19875:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5756,
                    "nodeType": "Block",
                    "src": "20496:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 5744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5739,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5737,
                            "src": "20506:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int208",
                              "typeString": "int208"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5742,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5734,
                                "src": "20526:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 5741,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "20519:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int208_$",
                                "typeString": "type(int208)"
                              },
                              "typeName": {
                                "id": 5740,
                                "name": "int208",
                                "nodeType": "ElementaryTypeName",
                                "src": "20519:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20519:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int208",
                              "typeString": "int208"
                            }
                          },
                          "src": "20506:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int208",
                            "typeString": "int208"
                          }
                        },
                        "id": 5745,
                        "nodeType": "ExpressionStatement",
                        "src": "20506:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5746,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5737,
                            "src": "20546:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int208",
                              "typeString": "int208"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5747,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5734,
                            "src": "20560:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "20546:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5755,
                        "nodeType": "IfStatement",
                        "src": "20542:98:19",
                        "trueBody": {
                          "id": 5754,
                          "nodeType": "Block",
                          "src": "20567:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323038",
                                    "id": 5750,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20618:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_208_by_1",
                                      "typeString": "int_const 208"
                                    },
                                    "value": "208"
                                  },
                                  {
                                    "id": 5751,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5734,
                                    "src": "20623:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_208_by_1",
                                      "typeString": "int_const 208"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5749,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "20588:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 5752,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20588:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5753,
                              "nodeType": "RevertStatement",
                              "src": "20581:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5732,
                    "nodeType": "StructuredDocumentation",
                    "src": "20105:312:19",
                    "text": " @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits"
                  },
                  "id": 5757,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt208",
                  "nameLocation": "20431:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5735,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5734,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "20447:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5757,
                        "src": "20440:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5733,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20440:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20439:14:19"
                  },
                  "returnParameters": {
                    "id": 5738,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5737,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "20484:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5757,
                        "src": "20477:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int208",
                          "typeString": "int208"
                        },
                        "typeName": {
                          "id": 5736,
                          "name": "int208",
                          "nodeType": "ElementaryTypeName",
                          "src": "20477:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int208",
                            "typeString": "int208"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20476:19:19"
                  },
                  "scope": 6448,
                  "src": "20422:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5782,
                    "nodeType": "Block",
                    "src": "21043:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 5770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5765,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5763,
                            "src": "21053:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int200",
                              "typeString": "int200"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5768,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5760,
                                "src": "21073:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 5767,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "21066:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int200_$",
                                "typeString": "type(int200)"
                              },
                              "typeName": {
                                "id": 5766,
                                "name": "int200",
                                "nodeType": "ElementaryTypeName",
                                "src": "21066:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5769,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21066:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int200",
                              "typeString": "int200"
                            }
                          },
                          "src": "21053:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int200",
                            "typeString": "int200"
                          }
                        },
                        "id": 5771,
                        "nodeType": "ExpressionStatement",
                        "src": "21053:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5772,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5763,
                            "src": "21093:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int200",
                              "typeString": "int200"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5773,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5760,
                            "src": "21107:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "21093:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5781,
                        "nodeType": "IfStatement",
                        "src": "21089:98:19",
                        "trueBody": {
                          "id": 5780,
                          "nodeType": "Block",
                          "src": "21114:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323030",
                                    "id": 5776,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "21165:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_200_by_1",
                                      "typeString": "int_const 200"
                                    },
                                    "value": "200"
                                  },
                                  {
                                    "id": 5777,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5760,
                                    "src": "21170:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_200_by_1",
                                      "typeString": "int_const 200"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5775,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "21135:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 5778,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21135:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5779,
                              "nodeType": "RevertStatement",
                              "src": "21128:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5758,
                    "nodeType": "StructuredDocumentation",
                    "src": "20652:312:19",
                    "text": " @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits"
                  },
                  "id": 5783,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt200",
                  "nameLocation": "20978:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5761,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5760,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "20994:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5783,
                        "src": "20987:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5759,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20987:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20986:14:19"
                  },
                  "returnParameters": {
                    "id": 5764,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5763,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "21031:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5783,
                        "src": "21024:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int200",
                          "typeString": "int200"
                        },
                        "typeName": {
                          "id": 5762,
                          "name": "int200",
                          "nodeType": "ElementaryTypeName",
                          "src": "21024:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int200",
                            "typeString": "int200"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21023:19:19"
                  },
                  "scope": 6448,
                  "src": "20969:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5808,
                    "nodeType": "Block",
                    "src": "21590:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 5796,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5791,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5789,
                            "src": "21600:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int192",
                              "typeString": "int192"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5794,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5786,
                                "src": "21620:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 5793,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "21613:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int192_$",
                                "typeString": "type(int192)"
                              },
                              "typeName": {
                                "id": 5792,
                                "name": "int192",
                                "nodeType": "ElementaryTypeName",
                                "src": "21613:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21613:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int192",
                              "typeString": "int192"
                            }
                          },
                          "src": "21600:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int192",
                            "typeString": "int192"
                          }
                        },
                        "id": 5797,
                        "nodeType": "ExpressionStatement",
                        "src": "21600:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5798,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5789,
                            "src": "21640:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int192",
                              "typeString": "int192"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5799,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5786,
                            "src": "21654:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "21640:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5807,
                        "nodeType": "IfStatement",
                        "src": "21636:98:19",
                        "trueBody": {
                          "id": 5806,
                          "nodeType": "Block",
                          "src": "21661:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313932",
                                    "id": 5802,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "21712:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_192_by_1",
                                      "typeString": "int_const 192"
                                    },
                                    "value": "192"
                                  },
                                  {
                                    "id": 5803,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5786,
                                    "src": "21717:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_192_by_1",
                                      "typeString": "int_const 192"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5801,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "21682:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 5804,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21682:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5805,
                              "nodeType": "RevertStatement",
                              "src": "21675:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5784,
                    "nodeType": "StructuredDocumentation",
                    "src": "21199:312:19",
                    "text": " @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits"
                  },
                  "id": 5809,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt192",
                  "nameLocation": "21525:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5787,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5786,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "21541:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5809,
                        "src": "21534:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5785,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21534:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21533:14:19"
                  },
                  "returnParameters": {
                    "id": 5790,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5789,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "21578:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5809,
                        "src": "21571:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int192",
                          "typeString": "int192"
                        },
                        "typeName": {
                          "id": 5788,
                          "name": "int192",
                          "nodeType": "ElementaryTypeName",
                          "src": "21571:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int192",
                            "typeString": "int192"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21570:19:19"
                  },
                  "scope": 6448,
                  "src": "21516:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5834,
                    "nodeType": "Block",
                    "src": "22137:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 5822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5817,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5815,
                            "src": "22147:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int184",
                              "typeString": "int184"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5820,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5812,
                                "src": "22167:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 5819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "22160:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int184_$",
                                "typeString": "type(int184)"
                              },
                              "typeName": {
                                "id": 5818,
                                "name": "int184",
                                "nodeType": "ElementaryTypeName",
                                "src": "22160:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5821,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22160:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int184",
                              "typeString": "int184"
                            }
                          },
                          "src": "22147:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int184",
                            "typeString": "int184"
                          }
                        },
                        "id": 5823,
                        "nodeType": "ExpressionStatement",
                        "src": "22147:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5826,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5824,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5815,
                            "src": "22187:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int184",
                              "typeString": "int184"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5825,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5812,
                            "src": "22201:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "22187:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5833,
                        "nodeType": "IfStatement",
                        "src": "22183:98:19",
                        "trueBody": {
                          "id": 5832,
                          "nodeType": "Block",
                          "src": "22208:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313834",
                                    "id": 5828,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "22259:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_184_by_1",
                                      "typeString": "int_const 184"
                                    },
                                    "value": "184"
                                  },
                                  {
                                    "id": 5829,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5812,
                                    "src": "22264:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_184_by_1",
                                      "typeString": "int_const 184"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5827,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "22229:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 5830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22229:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5831,
                              "nodeType": "RevertStatement",
                              "src": "22222:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5810,
                    "nodeType": "StructuredDocumentation",
                    "src": "21746:312:19",
                    "text": " @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits"
                  },
                  "id": 5835,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt184",
                  "nameLocation": "22072:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5813,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5812,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "22088:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5835,
                        "src": "22081:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5811,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22081:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22080:14:19"
                  },
                  "returnParameters": {
                    "id": 5816,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5815,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "22125:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5835,
                        "src": "22118:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int184",
                          "typeString": "int184"
                        },
                        "typeName": {
                          "id": 5814,
                          "name": "int184",
                          "nodeType": "ElementaryTypeName",
                          "src": "22118:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int184",
                            "typeString": "int184"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22117:19:19"
                  },
                  "scope": 6448,
                  "src": "22063:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5860,
                    "nodeType": "Block",
                    "src": "22684:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 5848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5843,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5841,
                            "src": "22694:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int176",
                              "typeString": "int176"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5846,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5838,
                                "src": "22714:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 5845,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "22707:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int176_$",
                                "typeString": "type(int176)"
                              },
                              "typeName": {
                                "id": 5844,
                                "name": "int176",
                                "nodeType": "ElementaryTypeName",
                                "src": "22707:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5847,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22707:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int176",
                              "typeString": "int176"
                            }
                          },
                          "src": "22694:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int176",
                            "typeString": "int176"
                          }
                        },
                        "id": 5849,
                        "nodeType": "ExpressionStatement",
                        "src": "22694:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5852,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5850,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5841,
                            "src": "22734:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int176",
                              "typeString": "int176"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5851,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5838,
                            "src": "22748:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "22734:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5859,
                        "nodeType": "IfStatement",
                        "src": "22730:98:19",
                        "trueBody": {
                          "id": 5858,
                          "nodeType": "Block",
                          "src": "22755:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313736",
                                    "id": 5854,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "22806:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_176_by_1",
                                      "typeString": "int_const 176"
                                    },
                                    "value": "176"
                                  },
                                  {
                                    "id": 5855,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5838,
                                    "src": "22811:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_176_by_1",
                                      "typeString": "int_const 176"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5853,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "22776:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 5856,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22776:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5857,
                              "nodeType": "RevertStatement",
                              "src": "22769:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5836,
                    "nodeType": "StructuredDocumentation",
                    "src": "22293:312:19",
                    "text": " @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits"
                  },
                  "id": 5861,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt176",
                  "nameLocation": "22619:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5839,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5838,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "22635:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5861,
                        "src": "22628:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5837,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22628:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22627:14:19"
                  },
                  "returnParameters": {
                    "id": 5842,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5841,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "22672:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5861,
                        "src": "22665:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int176",
                          "typeString": "int176"
                        },
                        "typeName": {
                          "id": 5840,
                          "name": "int176",
                          "nodeType": "ElementaryTypeName",
                          "src": "22665:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int176",
                            "typeString": "int176"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22664:19:19"
                  },
                  "scope": 6448,
                  "src": "22610:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5886,
                    "nodeType": "Block",
                    "src": "23231:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 5874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5869,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5867,
                            "src": "23241:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int168",
                              "typeString": "int168"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5872,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5864,
                                "src": "23261:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 5871,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "23254:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int168_$",
                                "typeString": "type(int168)"
                              },
                              "typeName": {
                                "id": 5870,
                                "name": "int168",
                                "nodeType": "ElementaryTypeName",
                                "src": "23254:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5873,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23254:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int168",
                              "typeString": "int168"
                            }
                          },
                          "src": "23241:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int168",
                            "typeString": "int168"
                          }
                        },
                        "id": 5875,
                        "nodeType": "ExpressionStatement",
                        "src": "23241:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5876,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5867,
                            "src": "23281:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int168",
                              "typeString": "int168"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5877,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5864,
                            "src": "23295:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "23281:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5885,
                        "nodeType": "IfStatement",
                        "src": "23277:98:19",
                        "trueBody": {
                          "id": 5884,
                          "nodeType": "Block",
                          "src": "23302:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313638",
                                    "id": 5880,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23353:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_168_by_1",
                                      "typeString": "int_const 168"
                                    },
                                    "value": "168"
                                  },
                                  {
                                    "id": 5881,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5864,
                                    "src": "23358:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_168_by_1",
                                      "typeString": "int_const 168"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5879,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "23323:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 5882,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23323:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5883,
                              "nodeType": "RevertStatement",
                              "src": "23316:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5862,
                    "nodeType": "StructuredDocumentation",
                    "src": "22840:312:19",
                    "text": " @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits"
                  },
                  "id": 5887,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt168",
                  "nameLocation": "23166:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5865,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5864,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "23182:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5887,
                        "src": "23175:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5863,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23175:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23174:14:19"
                  },
                  "returnParameters": {
                    "id": 5868,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5867,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "23219:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5887,
                        "src": "23212:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int168",
                          "typeString": "int168"
                        },
                        "typeName": {
                          "id": 5866,
                          "name": "int168",
                          "nodeType": "ElementaryTypeName",
                          "src": "23212:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int168",
                            "typeString": "int168"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23211:19:19"
                  },
                  "scope": 6448,
                  "src": "23157:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5912,
                    "nodeType": "Block",
                    "src": "23778:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 5900,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5895,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5893,
                            "src": "23788:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int160",
                              "typeString": "int160"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5898,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5890,
                                "src": "23808:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 5897,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "23801:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int160_$",
                                "typeString": "type(int160)"
                              },
                              "typeName": {
                                "id": 5896,
                                "name": "int160",
                                "nodeType": "ElementaryTypeName",
                                "src": "23801:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5899,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23801:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int160",
                              "typeString": "int160"
                            }
                          },
                          "src": "23788:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int160",
                            "typeString": "int160"
                          }
                        },
                        "id": 5901,
                        "nodeType": "ExpressionStatement",
                        "src": "23788:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5902,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5893,
                            "src": "23828:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int160",
                              "typeString": "int160"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5903,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5890,
                            "src": "23842:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "23828:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5911,
                        "nodeType": "IfStatement",
                        "src": "23824:98:19",
                        "trueBody": {
                          "id": 5910,
                          "nodeType": "Block",
                          "src": "23849:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313630",
                                    "id": 5906,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23900:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_160_by_1",
                                      "typeString": "int_const 160"
                                    },
                                    "value": "160"
                                  },
                                  {
                                    "id": 5907,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5890,
                                    "src": "23905:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_160_by_1",
                                      "typeString": "int_const 160"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5905,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "23870:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 5908,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23870:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5909,
                              "nodeType": "RevertStatement",
                              "src": "23863:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5888,
                    "nodeType": "StructuredDocumentation",
                    "src": "23387:312:19",
                    "text": " @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits"
                  },
                  "id": 5913,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt160",
                  "nameLocation": "23713:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5891,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5890,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "23729:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5913,
                        "src": "23722:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5889,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23722:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23721:14:19"
                  },
                  "returnParameters": {
                    "id": 5894,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5893,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "23766:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5913,
                        "src": "23759:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int160",
                          "typeString": "int160"
                        },
                        "typeName": {
                          "id": 5892,
                          "name": "int160",
                          "nodeType": "ElementaryTypeName",
                          "src": "23759:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int160",
                            "typeString": "int160"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23758:19:19"
                  },
                  "scope": 6448,
                  "src": "23704:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5938,
                    "nodeType": "Block",
                    "src": "24325:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 5926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5921,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5919,
                            "src": "24335:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int152",
                              "typeString": "int152"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5924,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5916,
                                "src": "24355:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 5923,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "24348:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int152_$",
                                "typeString": "type(int152)"
                              },
                              "typeName": {
                                "id": 5922,
                                "name": "int152",
                                "nodeType": "ElementaryTypeName",
                                "src": "24348:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5925,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24348:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int152",
                              "typeString": "int152"
                            }
                          },
                          "src": "24335:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int152",
                            "typeString": "int152"
                          }
                        },
                        "id": 5927,
                        "nodeType": "ExpressionStatement",
                        "src": "24335:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5928,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5919,
                            "src": "24375:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int152",
                              "typeString": "int152"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5929,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5916,
                            "src": "24389:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "24375:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5937,
                        "nodeType": "IfStatement",
                        "src": "24371:98:19",
                        "trueBody": {
                          "id": 5936,
                          "nodeType": "Block",
                          "src": "24396:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313532",
                                    "id": 5932,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24447:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_152_by_1",
                                      "typeString": "int_const 152"
                                    },
                                    "value": "152"
                                  },
                                  {
                                    "id": 5933,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5916,
                                    "src": "24452:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_152_by_1",
                                      "typeString": "int_const 152"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5931,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "24417:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 5934,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24417:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5935,
                              "nodeType": "RevertStatement",
                              "src": "24410:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5914,
                    "nodeType": "StructuredDocumentation",
                    "src": "23934:312:19",
                    "text": " @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits"
                  },
                  "id": 5939,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt152",
                  "nameLocation": "24260:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5917,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5916,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "24276:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5939,
                        "src": "24269:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5915,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24269:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24268:14:19"
                  },
                  "returnParameters": {
                    "id": 5920,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5919,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "24313:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5939,
                        "src": "24306:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int152",
                          "typeString": "int152"
                        },
                        "typeName": {
                          "id": 5918,
                          "name": "int152",
                          "nodeType": "ElementaryTypeName",
                          "src": "24306:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int152",
                            "typeString": "int152"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24305:19:19"
                  },
                  "scope": 6448,
                  "src": "24251:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5964,
                    "nodeType": "Block",
                    "src": "24872:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 5952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5947,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5945,
                            "src": "24882:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int144",
                              "typeString": "int144"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5950,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5942,
                                "src": "24902:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 5949,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "24895:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int144_$",
                                "typeString": "type(int144)"
                              },
                              "typeName": {
                                "id": 5948,
                                "name": "int144",
                                "nodeType": "ElementaryTypeName",
                                "src": "24895:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5951,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24895:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int144",
                              "typeString": "int144"
                            }
                          },
                          "src": "24882:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int144",
                            "typeString": "int144"
                          }
                        },
                        "id": 5953,
                        "nodeType": "ExpressionStatement",
                        "src": "24882:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5954,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5945,
                            "src": "24922:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int144",
                              "typeString": "int144"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5955,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5942,
                            "src": "24936:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "24922:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5963,
                        "nodeType": "IfStatement",
                        "src": "24918:98:19",
                        "trueBody": {
                          "id": 5962,
                          "nodeType": "Block",
                          "src": "24943:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313434",
                                    "id": 5958,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24994:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_144_by_1",
                                      "typeString": "int_const 144"
                                    },
                                    "value": "144"
                                  },
                                  {
                                    "id": 5959,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5942,
                                    "src": "24999:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_144_by_1",
                                      "typeString": "int_const 144"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5957,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "24964:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 5960,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24964:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5961,
                              "nodeType": "RevertStatement",
                              "src": "24957:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5940,
                    "nodeType": "StructuredDocumentation",
                    "src": "24481:312:19",
                    "text": " @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits"
                  },
                  "id": 5965,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt144",
                  "nameLocation": "24807:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5943,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5942,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "24823:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5965,
                        "src": "24816:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5941,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24816:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24815:14:19"
                  },
                  "returnParameters": {
                    "id": 5946,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5945,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "24860:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5965,
                        "src": "24853:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int144",
                          "typeString": "int144"
                        },
                        "typeName": {
                          "id": 5944,
                          "name": "int144",
                          "nodeType": "ElementaryTypeName",
                          "src": "24853:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int144",
                            "typeString": "int144"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24852:19:19"
                  },
                  "scope": 6448,
                  "src": "24798:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5990,
                    "nodeType": "Block",
                    "src": "25419:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 5978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5973,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5971,
                            "src": "25429:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int136",
                              "typeString": "int136"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5976,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5968,
                                "src": "25449:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 5975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "25442:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int136_$",
                                "typeString": "type(int136)"
                              },
                              "typeName": {
                                "id": 5974,
                                "name": "int136",
                                "nodeType": "ElementaryTypeName",
                                "src": "25442:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5977,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25442:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int136",
                              "typeString": "int136"
                            }
                          },
                          "src": "25429:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int136",
                            "typeString": "int136"
                          }
                        },
                        "id": 5979,
                        "nodeType": "ExpressionStatement",
                        "src": "25429:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5980,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5971,
                            "src": "25469:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int136",
                              "typeString": "int136"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5981,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5968,
                            "src": "25483:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "25469:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5989,
                        "nodeType": "IfStatement",
                        "src": "25465:98:19",
                        "trueBody": {
                          "id": 5988,
                          "nodeType": "Block",
                          "src": "25490:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313336",
                                    "id": 5984,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "25541:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_136_by_1",
                                      "typeString": "int_const 136"
                                    },
                                    "value": "136"
                                  },
                                  {
                                    "id": 5985,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5968,
                                    "src": "25546:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_136_by_1",
                                      "typeString": "int_const 136"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5983,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "25511:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 5986,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25511:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5987,
                              "nodeType": "RevertStatement",
                              "src": "25504:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5966,
                    "nodeType": "StructuredDocumentation",
                    "src": "25028:312:19",
                    "text": " @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits"
                  },
                  "id": 5991,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt136",
                  "nameLocation": "25354:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5969,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5968,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "25370:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5991,
                        "src": "25363:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5967,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25363:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25362:14:19"
                  },
                  "returnParameters": {
                    "id": 5972,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5971,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "25407:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5991,
                        "src": "25400:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int136",
                          "typeString": "int136"
                        },
                        "typeName": {
                          "id": 5970,
                          "name": "int136",
                          "nodeType": "ElementaryTypeName",
                          "src": "25400:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int136",
                            "typeString": "int136"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25399:19:19"
                  },
                  "scope": 6448,
                  "src": "25345:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6016,
                    "nodeType": "Block",
                    "src": "25966:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5999,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5997,
                            "src": "25976:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6002,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5994,
                                "src": "25996:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6001,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "25989:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int128_$",
                                "typeString": "type(int128)"
                              },
                              "typeName": {
                                "id": 6000,
                                "name": "int128",
                                "nodeType": "ElementaryTypeName",
                                "src": "25989:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6003,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25989:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          },
                          "src": "25976:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        "id": 6005,
                        "nodeType": "ExpressionStatement",
                        "src": "25976:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6008,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6006,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5997,
                            "src": "26016:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6007,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5994,
                            "src": "26030:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "26016:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6015,
                        "nodeType": "IfStatement",
                        "src": "26012:98:19",
                        "trueBody": {
                          "id": 6014,
                          "nodeType": "Block",
                          "src": "26037:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313238",
                                    "id": 6010,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26088:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  {
                                    "id": 6011,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5994,
                                    "src": "26093:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6009,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "26058:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6012,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26058:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6013,
                              "nodeType": "RevertStatement",
                              "src": "26051:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5992,
                    "nodeType": "StructuredDocumentation",
                    "src": "25575:312:19",
                    "text": " @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits"
                  },
                  "id": 6017,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt128",
                  "nameLocation": "25901:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5995,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5994,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "25917:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6017,
                        "src": "25910:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5993,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25910:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25909:14:19"
                  },
                  "returnParameters": {
                    "id": 5998,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5997,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "25954:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6017,
                        "src": "25947:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        },
                        "typeName": {
                          "id": 5996,
                          "name": "int128",
                          "nodeType": "ElementaryTypeName",
                          "src": "25947:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25946:19:19"
                  },
                  "scope": 6448,
                  "src": "25892:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6042,
                    "nodeType": "Block",
                    "src": "26513:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6025,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6023,
                            "src": "26523:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int120",
                              "typeString": "int120"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6028,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6020,
                                "src": "26543:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6027,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "26536:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int120_$",
                                "typeString": "type(int120)"
                              },
                              "typeName": {
                                "id": 6026,
                                "name": "int120",
                                "nodeType": "ElementaryTypeName",
                                "src": "26536:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6029,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26536:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int120",
                              "typeString": "int120"
                            }
                          },
                          "src": "26523:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int120",
                            "typeString": "int120"
                          }
                        },
                        "id": 6031,
                        "nodeType": "ExpressionStatement",
                        "src": "26523:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6032,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6023,
                            "src": "26563:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int120",
                              "typeString": "int120"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6033,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6020,
                            "src": "26577:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "26563:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6041,
                        "nodeType": "IfStatement",
                        "src": "26559:98:19",
                        "trueBody": {
                          "id": 6040,
                          "nodeType": "Block",
                          "src": "26584:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313230",
                                    "id": 6036,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26635:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_120_by_1",
                                      "typeString": "int_const 120"
                                    },
                                    "value": "120"
                                  },
                                  {
                                    "id": 6037,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6020,
                                    "src": "26640:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_120_by_1",
                                      "typeString": "int_const 120"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6035,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "26605:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6038,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26605:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6039,
                              "nodeType": "RevertStatement",
                              "src": "26598:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6018,
                    "nodeType": "StructuredDocumentation",
                    "src": "26122:312:19",
                    "text": " @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits"
                  },
                  "id": 6043,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt120",
                  "nameLocation": "26448:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6021,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6020,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "26464:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6043,
                        "src": "26457:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6019,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26457:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26456:14:19"
                  },
                  "returnParameters": {
                    "id": 6024,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6023,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "26501:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6043,
                        "src": "26494:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int120",
                          "typeString": "int120"
                        },
                        "typeName": {
                          "id": 6022,
                          "name": "int120",
                          "nodeType": "ElementaryTypeName",
                          "src": "26494:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int120",
                            "typeString": "int120"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26493:19:19"
                  },
                  "scope": 6448,
                  "src": "26439:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6068,
                    "nodeType": "Block",
                    "src": "27060:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6051,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6049,
                            "src": "27070:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int112",
                              "typeString": "int112"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6054,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6046,
                                "src": "27090:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27083:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int112_$",
                                "typeString": "type(int112)"
                              },
                              "typeName": {
                                "id": 6052,
                                "name": "int112",
                                "nodeType": "ElementaryTypeName",
                                "src": "27083:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6055,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27083:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int112",
                              "typeString": "int112"
                            }
                          },
                          "src": "27070:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int112",
                            "typeString": "int112"
                          }
                        },
                        "id": 6057,
                        "nodeType": "ExpressionStatement",
                        "src": "27070:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6058,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6049,
                            "src": "27110:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int112",
                              "typeString": "int112"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6059,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6046,
                            "src": "27124:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "27110:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6067,
                        "nodeType": "IfStatement",
                        "src": "27106:98:19",
                        "trueBody": {
                          "id": 6066,
                          "nodeType": "Block",
                          "src": "27131:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313132",
                                    "id": 6062,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27182:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_112_by_1",
                                      "typeString": "int_const 112"
                                    },
                                    "value": "112"
                                  },
                                  {
                                    "id": 6063,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6046,
                                    "src": "27187:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_112_by_1",
                                      "typeString": "int_const 112"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6061,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "27152:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6064,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "27152:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6065,
                              "nodeType": "RevertStatement",
                              "src": "27145:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6044,
                    "nodeType": "StructuredDocumentation",
                    "src": "26669:312:19",
                    "text": " @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits"
                  },
                  "id": 6069,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt112",
                  "nameLocation": "26995:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6047,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6046,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "27011:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6069,
                        "src": "27004:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6045,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27004:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27003:14:19"
                  },
                  "returnParameters": {
                    "id": 6050,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6049,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "27048:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6069,
                        "src": "27041:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int112",
                          "typeString": "int112"
                        },
                        "typeName": {
                          "id": 6048,
                          "name": "int112",
                          "nodeType": "ElementaryTypeName",
                          "src": "27041:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int112",
                            "typeString": "int112"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27040:19:19"
                  },
                  "scope": 6448,
                  "src": "26986:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6094,
                    "nodeType": "Block",
                    "src": "27607:150:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6077,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6075,
                            "src": "27617:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int104",
                              "typeString": "int104"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6080,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6072,
                                "src": "27637:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6079,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27630:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int104_$",
                                "typeString": "type(int104)"
                              },
                              "typeName": {
                                "id": 6078,
                                "name": "int104",
                                "nodeType": "ElementaryTypeName",
                                "src": "27630:6:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6081,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27630:13:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int104",
                              "typeString": "int104"
                            }
                          },
                          "src": "27617:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int104",
                            "typeString": "int104"
                          }
                        },
                        "id": 6083,
                        "nodeType": "ExpressionStatement",
                        "src": "27617:26:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6084,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6075,
                            "src": "27657:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int104",
                              "typeString": "int104"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6085,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6072,
                            "src": "27671:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "27657:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6093,
                        "nodeType": "IfStatement",
                        "src": "27653:98:19",
                        "trueBody": {
                          "id": 6092,
                          "nodeType": "Block",
                          "src": "27678:73:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313034",
                                    "id": 6088,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27729:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_104_by_1",
                                      "typeString": "int_const 104"
                                    },
                                    "value": "104"
                                  },
                                  {
                                    "id": 6089,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6072,
                                    "src": "27734:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_104_by_1",
                                      "typeString": "int_const 104"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6087,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "27699:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "27699:41:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6091,
                              "nodeType": "RevertStatement",
                              "src": "27692:48:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6070,
                    "nodeType": "StructuredDocumentation",
                    "src": "27216:312:19",
                    "text": " @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits"
                  },
                  "id": 6095,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt104",
                  "nameLocation": "27542:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6073,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6072,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "27558:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6095,
                        "src": "27551:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6071,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27551:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27550:14:19"
                  },
                  "returnParameters": {
                    "id": 6076,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6075,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "27595:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6095,
                        "src": "27588:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int104",
                          "typeString": "int104"
                        },
                        "typeName": {
                          "id": 6074,
                          "name": "int104",
                          "nodeType": "ElementaryTypeName",
                          "src": "27588:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int104",
                            "typeString": "int104"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27587:19:19"
                  },
                  "scope": 6448,
                  "src": "27533:224:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6120,
                    "nodeType": "Block",
                    "src": "28147:148:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6103,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6101,
                            "src": "28157:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int96",
                              "typeString": "int96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6106,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6098,
                                "src": "28176:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6105,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "28170:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int96_$",
                                "typeString": "type(int96)"
                              },
                              "typeName": {
                                "id": 6104,
                                "name": "int96",
                                "nodeType": "ElementaryTypeName",
                                "src": "28170:5:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6107,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "28170:12:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int96",
                              "typeString": "int96"
                            }
                          },
                          "src": "28157:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int96",
                            "typeString": "int96"
                          }
                        },
                        "id": 6109,
                        "nodeType": "ExpressionStatement",
                        "src": "28157:25:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6110,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6101,
                            "src": "28196:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int96",
                              "typeString": "int96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6111,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6098,
                            "src": "28210:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "28196:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6119,
                        "nodeType": "IfStatement",
                        "src": "28192:97:19",
                        "trueBody": {
                          "id": 6118,
                          "nodeType": "Block",
                          "src": "28217:72:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3936",
                                    "id": 6114,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "28268:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_96_by_1",
                                      "typeString": "int_const 96"
                                    },
                                    "value": "96"
                                  },
                                  {
                                    "id": 6115,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6098,
                                    "src": "28272:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_96_by_1",
                                      "typeString": "int_const 96"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6113,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "28238:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6116,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28238:40:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6117,
                              "nodeType": "RevertStatement",
                              "src": "28231:47:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6096,
                    "nodeType": "StructuredDocumentation",
                    "src": "27763:307:19",
                    "text": " @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits"
                  },
                  "id": 6121,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt96",
                  "nameLocation": "28084:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6099,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6098,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "28099:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6121,
                        "src": "28092:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6097,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28092:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28091:14:19"
                  },
                  "returnParameters": {
                    "id": 6102,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6101,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "28135:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6121,
                        "src": "28129:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int96",
                          "typeString": "int96"
                        },
                        "typeName": {
                          "id": 6100,
                          "name": "int96",
                          "nodeType": "ElementaryTypeName",
                          "src": "28129:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int96",
                            "typeString": "int96"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28128:18:19"
                  },
                  "scope": 6448,
                  "src": "28075:220:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6146,
                    "nodeType": "Block",
                    "src": "28685:148:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6129,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6127,
                            "src": "28695:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int88",
                              "typeString": "int88"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6132,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6124,
                                "src": "28714:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "28708:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int88_$",
                                "typeString": "type(int88)"
                              },
                              "typeName": {
                                "id": 6130,
                                "name": "int88",
                                "nodeType": "ElementaryTypeName",
                                "src": "28708:5:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6133,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "28708:12:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int88",
                              "typeString": "int88"
                            }
                          },
                          "src": "28695:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int88",
                            "typeString": "int88"
                          }
                        },
                        "id": 6135,
                        "nodeType": "ExpressionStatement",
                        "src": "28695:25:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6136,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6127,
                            "src": "28734:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int88",
                              "typeString": "int88"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6137,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6124,
                            "src": "28748:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "28734:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6145,
                        "nodeType": "IfStatement",
                        "src": "28730:97:19",
                        "trueBody": {
                          "id": 6144,
                          "nodeType": "Block",
                          "src": "28755:72:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3838",
                                    "id": 6140,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "28806:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_88_by_1",
                                      "typeString": "int_const 88"
                                    },
                                    "value": "88"
                                  },
                                  {
                                    "id": 6141,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6124,
                                    "src": "28810:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_88_by_1",
                                      "typeString": "int_const 88"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6139,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "28776:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6142,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28776:40:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6143,
                              "nodeType": "RevertStatement",
                              "src": "28769:47:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6122,
                    "nodeType": "StructuredDocumentation",
                    "src": "28301:307:19",
                    "text": " @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits"
                  },
                  "id": 6147,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt88",
                  "nameLocation": "28622:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6125,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6124,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "28637:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6147,
                        "src": "28630:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6123,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28630:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28629:14:19"
                  },
                  "returnParameters": {
                    "id": 6128,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6127,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "28673:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6147,
                        "src": "28667:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int88",
                          "typeString": "int88"
                        },
                        "typeName": {
                          "id": 6126,
                          "name": "int88",
                          "nodeType": "ElementaryTypeName",
                          "src": "28667:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int88",
                            "typeString": "int88"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28666:18:19"
                  },
                  "scope": 6448,
                  "src": "28613:220:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6172,
                    "nodeType": "Block",
                    "src": "29223:148:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6155,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6153,
                            "src": "29233:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int80",
                              "typeString": "int80"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6158,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6150,
                                "src": "29252:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "29246:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int80_$",
                                "typeString": "type(int80)"
                              },
                              "typeName": {
                                "id": 6156,
                                "name": "int80",
                                "nodeType": "ElementaryTypeName",
                                "src": "29246:5:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6159,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "29246:12:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int80",
                              "typeString": "int80"
                            }
                          },
                          "src": "29233:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int80",
                            "typeString": "int80"
                          }
                        },
                        "id": 6161,
                        "nodeType": "ExpressionStatement",
                        "src": "29233:25:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6162,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6153,
                            "src": "29272:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int80",
                              "typeString": "int80"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6163,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6150,
                            "src": "29286:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "29272:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6171,
                        "nodeType": "IfStatement",
                        "src": "29268:97:19",
                        "trueBody": {
                          "id": 6170,
                          "nodeType": "Block",
                          "src": "29293:72:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3830",
                                    "id": 6166,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "29344:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_80_by_1",
                                      "typeString": "int_const 80"
                                    },
                                    "value": "80"
                                  },
                                  {
                                    "id": 6167,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6150,
                                    "src": "29348:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_80_by_1",
                                      "typeString": "int_const 80"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6165,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "29314:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6168,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29314:40:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6169,
                              "nodeType": "RevertStatement",
                              "src": "29307:47:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6148,
                    "nodeType": "StructuredDocumentation",
                    "src": "28839:307:19",
                    "text": " @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits"
                  },
                  "id": 6173,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt80",
                  "nameLocation": "29160:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6151,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6150,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "29175:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6173,
                        "src": "29168:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6149,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "29168:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29167:14:19"
                  },
                  "returnParameters": {
                    "id": 6154,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6153,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "29211:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6173,
                        "src": "29205:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int80",
                          "typeString": "int80"
                        },
                        "typeName": {
                          "id": 6152,
                          "name": "int80",
                          "nodeType": "ElementaryTypeName",
                          "src": "29205:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int80",
                            "typeString": "int80"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29204:18:19"
                  },
                  "scope": 6448,
                  "src": "29151:220:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6198,
                    "nodeType": "Block",
                    "src": "29761:148:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6181,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6179,
                            "src": "29771:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int72",
                              "typeString": "int72"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6184,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6176,
                                "src": "29790:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "29784:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int72_$",
                                "typeString": "type(int72)"
                              },
                              "typeName": {
                                "id": 6182,
                                "name": "int72",
                                "nodeType": "ElementaryTypeName",
                                "src": "29784:5:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6185,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "29784:12:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int72",
                              "typeString": "int72"
                            }
                          },
                          "src": "29771:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int72",
                            "typeString": "int72"
                          }
                        },
                        "id": 6187,
                        "nodeType": "ExpressionStatement",
                        "src": "29771:25:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6188,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6179,
                            "src": "29810:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int72",
                              "typeString": "int72"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6189,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6176,
                            "src": "29824:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "29810:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6197,
                        "nodeType": "IfStatement",
                        "src": "29806:97:19",
                        "trueBody": {
                          "id": 6196,
                          "nodeType": "Block",
                          "src": "29831:72:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3732",
                                    "id": 6192,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "29882:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_72_by_1",
                                      "typeString": "int_const 72"
                                    },
                                    "value": "72"
                                  },
                                  {
                                    "id": 6193,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6176,
                                    "src": "29886:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_72_by_1",
                                      "typeString": "int_const 72"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6191,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "29852:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29852:40:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6195,
                              "nodeType": "RevertStatement",
                              "src": "29845:47:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6174,
                    "nodeType": "StructuredDocumentation",
                    "src": "29377:307:19",
                    "text": " @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits"
                  },
                  "id": 6199,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt72",
                  "nameLocation": "29698:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6176,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "29713:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6199,
                        "src": "29706:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6175,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "29706:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29705:14:19"
                  },
                  "returnParameters": {
                    "id": 6180,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6179,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "29749:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6199,
                        "src": "29743:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int72",
                          "typeString": "int72"
                        },
                        "typeName": {
                          "id": 6178,
                          "name": "int72",
                          "nodeType": "ElementaryTypeName",
                          "src": "29743:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int72",
                            "typeString": "int72"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29742:18:19"
                  },
                  "scope": 6448,
                  "src": "29689:220:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6224,
                    "nodeType": "Block",
                    "src": "30299:148:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6207,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6205,
                            "src": "30309:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int64",
                              "typeString": "int64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6210,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6202,
                                "src": "30328:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6209,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "30322:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int64_$",
                                "typeString": "type(int64)"
                              },
                              "typeName": {
                                "id": 6208,
                                "name": "int64",
                                "nodeType": "ElementaryTypeName",
                                "src": "30322:5:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6211,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30322:12:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int64",
                              "typeString": "int64"
                            }
                          },
                          "src": "30309:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int64",
                            "typeString": "int64"
                          }
                        },
                        "id": 6213,
                        "nodeType": "ExpressionStatement",
                        "src": "30309:25:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6214,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6205,
                            "src": "30348:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int64",
                              "typeString": "int64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6215,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6202,
                            "src": "30362:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "30348:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6223,
                        "nodeType": "IfStatement",
                        "src": "30344:97:19",
                        "trueBody": {
                          "id": 6222,
                          "nodeType": "Block",
                          "src": "30369:72:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3634",
                                    "id": 6218,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "30420:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_64_by_1",
                                      "typeString": "int_const 64"
                                    },
                                    "value": "64"
                                  },
                                  {
                                    "id": 6219,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6202,
                                    "src": "30424:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_64_by_1",
                                      "typeString": "int_const 64"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6217,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "30390:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "30390:40:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6221,
                              "nodeType": "RevertStatement",
                              "src": "30383:47:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6200,
                    "nodeType": "StructuredDocumentation",
                    "src": "29915:307:19",
                    "text": " @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits"
                  },
                  "id": 6225,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt64",
                  "nameLocation": "30236:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6203,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6202,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "30251:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6225,
                        "src": "30244:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6201,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30244:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30243:14:19"
                  },
                  "returnParameters": {
                    "id": 6206,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6205,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "30287:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6225,
                        "src": "30281:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        },
                        "typeName": {
                          "id": 6204,
                          "name": "int64",
                          "nodeType": "ElementaryTypeName",
                          "src": "30281:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int64",
                            "typeString": "int64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30280:18:19"
                  },
                  "scope": 6448,
                  "src": "30227:220:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6250,
                    "nodeType": "Block",
                    "src": "30837:148:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6233,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6231,
                            "src": "30847:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int56",
                              "typeString": "int56"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6236,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6228,
                                "src": "30866:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "30860:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int56_$",
                                "typeString": "type(int56)"
                              },
                              "typeName": {
                                "id": 6234,
                                "name": "int56",
                                "nodeType": "ElementaryTypeName",
                                "src": "30860:5:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6237,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30860:12:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int56",
                              "typeString": "int56"
                            }
                          },
                          "src": "30847:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int56",
                            "typeString": "int56"
                          }
                        },
                        "id": 6239,
                        "nodeType": "ExpressionStatement",
                        "src": "30847:25:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6242,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6240,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6231,
                            "src": "30886:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int56",
                              "typeString": "int56"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6241,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6228,
                            "src": "30900:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "30886:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6249,
                        "nodeType": "IfStatement",
                        "src": "30882:97:19",
                        "trueBody": {
                          "id": 6248,
                          "nodeType": "Block",
                          "src": "30907:72:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3536",
                                    "id": 6244,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "30958:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_56_by_1",
                                      "typeString": "int_const 56"
                                    },
                                    "value": "56"
                                  },
                                  {
                                    "id": 6245,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6228,
                                    "src": "30962:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_56_by_1",
                                      "typeString": "int_const 56"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6243,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "30928:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6246,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "30928:40:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6247,
                              "nodeType": "RevertStatement",
                              "src": "30921:47:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6226,
                    "nodeType": "StructuredDocumentation",
                    "src": "30453:307:19",
                    "text": " @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits"
                  },
                  "id": 6251,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt56",
                  "nameLocation": "30774:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6229,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6228,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "30789:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6251,
                        "src": "30782:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6227,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30782:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30781:14:19"
                  },
                  "returnParameters": {
                    "id": 6232,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6231,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "30825:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6251,
                        "src": "30819:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        },
                        "typeName": {
                          "id": 6230,
                          "name": "int56",
                          "nodeType": "ElementaryTypeName",
                          "src": "30819:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int56",
                            "typeString": "int56"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30818:18:19"
                  },
                  "scope": 6448,
                  "src": "30765:220:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6276,
                    "nodeType": "Block",
                    "src": "31375:148:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6259,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6257,
                            "src": "31385:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int48",
                              "typeString": "int48"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6262,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6254,
                                "src": "31404:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "31398:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int48_$",
                                "typeString": "type(int48)"
                              },
                              "typeName": {
                                "id": 6260,
                                "name": "int48",
                                "nodeType": "ElementaryTypeName",
                                "src": "31398:5:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "31398:12:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int48",
                              "typeString": "int48"
                            }
                          },
                          "src": "31385:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int48",
                            "typeString": "int48"
                          }
                        },
                        "id": 6265,
                        "nodeType": "ExpressionStatement",
                        "src": "31385:25:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6266,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6257,
                            "src": "31424:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int48",
                              "typeString": "int48"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6267,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6254,
                            "src": "31438:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "31424:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6275,
                        "nodeType": "IfStatement",
                        "src": "31420:97:19",
                        "trueBody": {
                          "id": 6274,
                          "nodeType": "Block",
                          "src": "31445:72:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3438",
                                    "id": 6270,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "31496:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_48_by_1",
                                      "typeString": "int_const 48"
                                    },
                                    "value": "48"
                                  },
                                  {
                                    "id": 6271,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6254,
                                    "src": "31500:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_48_by_1",
                                      "typeString": "int_const 48"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6269,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "31466:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "31466:40:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6273,
                              "nodeType": "RevertStatement",
                              "src": "31459:47:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6252,
                    "nodeType": "StructuredDocumentation",
                    "src": "30991:307:19",
                    "text": " @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits"
                  },
                  "id": 6277,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt48",
                  "nameLocation": "31312:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6255,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6254,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "31327:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6277,
                        "src": "31320:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6253,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31320:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31319:14:19"
                  },
                  "returnParameters": {
                    "id": 6258,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6257,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "31363:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6277,
                        "src": "31357:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int48",
                          "typeString": "int48"
                        },
                        "typeName": {
                          "id": 6256,
                          "name": "int48",
                          "nodeType": "ElementaryTypeName",
                          "src": "31357:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int48",
                            "typeString": "int48"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31356:18:19"
                  },
                  "scope": 6448,
                  "src": "31303:220:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6302,
                    "nodeType": "Block",
                    "src": "31913:148:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6285,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6283,
                            "src": "31923:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int40",
                              "typeString": "int40"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6288,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6280,
                                "src": "31942:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6287,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "31936:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int40_$",
                                "typeString": "type(int40)"
                              },
                              "typeName": {
                                "id": 6286,
                                "name": "int40",
                                "nodeType": "ElementaryTypeName",
                                "src": "31936:5:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "31936:12:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int40",
                              "typeString": "int40"
                            }
                          },
                          "src": "31923:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int40",
                            "typeString": "int40"
                          }
                        },
                        "id": 6291,
                        "nodeType": "ExpressionStatement",
                        "src": "31923:25:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6292,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6283,
                            "src": "31962:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int40",
                              "typeString": "int40"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6293,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6280,
                            "src": "31976:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "31962:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6301,
                        "nodeType": "IfStatement",
                        "src": "31958:97:19",
                        "trueBody": {
                          "id": 6300,
                          "nodeType": "Block",
                          "src": "31983:72:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3430",
                                    "id": 6296,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "32034:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_40_by_1",
                                      "typeString": "int_const 40"
                                    },
                                    "value": "40"
                                  },
                                  {
                                    "id": 6297,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6280,
                                    "src": "32038:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_40_by_1",
                                      "typeString": "int_const 40"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6295,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "32004:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6298,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "32004:40:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6299,
                              "nodeType": "RevertStatement",
                              "src": "31997:47:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6278,
                    "nodeType": "StructuredDocumentation",
                    "src": "31529:307:19",
                    "text": " @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits"
                  },
                  "id": 6303,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt40",
                  "nameLocation": "31850:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6281,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6280,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "31865:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6303,
                        "src": "31858:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6279,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31858:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31857:14:19"
                  },
                  "returnParameters": {
                    "id": 6284,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6283,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "31901:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6303,
                        "src": "31895:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int40",
                          "typeString": "int40"
                        },
                        "typeName": {
                          "id": 6282,
                          "name": "int40",
                          "nodeType": "ElementaryTypeName",
                          "src": "31895:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int40",
                            "typeString": "int40"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31894:18:19"
                  },
                  "scope": 6448,
                  "src": "31841:220:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6328,
                    "nodeType": "Block",
                    "src": "32451:148:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6311,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6309,
                            "src": "32461:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6314,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6306,
                                "src": "32480:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6313,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "32474:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int32_$",
                                "typeString": "type(int32)"
                              },
                              "typeName": {
                                "id": 6312,
                                "name": "int32",
                                "nodeType": "ElementaryTypeName",
                                "src": "32474:5:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6315,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "32474:12:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "src": "32461:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          }
                        },
                        "id": 6317,
                        "nodeType": "ExpressionStatement",
                        "src": "32461:25:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6318,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6309,
                            "src": "32500:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6319,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6306,
                            "src": "32514:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "32500:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6327,
                        "nodeType": "IfStatement",
                        "src": "32496:97:19",
                        "trueBody": {
                          "id": 6326,
                          "nodeType": "Block",
                          "src": "32521:72:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3332",
                                    "id": 6322,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "32572:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    },
                                    "value": "32"
                                  },
                                  {
                                    "id": 6323,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6306,
                                    "src": "32576:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6321,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "32542:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6324,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "32542:40:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6325,
                              "nodeType": "RevertStatement",
                              "src": "32535:47:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6304,
                    "nodeType": "StructuredDocumentation",
                    "src": "32067:307:19",
                    "text": " @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits"
                  },
                  "id": 6329,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt32",
                  "nameLocation": "32388:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6306,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "32403:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6329,
                        "src": "32396:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6305,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "32396:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32395:14:19"
                  },
                  "returnParameters": {
                    "id": 6310,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6309,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "32439:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6329,
                        "src": "32433:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int32",
                          "typeString": "int32"
                        },
                        "typeName": {
                          "id": 6308,
                          "name": "int32",
                          "nodeType": "ElementaryTypeName",
                          "src": "32433:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32432:18:19"
                  },
                  "scope": 6448,
                  "src": "32379:220:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6354,
                    "nodeType": "Block",
                    "src": "32989:148:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6337,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6335,
                            "src": "32999:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6340,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6332,
                                "src": "33018:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "33012:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int24_$",
                                "typeString": "type(int24)"
                              },
                              "typeName": {
                                "id": 6338,
                                "name": "int24",
                                "nodeType": "ElementaryTypeName",
                                "src": "33012:5:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "33012:12:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "32999:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "id": 6343,
                        "nodeType": "ExpressionStatement",
                        "src": "32999:25:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6344,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6335,
                            "src": "33038:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6345,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6332,
                            "src": "33052:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "33038:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6353,
                        "nodeType": "IfStatement",
                        "src": "33034:97:19",
                        "trueBody": {
                          "id": 6352,
                          "nodeType": "Block",
                          "src": "33059:72:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3234",
                                    "id": 6348,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "33110:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_24_by_1",
                                      "typeString": "int_const 24"
                                    },
                                    "value": "24"
                                  },
                                  {
                                    "id": 6349,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6332,
                                    "src": "33114:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_24_by_1",
                                      "typeString": "int_const 24"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6347,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "33080:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6350,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "33080:40:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6351,
                              "nodeType": "RevertStatement",
                              "src": "33073:47:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6330,
                    "nodeType": "StructuredDocumentation",
                    "src": "32605:307:19",
                    "text": " @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits"
                  },
                  "id": 6355,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt24",
                  "nameLocation": "32926:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6333,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6332,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "32941:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6355,
                        "src": "32934:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6331,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "32934:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32933:14:19"
                  },
                  "returnParameters": {
                    "id": 6336,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6335,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "32977:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6355,
                        "src": "32971:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 6334,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "32971:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32970:18:19"
                  },
                  "scope": 6448,
                  "src": "32917:220:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6380,
                    "nodeType": "Block",
                    "src": "33527:148:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6363,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6361,
                            "src": "33537:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int16",
                              "typeString": "int16"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6366,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6358,
                                "src": "33556:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6365,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "33550:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int16_$",
                                "typeString": "type(int16)"
                              },
                              "typeName": {
                                "id": 6364,
                                "name": "int16",
                                "nodeType": "ElementaryTypeName",
                                "src": "33550:5:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "33550:12:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int16",
                              "typeString": "int16"
                            }
                          },
                          "src": "33537:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int16",
                            "typeString": "int16"
                          }
                        },
                        "id": 6369,
                        "nodeType": "ExpressionStatement",
                        "src": "33537:25:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6370,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6361,
                            "src": "33576:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int16",
                              "typeString": "int16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6371,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6358,
                            "src": "33590:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "33576:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6379,
                        "nodeType": "IfStatement",
                        "src": "33572:97:19",
                        "trueBody": {
                          "id": 6378,
                          "nodeType": "Block",
                          "src": "33597:72:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3136",
                                    "id": 6374,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "33648:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_16_by_1",
                                      "typeString": "int_const 16"
                                    },
                                    "value": "16"
                                  },
                                  {
                                    "id": 6375,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6358,
                                    "src": "33652:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_16_by_1",
                                      "typeString": "int_const 16"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6373,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "33618:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6376,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "33618:40:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6377,
                              "nodeType": "RevertStatement",
                              "src": "33611:47:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6356,
                    "nodeType": "StructuredDocumentation",
                    "src": "33143:307:19",
                    "text": " @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits"
                  },
                  "id": 6381,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt16",
                  "nameLocation": "33464:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6359,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6358,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "33479:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6381,
                        "src": "33472:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6357,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "33472:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "33471:14:19"
                  },
                  "returnParameters": {
                    "id": 6362,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6361,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "33515:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6381,
                        "src": "33509:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int16",
                          "typeString": "int16"
                        },
                        "typeName": {
                          "id": 6360,
                          "name": "int16",
                          "nodeType": "ElementaryTypeName",
                          "src": "33509:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int16",
                            "typeString": "int16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "33508:18:19"
                  },
                  "scope": 6448,
                  "src": "33455:220:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6406,
                    "nodeType": "Block",
                    "src": "34058:146:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 6394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6389,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6387,
                            "src": "34068:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6392,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6384,
                                "src": "34086:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "34081:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int8_$",
                                "typeString": "type(int8)"
                              },
                              "typeName": {
                                "id": 6390,
                                "name": "int8",
                                "nodeType": "ElementaryTypeName",
                                "src": "34081:4:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "34081:11:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "src": "34068:24:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int8",
                            "typeString": "int8"
                          }
                        },
                        "id": 6395,
                        "nodeType": "ExpressionStatement",
                        "src": "34068:24:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6396,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6387,
                            "src": "34106:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6397,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6384,
                            "src": "34120:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "34106:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6405,
                        "nodeType": "IfStatement",
                        "src": "34102:96:19",
                        "trueBody": {
                          "id": 6404,
                          "nodeType": "Block",
                          "src": "34127:71:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "38",
                                    "id": 6400,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "34178:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    "value": "8"
                                  },
                                  {
                                    "id": 6401,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6384,
                                    "src": "34181:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 6399,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4705,
                                  "src": "34148:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 6402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "34148:39:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6403,
                              "nodeType": "RevertStatement",
                              "src": "34141:46:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6382,
                    "nodeType": "StructuredDocumentation",
                    "src": "33681:302:19",
                    "text": " @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits"
                  },
                  "id": 6407,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt8",
                  "nameLocation": "33997:6:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6385,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6384,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "34011:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6407,
                        "src": "34004:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6383,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "34004:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34003:14:19"
                  },
                  "returnParameters": {
                    "id": 6388,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6387,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "34046:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6407,
                        "src": "34041:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        },
                        "typeName": {
                          "id": 6386,
                          "name": "int8",
                          "nodeType": "ElementaryTypeName",
                          "src": "34041:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int8",
                            "typeString": "int8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34040:17:19"
                  },
                  "scope": 6448,
                  "src": "33988:216:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6436,
                    "nodeType": "Block",
                    "src": "34444:250:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6415,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6410,
                            "src": "34557:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 6420,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "34578:6:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": {
                                        "id": 6419,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "34578:6:19",
                                        "typeDescriptions": {}
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      }
                                    ],
                                    "id": 6418,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "34573:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 6421,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "34573:12:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_int256",
                                    "typeString": "type(int256)"
                                  }
                                },
                                "id": 6422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "34586:3:19",
                                "memberName": "max",
                                "nodeType": "MemberAccess",
                                "src": "34573:16:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 6417,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "34565:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 6416,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "34565:7:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6423,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "34565:25:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "34557:33:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6430,
                        "nodeType": "IfStatement",
                        "src": "34553:105:19",
                        "trueBody": {
                          "id": 6429,
                          "nodeType": "Block",
                          "src": "34592:66:19",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 6426,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6410,
                                    "src": "34641:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 6425,
                                  "name": "SafeCastOverflowedUintToInt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4710,
                                  "src": "34613:27:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint256) pure returns (error)"
                                  }
                                },
                                "id": 6427,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "34613:34:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 6428,
                              "nodeType": "RevertStatement",
                              "src": "34606:41:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6433,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6410,
                              "src": "34681:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "34674:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 6431,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "34674:6:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 6434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34674:13:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 6414,
                        "id": 6435,
                        "nodeType": "Return",
                        "src": "34667:20:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6408,
                    "nodeType": "StructuredDocumentation",
                    "src": "34210:165:19",
                    "text": " @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."
                  },
                  "id": 6437,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt256",
                  "nameLocation": "34389:8:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6411,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6410,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "34406:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6437,
                        "src": "34398:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6409,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "34398:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34397:15:19"
                  },
                  "returnParameters": {
                    "id": 6414,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6413,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6437,
                        "src": "34436:6:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6412,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "34436:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34435:8:19"
                  },
                  "scope": 6448,
                  "src": "34380:314:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6446,
                    "nodeType": "Block",
                    "src": "34853:87:19",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "34888:46:19",
                          "nodeType": "YulBlock",
                          "src": "34888:46:19",
                          "statements": [
                            {
                              "nativeSrc": "34902:22:19",
                              "nodeType": "YulAssignment",
                              "src": "34902:22:19",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "b",
                                        "nativeSrc": "34921:1:19",
                                        "nodeType": "YulIdentifier",
                                        "src": "34921:1:19"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nativeSrc": "34914:6:19",
                                      "nodeType": "YulIdentifier",
                                      "src": "34914:6:19"
                                    },
                                    "nativeSrc": "34914:9:19",
                                    "nodeType": "YulFunctionCall",
                                    "src": "34914:9:19"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nativeSrc": "34907:6:19",
                                  "nodeType": "YulIdentifier",
                                  "src": "34907:6:19"
                                },
                                "nativeSrc": "34907:17:19",
                                "nodeType": "YulFunctionCall",
                                "src": "34907:17:19"
                              },
                              "variableNames": [
                                {
                                  "name": "u",
                                  "nativeSrc": "34902:1:19",
                                  "nodeType": "YulIdentifier",
                                  "src": "34902:1:19"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 6440,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "34921:1:19",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6443,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "34902:1:19",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 6445,
                        "nodeType": "InlineAssembly",
                        "src": "34863:71:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6438,
                    "nodeType": "StructuredDocumentation",
                    "src": "34700:90:19",
                    "text": " @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump."
                  },
                  "id": 6447,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint",
                  "nameLocation": "34804:6:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6441,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6440,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "34816:1:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6447,
                        "src": "34811:6:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6439,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "34811:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34810:8:19"
                  },
                  "returnParameters": {
                    "id": 6444,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6443,
                        "mutability": "mutable",
                        "name": "u",
                        "nameLocation": "34850:1:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 6447,
                        "src": "34842:9:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6442,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "34842:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34841:11:19"
                  },
                  "scope": 6448,
                  "src": "34795:145:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 6449,
              "src": "769:34173:19",
              "usedErrors": [
                4693,
                4698,
                4705,
                4710
              ],
              "usedEvents": []
            }
          ],
          "src": "192:34751:19"
        },
        "id": 19
      },
      "@openzeppelin/contracts/utils/math/SignedMath.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/math/SignedMath.sol",
          "exportedSymbols": {
            "SafeCast": [
              6448
            ],
            "SignedMath": [
              6592
            ]
          },
          "id": 6593,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6450,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "109:24:20"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/math/SafeCast.sol",
              "file": "./SafeCast.sol",
              "id": 6452,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6593,
              "sourceUnit": 6449,
              "src": "135:40:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6451,
                    "name": "SafeCast",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6448,
                    "src": "143:8:20",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "SignedMath",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 6453,
                "nodeType": "StructuredDocumentation",
                "src": "177:80:20",
                "text": " @dev Standard signed math utilities missing in the Solidity language."
              },
              "fullyImplemented": true,
              "id": 6592,
              "linearizedBaseContracts": [
                6592
              ],
              "name": "SignedMath",
              "nameLocation": "266:10:20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 6482,
                    "nodeType": "Block",
                    "src": "746:215:20",
                    "statements": [
                      {
                        "id": 6481,
                        "nodeType": "UncheckedBlock",
                        "src": "756:199:20",
                        "statements": [
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 6479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6465,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6460,
                                "src": "894:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "^",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 6477,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          },
                                          "id": 6468,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 6466,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6458,
                                            "src": "900:1:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "^",
                                          "rightExpression": {
                                            "id": 6467,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6460,
                                            "src": "904:1:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "src": "900:5:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        }
                                      ],
                                      "id": 6469,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "899:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 6474,
                                              "name": "condition",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6456,
                                              "src": "932:9:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            ],
                                            "expression": {
                                              "id": 6472,
                                              "name": "SafeCast",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6448,
                                              "src": "916:8:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_SafeCast_$6448_$",
                                                "typeString": "type(library SafeCast)"
                                              }
                                            },
                                            "id": 6473,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "925:6:20",
                                            "memberName": "toUint",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6447,
                                            "src": "916:15:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                              "typeString": "function (bool) pure returns (uint256)"
                                            }
                                          },
                                          "id": 6475,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "916:26:20",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 6471,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "909:6:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_int256_$",
                                          "typeString": "type(int256)"
                                        },
                                        "typeName": {
                                          "id": 6470,
                                          "name": "int256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "909:6:20",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 6476,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "909:34:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "src": "899:44:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "id": 6478,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "898:46:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "894:50:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "functionReturnParameters": 6464,
                            "id": 6480,
                            "nodeType": "Return",
                            "src": "887:57:20"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6454,
                    "nodeType": "StructuredDocumentation",
                    "src": "283:374:20",
                    "text": " @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive."
                  },
                  "id": 6483,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ternary",
                  "nameLocation": "671:7:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6461,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6456,
                        "mutability": "mutable",
                        "name": "condition",
                        "nameLocation": "684:9:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 6483,
                        "src": "679:14:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6455,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "679:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6458,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "702:1:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 6483,
                        "src": "695:8:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6457,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "695:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6460,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "712:1:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 6483,
                        "src": "705:8:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6459,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "705:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "678:36:20"
                  },
                  "returnParameters": {
                    "id": 6464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6463,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6483,
                        "src": "738:6:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6462,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "738:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "737:8:20"
                  },
                  "scope": 6592,
                  "src": "662:299:20",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6501,
                    "nodeType": "Block",
                    "src": "1102:44:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 6496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6494,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6486,
                                "src": "1127:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 6495,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6488,
                                "src": "1131:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "1127:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 6497,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6486,
                              "src": "1134:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            {
                              "id": 6498,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6488,
                              "src": "1137:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 6493,
                            "name": "ternary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6483,
                            "src": "1119:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$",
                              "typeString": "function (bool,int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 6499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1119:20:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 6492,
                        "id": 6500,
                        "nodeType": "Return",
                        "src": "1112:27:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6484,
                    "nodeType": "StructuredDocumentation",
                    "src": "967:66:20",
                    "text": " @dev Returns the largest of two signed numbers."
                  },
                  "id": 6502,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "max",
                  "nameLocation": "1047:3:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6489,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6486,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "1058:1:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 6502,
                        "src": "1051:8:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6485,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1051:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6488,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "1068:1:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 6502,
                        "src": "1061:8:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6487,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1061:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1050:20:20"
                  },
                  "returnParameters": {
                    "id": 6492,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6491,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6502,
                        "src": "1094:6:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6490,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1094:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1093:8:20"
                  },
                  "scope": 6592,
                  "src": "1038:108:20",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6520,
                    "nodeType": "Block",
                    "src": "1288:44:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 6515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6513,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6505,
                                "src": "1313:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 6514,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6507,
                                "src": "1317:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "1313:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 6516,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6505,
                              "src": "1320:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            {
                              "id": 6517,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6507,
                              "src": "1323:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 6512,
                            "name": "ternary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6483,
                            "src": "1305:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$",
                              "typeString": "function (bool,int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 6518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1305:20:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 6511,
                        "id": 6519,
                        "nodeType": "Return",
                        "src": "1298:27:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6503,
                    "nodeType": "StructuredDocumentation",
                    "src": "1152:67:20",
                    "text": " @dev Returns the smallest of two signed numbers."
                  },
                  "id": 6521,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "min",
                  "nameLocation": "1233:3:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6508,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6505,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "1244:1:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 6521,
                        "src": "1237:8:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6504,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1237:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6507,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "1254:1:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 6521,
                        "src": "1247:8:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6506,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1247:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1236:20:20"
                  },
                  "returnParameters": {
                    "id": 6511,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6510,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6521,
                        "src": "1280:6:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6509,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1280:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1279:8:20"
                  },
                  "scope": 6592,
                  "src": "1224:108:20",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6564,
                    "nodeType": "Block",
                    "src": "1537:162:20",
                    "statements": [
                      {
                        "assignments": [
                          6532
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6532,
                            "mutability": "mutable",
                            "name": "x",
                            "nameLocation": "1606:1:20",
                            "nodeType": "VariableDeclaration",
                            "scope": 6564,
                            "src": "1599:8:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 6531,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1599:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6545,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 6535,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6533,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6524,
                                  "src": "1611:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "id": 6534,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6526,
                                  "src": "1615:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "1611:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 6536,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1610:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 6542,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 6539,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6537,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6524,
                                        "src": "1622:1:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "^",
                                      "rightExpression": {
                                        "id": 6538,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6526,
                                        "src": "1626:1:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "1622:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 6540,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1621:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 6541,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1632:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "1621:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 6543,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1620:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "1610:24:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1599:35:20"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 6562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6546,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6532,
                            "src": "1651:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 6560,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6554,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [
                                          {
                                            "id": 6551,
                                            "name": "x",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6532,
                                            "src": "1671:1:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          ],
                                          "id": 6550,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1663:7:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 6549,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1663:7:20",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 6552,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1663:10:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "323535",
                                        "id": 6553,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1677:3:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_255_by_1",
                                          "typeString": "int_const 255"
                                        },
                                        "value": "255"
                                      },
                                      "src": "1663:17:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 6548,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1656:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_int256_$",
                                      "typeString": "type(int256)"
                                    },
                                    "typeName": {
                                      "id": 6547,
                                      "name": "int256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1656:6:20",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 6555,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1656:25:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 6558,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6556,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6524,
                                        "src": "1685:1:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "^",
                                      "rightExpression": {
                                        "id": 6557,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6526,
                                        "src": "1689:1:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "1685:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 6559,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1684:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "1656:35:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 6561,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1655:37:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "1651:41:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 6530,
                        "id": 6563,
                        "nodeType": "Return",
                        "src": "1644:48:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6522,
                    "nodeType": "StructuredDocumentation",
                    "src": "1338:126:20",
                    "text": " @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."
                  },
                  "id": 6565,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "average",
                  "nameLocation": "1478:7:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6527,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6524,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "1493:1:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 6565,
                        "src": "1486:8:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6523,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1486:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6526,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "1503:1:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 6565,
                        "src": "1496:8:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6525,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1496:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1485:20:20"
                  },
                  "returnParameters": {
                    "id": 6530,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6529,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6565,
                        "src": "1529:6:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6528,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1529:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1528:8:20"
                  },
                  "scope": 6592,
                  "src": "1469:230:20",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6590,
                    "nodeType": "Block",
                    "src": "1843:767:20",
                    "statements": [
                      {
                        "id": 6589,
                        "nodeType": "UncheckedBlock",
                        "src": "1853:751:20",
                        "statements": [
                          {
                            "assignments": [
                              6574
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6574,
                                "mutability": "mutable",
                                "name": "mask",
                                "nameLocation": "2424:4:20",
                                "nodeType": "VariableDeclaration",
                                "scope": 6589,
                                "src": "2417:11:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "typeName": {
                                  "id": 6573,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2417:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6578,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 6577,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6575,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6568,
                                "src": "2431:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">>",
                              "rightExpression": {
                                "hexValue": "323535",
                                "id": 6576,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2436:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_255_by_1",
                                  "typeString": "int_const 255"
                                },
                                "value": "255"
                              },
                              "src": "2431:8:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2417:22:20"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 6586,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "id": 6583,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 6581,
                                          "name": "n",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6568,
                                          "src": "2576:1:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "id": 6582,
                                          "name": "mask",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6574,
                                          "src": "2580:4:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "src": "2576:8:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      }
                                    ],
                                    "id": 6584,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2575:10:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "^",
                                  "rightExpression": {
                                    "id": 6585,
                                    "name": "mask",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6574,
                                    "src": "2588:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "2575:17:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 6580,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2567:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 6579,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2567:7:20",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2567:26:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 6572,
                            "id": 6588,
                            "nodeType": "Return",
                            "src": "2560:33:20"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6566,
                    "nodeType": "StructuredDocumentation",
                    "src": "1705:78:20",
                    "text": " @dev Returns the absolute unsigned value of a signed value."
                  },
                  "id": 6591,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "abs",
                  "nameLocation": "1797:3:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6569,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6568,
                        "mutability": "mutable",
                        "name": "n",
                        "nameLocation": "1808:1:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 6591,
                        "src": "1801:8:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 6567,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1801:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1800:10:20"
                  },
                  "returnParameters": {
                    "id": 6572,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6571,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6591,
                        "src": "1834:7:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6570,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1834:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1833:9:20"
                  },
                  "scope": 6592,
                  "src": "1788:822:20",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 6593,
              "src": "258:2354:20",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "109:2504:20"
        },
        "id": 20
      },
      "@prb/math/src/Common.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/Common.sol",
          "exportedSymbols": {
            "MAX_UINT128": [
              6628
            ],
            "MAX_UINT40": [
              6636
            ],
            "MAX_UINT64": [
              6644
            ],
            "PRBMath_MulDiv18_Overflow": [
              6610
            ],
            "PRBMath_MulDivSigned_InputTooSmall": [
              6613
            ],
            "PRBMath_MulDivSigned_Overflow": [
              6620
            ],
            "PRBMath_MulDiv_Overflow": [
              6603
            ],
            "UNIT": [
              6648
            ],
            "UNIT_INVERSE": [
              6652
            ],
            "UNIT_LPOTD": [
              6656
            ],
            "exp2": [
              7764
            ],
            "msb": [
              7781
            ],
            "mulDiv": [
              7910
            ],
            "mulDiv18": [
              7952
            ],
            "mulDivSigned": [
              8107
            ],
            "sqrt": [
              8328
            ]
          },
          "id": 8329,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6594,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:21"
            },
            {
              "documentation": {
                "id": 6595,
                "nodeType": "StructuredDocumentation",
                "src": "437:75:21",
                "text": "@notice Thrown when the resultant value in {mulDiv} overflows uint256."
              },
              "errorSelector": "63a05778",
              "id": 6603,
              "name": "PRBMath_MulDiv_Overflow",
              "nameLocation": "518:23:21",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 6602,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 6597,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "550:1:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 6603,
                    "src": "542:9:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 6596,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "542:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 6599,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "561:1:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 6603,
                    "src": "553:9:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 6598,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "553:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 6601,
                    "mutability": "mutable",
                    "name": "denominator",
                    "nameLocation": "572:11:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 6603,
                    "src": "564:19:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 6600,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "564:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "541:43:21"
              },
              "src": "512:73:21"
            },
            {
              "documentation": {
                "id": 6604,
                "nodeType": "StructuredDocumentation",
                "src": "587:77:21",
                "text": "@notice Thrown when the resultant value in {mulDiv18} overflows uint256."
              },
              "errorSelector": "5173648d",
              "id": 6610,
              "name": "PRBMath_MulDiv18_Overflow",
              "nameLocation": "670:25:21",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 6609,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 6606,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "704:1:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 6610,
                    "src": "696:9:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 6605,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "696:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 6608,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "715:1:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 6610,
                    "src": "707:9:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 6607,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "707:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "695:22:21"
              },
              "src": "664:54:21"
            },
            {
              "documentation": {
                "id": 6611,
                "nodeType": "StructuredDocumentation",
                "src": "720:90:21",
                "text": "@notice Thrown when one of the inputs passed to {mulDivSigned} is `type(int256).min`."
              },
              "errorSelector": "96aa5572",
              "id": 6613,
              "name": "PRBMath_MulDivSigned_InputTooSmall",
              "nameLocation": "816:34:21",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 6612,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "850:2:21"
              },
              "src": "810:43:21"
            },
            {
              "documentation": {
                "id": 6614,
                "nodeType": "StructuredDocumentation",
                "src": "855:80:21",
                "text": "@notice Thrown when the resultant value in {mulDivSigned} overflows int256."
              },
              "errorSelector": "1832b7bd",
              "id": 6620,
              "name": "PRBMath_MulDivSigned_Overflow",
              "nameLocation": "941:29:21",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 6619,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 6616,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "978:1:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 6620,
                    "src": "971:8:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "typeName": {
                      "id": 6615,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "971:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 6618,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "988:1:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 6620,
                    "src": "981:8:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "typeName": {
                      "id": 6617,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "981:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "970:20:21"
              },
              "src": "935:56:21"
            },
            {
              "constant": true,
              "id": 6628,
              "mutability": "constant",
              "name": "MAX_UINT128",
              "nameLocation": "1265:11:21",
              "nodeType": "VariableDeclaration",
              "scope": 8329,
              "src": "1248:48:21",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint128",
                "typeString": "uint128"
              },
              "typeName": {
                "id": 6622,
                "name": "uint128",
                "nodeType": "ElementaryTypeName",
                "src": "1248:7:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                }
              },
              "value": {
                "expression": {
                  "arguments": [
                    {
                      "id": 6625,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1284:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint128_$",
                        "typeString": "type(uint128)"
                      },
                      "typeName": {
                        "id": 6624,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "1284:7:21",
                        "typeDescriptions": {}
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_type$_t_uint128_$",
                        "typeString": "type(uint128)"
                      }
                    ],
                    "id": 6623,
                    "name": "type",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": -27,
                    "src": "1279:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                      "typeString": "function () pure"
                    }
                  },
                  "id": 6626,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1279:13:21",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_magic_meta_type_t_uint128",
                    "typeString": "type(uint128)"
                  }
                },
                "id": 6627,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "memberLocation": "1293:3:21",
                "memberName": "max",
                "nodeType": "MemberAccess",
                "src": "1279:17:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 6636,
              "mutability": "constant",
              "name": "MAX_UINT40",
              "nameLocation": "1368:10:21",
              "nodeType": "VariableDeclaration",
              "scope": 8329,
              "src": "1352:45:21",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint40",
                "typeString": "uint40"
              },
              "typeName": {
                "id": 6630,
                "name": "uint40",
                "nodeType": "ElementaryTypeName",
                "src": "1352:6:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint40",
                  "typeString": "uint40"
                }
              },
              "value": {
                "expression": {
                  "arguments": [
                    {
                      "id": 6633,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1386:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint40_$",
                        "typeString": "type(uint40)"
                      },
                      "typeName": {
                        "id": 6632,
                        "name": "uint40",
                        "nodeType": "ElementaryTypeName",
                        "src": "1386:6:21",
                        "typeDescriptions": {}
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_type$_t_uint40_$",
                        "typeString": "type(uint40)"
                      }
                    ],
                    "id": 6631,
                    "name": "type",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": -27,
                    "src": "1381:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                      "typeString": "function () pure"
                    }
                  },
                  "id": 6634,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1381:12:21",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_magic_meta_type_t_uint40",
                    "typeString": "type(uint40)"
                  }
                },
                "id": 6635,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "memberLocation": "1394:3:21",
                "memberName": "max",
                "nodeType": "MemberAccess",
                "src": "1381:16:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint40",
                  "typeString": "uint40"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 6644,
              "mutability": "constant",
              "name": "MAX_UINT64",
              "nameLocation": "1469:10:21",
              "nodeType": "VariableDeclaration",
              "scope": 8329,
              "src": "1453:45:21",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              },
              "typeName": {
                "id": 6638,
                "name": "uint64",
                "nodeType": "ElementaryTypeName",
                "src": "1453:6:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                }
              },
              "value": {
                "expression": {
                  "arguments": [
                    {
                      "id": 6641,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1487:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint64_$",
                        "typeString": "type(uint64)"
                      },
                      "typeName": {
                        "id": 6640,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1487:6:21",
                        "typeDescriptions": {}
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_type$_t_uint64_$",
                        "typeString": "type(uint64)"
                      }
                    ],
                    "id": 6639,
                    "name": "type",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": -27,
                    "src": "1482:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                      "typeString": "function () pure"
                    }
                  },
                  "id": 6642,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1482:12:21",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_magic_meta_type_t_uint64",
                    "typeString": "type(uint64)"
                  }
                },
                "id": 6643,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "memberLocation": "1495:3:21",
                "memberName": "max",
                "nodeType": "MemberAccess",
                "src": "1482:16:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 6648,
              "mutability": "constant",
              "name": "UNIT",
              "nameLocation": "1598:4:21",
              "nodeType": "VariableDeclaration",
              "scope": 8329,
              "src": "1581:28:21",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 6646,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1581:7:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "31653138",
                "id": 6647,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1605:4:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                  "typeString": "int_const 1000000000000000000"
                },
                "value": "1e18"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 6652,
              "mutability": "constant",
              "name": "UNIT_INVERSE",
              "nameLocation": "1674:12:21",
              "nodeType": "VariableDeclaration",
              "scope": 8329,
              "src": "1657:110:21",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 6650,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1657:7:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "37383135363634363135353137343834313937393732373939343539383831363236323330363137353231323539323037363136313837363636315f353038383639353534323332363930323831",
                "id": 6651,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1689:78:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_78156646155174841979727994598816262306175212592076161876661508869554232690281_by_1",
                  "typeString": "int_const 7815...(69 digits omitted)...0281"
                },
                "value": "78156646155174841979727994598816262306175212592076161876661_508869554232690281"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 6656,
              "mutability": "constant",
              "name": "UNIT_LPOTD",
              "nameLocation": "1968:10:21",
              "nodeType": "VariableDeclaration",
              "scope": 8329,
              "src": "1951:36:21",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 6654,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1951:7:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "323632313434",
                "id": 6655,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1981:6:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_262144_by_1",
                  "typeString": "int_const 262144"
                },
                "value": "262144"
              },
              "visibility": "internal"
            },
            {
              "body": {
                "id": 7763,
                "nodeType": "Block",
                "src": "2633:9097:21",
                "statements": [
                  {
                    "id": 7762,
                    "nodeType": "UncheckedBlock",
                    "src": "2639:9089:21",
                    "statements": [
                      {
                        "expression": {
                          "id": 6666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6664,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6662,
                            "src": "2723:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "3078383030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                            "id": 6665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2732:50:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3138550867693340381917894711603833208051177722232017256448_by_1",
                              "typeString": "int_const 3138...(50 digits omitted)...6448"
                            },
                            "value": "0x800000000000000000000000000000000000000000000000"
                          },
                          "src": "2723:59:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6667,
                        "nodeType": "ExpressionStatement",
                        "src": "2723:59:21"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6670,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 6668,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6659,
                              "src": "3343:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "hexValue": "307846463030303030303030303030303030",
                              "id": 6669,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3347:18:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18374686479671623680_by_1",
                                "typeString": "int_const 18374686479671623680"
                              },
                              "value": "0xFF00000000000000"
                            },
                            "src": "3343:22:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 6671,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3368:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3343:26:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6802,
                        "nodeType": "IfStatement",
                        "src": "3339:1023:21",
                        "trueBody": {
                          "id": 6801,
                          "nodeType": "Block",
                          "src": "3371:991:21",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6677,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6675,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6673,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "3389:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307838303030303030303030303030303030",
                                    "id": 6674,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3393:18:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_9223372036854775808_by_1",
                                      "typeString": "int_const 9223372036854775808"
                                    },
                                    "value": "0x8000000000000000"
                                  },
                                  "src": "3389:22:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6676,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3414:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3389:26:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6688,
                              "nodeType": "IfStatement",
                              "src": "3385:110:21",
                              "trueBody": {
                                "id": 6687,
                                "nodeType": "Block",
                                "src": "3417:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6685,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6678,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "3435:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6684,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6681,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6679,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "3445:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783136413039453636374633424343393039",
                                                "id": 6680,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3454:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_26087635650665564425_by_1",
                                                  "typeString": "int_const 26087635650665564425"
                                                },
                                                "value": "0x16A09E667F3BCC909"
                                              },
                                              "src": "3445:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6682,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "3444:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6683,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3478:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "3444:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3435:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6686,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3435:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6693,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6691,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6689,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "3512:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307834303030303030303030303030303030",
                                    "id": 6690,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3516:18:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4611686018427387904_by_1",
                                      "typeString": "int_const 4611686018427387904"
                                    },
                                    "value": "0x4000000000000000"
                                  },
                                  "src": "3512:22:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6692,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3537:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3512:26:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6704,
                              "nodeType": "IfStatement",
                              "src": "3508:110:21",
                              "trueBody": {
                                "id": 6703,
                                "nodeType": "Block",
                                "src": "3540:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6701,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6694,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "3558:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6700,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6697,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6695,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "3568:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783133303646453041333142373135324446",
                                                "id": 6696,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3577:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_21936999301089678047_by_1",
                                                  "typeString": "int_const 21936999301089678047"
                                                },
                                                "value": "0x1306FE0A31B7152DF"
                                              },
                                              "src": "3568:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6698,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "3567:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6699,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3601:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "3567:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3558:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6702,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3558:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6709,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6707,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6705,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "3635:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307832303030303030303030303030303030",
                                    "id": 6706,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3639:18:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2305843009213693952_by_1",
                                      "typeString": "int_const 2305843009213693952"
                                    },
                                    "value": "0x2000000000000000"
                                  },
                                  "src": "3635:22:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6708,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3660:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3635:26:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6720,
                              "nodeType": "IfStatement",
                              "src": "3631:110:21",
                              "trueBody": {
                                "id": 6719,
                                "nodeType": "Block",
                                "src": "3663:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6717,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6710,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "3681:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6716,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6713,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6711,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "3691:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783131373242383343374435313741444345",
                                                "id": 6712,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3700:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_20116317054877281742_by_1",
                                                  "typeString": "int_const 20116317054877281742"
                                                },
                                                "value": "0x1172B83C7D517ADCE"
                                              },
                                              "src": "3691:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6714,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "3690:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6715,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3724:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "3690:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3681:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6718,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3681:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6723,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6721,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "3758:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307831303030303030303030303030303030",
                                    "id": 6722,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3762:18:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1152921504606846976_by_1",
                                      "typeString": "int_const 1152921504606846976"
                                    },
                                    "value": "0x1000000000000000"
                                  },
                                  "src": "3758:22:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6724,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3783:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3758:26:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6736,
                              "nodeType": "IfStatement",
                              "src": "3754:110:21",
                              "trueBody": {
                                "id": 6735,
                                "nodeType": "Block",
                                "src": "3786:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6733,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6726,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "3804:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6732,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6729,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6727,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "3814:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130423535383643463938393046363241",
                                                "id": 6728,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3823:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_19263451207323153962_by_1",
                                                  "typeString": "int_const 19263451207323153962"
                                                },
                                                "value": "0x10B5586CF9890F62A"
                                              },
                                              "src": "3814:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6730,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "3813:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6731,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3847:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "3813:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3804:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6734,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3804:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6741,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6739,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6737,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "3881:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078383030303030303030303030303030",
                                    "id": 6738,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3885:17:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_576460752303423488_by_1",
                                      "typeString": "int_const 576460752303423488"
                                    },
                                    "value": "0x800000000000000"
                                  },
                                  "src": "3881:21:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6740,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3905:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3881:25:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6752,
                              "nodeType": "IfStatement",
                              "src": "3877:109:21",
                              "trueBody": {
                                "id": 6751,
                                "nodeType": "Block",
                                "src": "3908:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6749,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6742,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "3926:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6748,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6745,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6743,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "3936:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130353942304433313538353734334145",
                                                "id": 6744,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3945:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18850675170876015534_by_1",
                                                  "typeString": "int_const 18850675170876015534"
                                                },
                                                "value": "0x1059B0D31585743AE"
                                              },
                                              "src": "3936:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6746,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "3935:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6747,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3969:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "3935:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3926:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6750,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3926:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6755,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6753,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "4003:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078343030303030303030303030303030",
                                    "id": 6754,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4007:17:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_288230376151711744_by_1",
                                      "typeString": "int_const 288230376151711744"
                                    },
                                    "value": "0x400000000000000"
                                  },
                                  "src": "4003:21:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6756,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4027:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4003:25:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6768,
                              "nodeType": "IfStatement",
                              "src": "3999:109:21",
                              "trueBody": {
                                "id": 6767,
                                "nodeType": "Block",
                                "src": "4030:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6765,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6758,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "4048:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6764,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6761,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6759,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "4058:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130324339413345373738303630454537",
                                                "id": 6760,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4067:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18647615946650685159_by_1",
                                                  "typeString": "int_const 18647615946650685159"
                                                },
                                                "value": "0x102C9A3E778060EE7"
                                              },
                                              "src": "4058:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6762,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "4057:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6763,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4091:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "4057:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4048:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6766,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4048:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6773,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6771,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6769,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "4125:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078323030303030303030303030303030",
                                    "id": 6770,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4129:17:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_144115188075855872_by_1",
                                      "typeString": "int_const 144115188075855872"
                                    },
                                    "value": "0x200000000000000"
                                  },
                                  "src": "4125:21:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6772,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4149:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4125:25:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6784,
                              "nodeType": "IfStatement",
                              "src": "4121:109:21",
                              "trueBody": {
                                "id": 6783,
                                "nodeType": "Block",
                                "src": "4152:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6781,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6774,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "4170:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6780,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6777,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6775,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "4180:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130313633444139464233333335364438",
                                                "id": 6776,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4189:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18546908069882975960_by_1",
                                                  "typeString": "int_const 18546908069882975960"
                                                },
                                                "value": "0x10163DA9FB33356D8"
                                              },
                                              "src": "4180:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6778,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "4179:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6779,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4213:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "4179:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4170:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6782,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4170:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6789,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6787,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6785,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "4247:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078313030303030303030303030303030",
                                    "id": 6786,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4251:17:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_72057594037927936_by_1",
                                      "typeString": "int_const 72057594037927936"
                                    },
                                    "value": "0x100000000000000"
                                  },
                                  "src": "4247:21:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6788,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4271:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4247:25:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6800,
                              "nodeType": "IfStatement",
                              "src": "4243:109:21",
                              "trueBody": {
                                "id": 6799,
                                "nodeType": "Block",
                                "src": "4274:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6797,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6790,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "4292:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6796,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6793,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6791,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "4302:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130304231414641354142434245443631",
                                                "id": 6792,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4311:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18496758270674070881_by_1",
                                                  "typeString": "int_const 18496758270674070881"
                                                },
                                                "value": "0x100B1AFA5ABCBED61"
                                              },
                                              "src": "4302:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6794,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "4301:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6795,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4335:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "4301:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4292:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6798,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4292:45:21"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6805,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 6803,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6659,
                              "src": "4376:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "hexValue": "30784646303030303030303030303030",
                              "id": 6804,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4380:16:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_71776119061217280_by_1",
                                "typeString": "int_const 71776119061217280"
                              },
                              "value": "0xFF000000000000"
                            },
                            "src": "4376:20:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 6806,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4399:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4376:24:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6937,
                        "nodeType": "IfStatement",
                        "src": "4372:1005:21",
                        "trueBody": {
                          "id": 6936,
                          "nodeType": "Block",
                          "src": "4402:975:21",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6812,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6810,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6808,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "4420:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783830303030303030303030303030",
                                    "id": 6809,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4424:16:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_36028797018963968_by_1",
                                      "typeString": "int_const 36028797018963968"
                                    },
                                    "value": "0x80000000000000"
                                  },
                                  "src": "4420:20:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6811,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4443:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4420:24:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6823,
                              "nodeType": "IfStatement",
                              "src": "4416:108:21",
                              "trueBody": {
                                "id": 6822,
                                "nodeType": "Block",
                                "src": "4446:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6820,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6813,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "4464:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6819,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6816,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6814,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "4474:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303538433836444131433039454132",
                                                "id": 6815,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4483:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18471734244850835106_by_1",
                                                  "typeString": "int_const 18471734244850835106"
                                                },
                                                "value": "0x10058C86DA1C09EA2"
                                              },
                                              "src": "4474:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6817,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "4473:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6818,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4507:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "4473:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4464:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6821,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4464:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6826,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6824,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "4541:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783430303030303030303030303030",
                                    "id": 6825,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4545:16:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_18014398509481984_by_1",
                                      "typeString": "int_const 18014398509481984"
                                    },
                                    "value": "0x40000000000000"
                                  },
                                  "src": "4541:20:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4564:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4541:24:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6839,
                              "nodeType": "IfStatement",
                              "src": "4537:108:21",
                              "trueBody": {
                                "id": 6838,
                                "nodeType": "Block",
                                "src": "4567:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6836,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6829,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "4585:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6835,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6832,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6830,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "4595:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303243363035453245384345433530",
                                                "id": 6831,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4604:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18459234930309000272_by_1",
                                                  "typeString": "int_const 18459234930309000272"
                                                },
                                                "value": "0x1002C605E2E8CEC50"
                                              },
                                              "src": "4595:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6833,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "4594:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6834,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4628:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "4594:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4585:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6837,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4585:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6844,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6842,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6840,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "4662:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783230303030303030303030303030",
                                    "id": 6841,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4666:16:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_9007199254740992_by_1",
                                      "typeString": "int_const 9007199254740992"
                                    },
                                    "value": "0x20000000000000"
                                  },
                                  "src": "4662:20:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6843,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4685:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4662:24:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6855,
                              "nodeType": "IfStatement",
                              "src": "4658:108:21",
                              "trueBody": {
                                "id": 6854,
                                "nodeType": "Block",
                                "src": "4688:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6852,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6845,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "4706:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6851,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6848,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6846,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "4716:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303136324633393034303531464131",
                                                "id": 6847,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4725:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18452988445124272033_by_1",
                                                  "typeString": "int_const 18452988445124272033"
                                                },
                                                "value": "0x100162F3904051FA1"
                                              },
                                              "src": "4716:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6849,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "4715:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6850,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4749:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "4715:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4706:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6853,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4706:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6860,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6858,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6856,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "4783:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783130303030303030303030303030",
                                    "id": 6857,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4787:16:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4503599627370496_by_1",
                                      "typeString": "int_const 4503599627370496"
                                    },
                                    "value": "0x10000000000000"
                                  },
                                  "src": "4783:20:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6859,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4806:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4783:24:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6871,
                              "nodeType": "IfStatement",
                              "src": "4779:108:21",
                              "trueBody": {
                                "id": 6870,
                                "nodeType": "Block",
                                "src": "4809:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6868,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6861,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "4827:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6867,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6864,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6862,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "4837:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303042313735454646444337364241",
                                                "id": 6863,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4846:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18449865995240371898_by_1",
                                                  "typeString": "int_const 18449865995240371898"
                                                },
                                                "value": "0x1000B175EFFDC76BA"
                                              },
                                              "src": "4837:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6865,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "4836:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6866,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4870:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "4836:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4827:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6869,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4827:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6876,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6874,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6872,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "4904:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307838303030303030303030303030",
                                    "id": 6873,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4908:15:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2251799813685248_by_1",
                                      "typeString": "int_const 2251799813685248"
                                    },
                                    "value": "0x8000000000000"
                                  },
                                  "src": "4904:19:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6875,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4926:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4904:23:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6887,
                              "nodeType": "IfStatement",
                              "src": "4900:107:21",
                              "trueBody": {
                                "id": 6886,
                                "nodeType": "Block",
                                "src": "4929:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6884,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6877,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "4947:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6883,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6880,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6878,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "4957:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303035384241303146423946393644",
                                                "id": 6879,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4966:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18448304968436414829_by_1",
                                                  "typeString": "int_const 18448304968436414829"
                                                },
                                                "value": "0x100058BA01FB9F96D"
                                              },
                                              "src": "4957:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6881,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "4956:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6882,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4990:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "4956:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4947:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6885,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4947:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6892,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6890,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6888,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "5024:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307834303030303030303030303030",
                                    "id": 6889,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5028:15:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1125899906842624_by_1",
                                      "typeString": "int_const 1125899906842624"
                                    },
                                    "value": "0x4000000000000"
                                  },
                                  "src": "5024:19:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6891,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5046:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5024:23:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6903,
                              "nodeType": "IfStatement",
                              "src": "5020:107:21",
                              "trueBody": {
                                "id": 6902,
                                "nodeType": "Block",
                                "src": "5049:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6900,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6893,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "5067:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6899,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6896,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6894,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "5077:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303032433543433337444139343932",
                                                "id": 6895,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5086:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18447524504564044946_by_1",
                                                  "typeString": "int_const 18447524504564044946"
                                                },
                                                "value": "0x10002C5CC37DA9492"
                                              },
                                              "src": "5077:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6897,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "5076:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6898,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5110:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "5076:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5067:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6901,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5067:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6908,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6906,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6904,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "5144:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307832303030303030303030303030",
                                    "id": 6905,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5148:15:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_562949953421312_by_1",
                                      "typeString": "int_const 562949953421312"
                                    },
                                    "value": "0x2000000000000"
                                  },
                                  "src": "5144:19:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6907,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5166:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5144:23:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6919,
                              "nodeType": "IfStatement",
                              "src": "5140:107:21",
                              "trueBody": {
                                "id": 6918,
                                "nodeType": "Block",
                                "src": "5169:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6916,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6909,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "5187:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6915,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6912,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6910,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "5197:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303031363245353235454530353437",
                                                "id": 6911,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5206:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18447134285009651015_by_1",
                                                  "typeString": "int_const 18447134285009651015"
                                                },
                                                "value": "0x1000162E525EE0547"
                                              },
                                              "src": "5197:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6913,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "5196:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6914,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5230:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "5196:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5187:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6917,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5187:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6924,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6922,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6920,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "5264:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307831303030303030303030303030",
                                    "id": 6921,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5268:15:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_281474976710656_by_1",
                                      "typeString": "int_const 281474976710656"
                                    },
                                    "value": "0x1000000000000"
                                  },
                                  "src": "5264:19:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6923,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5286:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5264:23:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6935,
                              "nodeType": "IfStatement",
                              "src": "5260:107:21",
                              "trueBody": {
                                "id": 6934,
                                "nodeType": "Block",
                                "src": "5289:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6932,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6925,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "5307:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6931,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6928,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6926,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "5317:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030423137323535373735433034",
                                                "id": 6927,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5326:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446939178327825412_by_1",
                                                  "typeString": "int_const 18446939178327825412"
                                                },
                                                "value": "0x10000B17255775C04"
                                              },
                                              "src": "5317:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6929,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "5316:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6930,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5350:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "5316:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5307:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6933,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5307:45:21"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6940,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 6938,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6659,
                              "src": "5391:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "hexValue": "3078464630303030303030303030",
                              "id": 6939,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5395:14:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_280375465082880_by_1",
                                "typeString": "int_const 280375465082880"
                              },
                              "value": "0xFF0000000000"
                            },
                            "src": "5391:18:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 6941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5412:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5391:22:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7072,
                        "nodeType": "IfStatement",
                        "src": "5387:987:21",
                        "trueBody": {
                          "id": 7071,
                          "nodeType": "Block",
                          "src": "5415:959:21",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6947,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6945,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6943,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "5433:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078383030303030303030303030",
                                    "id": 6944,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5437:14:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_140737488355328_by_1",
                                      "typeString": "int_const 140737488355328"
                                    },
                                    "value": "0x800000000000"
                                  },
                                  "src": "5433:18:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6946,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5454:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5433:22:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6958,
                              "nodeType": "IfStatement",
                              "src": "5429:106:21",
                              "trueBody": {
                                "id": 6957,
                                "nodeType": "Block",
                                "src": "5457:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6955,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6948,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "5475:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6954,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6951,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6949,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "5485:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030353842393142354243394145",
                                                "id": 6950,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5494:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446841625760745902_by_1",
                                                  "typeString": "int_const 18446841625760745902"
                                                },
                                                "value": "0x1000058B91B5BC9AE"
                                              },
                                              "src": "5485:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6952,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "5484:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6953,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5518:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "5484:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5475:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6956,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5475:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6963,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6961,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6959,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "5552:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078343030303030303030303030",
                                    "id": 6960,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5556:14:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_70368744177664_by_1",
                                      "typeString": "int_const 70368744177664"
                                    },
                                    "value": "0x400000000000"
                                  },
                                  "src": "5552:18:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6962,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5573:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5552:22:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6974,
                              "nodeType": "IfStatement",
                              "src": "5548:106:21",
                              "trueBody": {
                                "id": 6973,
                                "nodeType": "Block",
                                "src": "5576:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6971,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6964,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "5594:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6970,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6967,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6965,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "5604:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030324335433839443545433644",
                                                "id": 6966,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5613:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446792849670663277_by_1",
                                                  "typeString": "int_const 18446792849670663277"
                                                },
                                                "value": "0x100002C5C89D5EC6D"
                                              },
                                              "src": "5604:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6968,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "5603:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6969,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5637:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "5603:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5594:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6972,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5594:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6979,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6977,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6975,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "5671:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078323030303030303030303030",
                                    "id": 6976,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5675:14:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_35184372088832_by_1",
                                      "typeString": "int_const 35184372088832"
                                    },
                                    "value": "0x200000000000"
                                  },
                                  "src": "5671:18:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6978,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5692:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5671:22:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6990,
                              "nodeType": "IfStatement",
                              "src": "5667:106:21",
                              "trueBody": {
                                "id": 6989,
                                "nodeType": "Block",
                                "src": "5695:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6987,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6980,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "5713:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6986,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6983,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6981,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "5723:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030313632453433463446383331",
                                                "id": 6982,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5732:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446768461673986097_by_1",
                                                  "typeString": "int_const 18446768461673986097"
                                                },
                                                "value": "0x10000162E43F4F831"
                                              },
                                              "src": "5723:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 6984,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "5722:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 6985,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5756:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "5722:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5713:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6988,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5713:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6995,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6993,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6991,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "5790:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078313030303030303030303030",
                                    "id": 6992,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5794:14:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_17592186044416_by_1",
                                      "typeString": "int_const 17592186044416"
                                    },
                                    "value": "0x100000000000"
                                  },
                                  "src": "5790:18:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6994,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5811:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5790:22:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7006,
                              "nodeType": "IfStatement",
                              "src": "5786:106:21",
                              "trueBody": {
                                "id": 7005,
                                "nodeType": "Block",
                                "src": "5814:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7003,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6996,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "5832:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7002,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6999,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6997,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "5842:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030304231373231424346433941",
                                                "id": 6998,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5851:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446756267687738522_by_1",
                                                  "typeString": "int_const 18446756267687738522"
                                                },
                                                "value": "0x100000B1721BCFC9A"
                                              },
                                              "src": "5842:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7000,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "5841:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7001,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5875:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "5841:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5832:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7004,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5832:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7009,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7007,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "5909:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783830303030303030303030",
                                    "id": 7008,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5913:13:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8796093022208_by_1",
                                      "typeString": "int_const 8796093022208"
                                    },
                                    "value": "0x80000000000"
                                  },
                                  "src": "5909:17:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7010,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5929:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5909:21:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7022,
                              "nodeType": "IfStatement",
                              "src": "5905:105:21",
                              "trueBody": {
                                "id": 7021,
                                "nodeType": "Block",
                                "src": "5932:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7019,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7012,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "5950:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7018,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7015,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7013,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "5960:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303538423930434631453645",
                                                "id": 7014,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5969:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446750170697637486_by_1",
                                                  "typeString": "int_const 18446750170697637486"
                                                },
                                                "value": "0x10000058B90CF1E6E"
                                              },
                                              "src": "5960:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7016,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "5959:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7017,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5993:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "5959:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5950:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7020,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5950:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7027,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7025,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7023,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "6027:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783430303030303030303030",
                                    "id": 7024,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6031:13:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4398046511104_by_1",
                                      "typeString": "int_const 4398046511104"
                                    },
                                    "value": "0x40000000000"
                                  },
                                  "src": "6027:17:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7026,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6047:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6027:21:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7038,
                              "nodeType": "IfStatement",
                              "src": "6023:105:21",
                              "trueBody": {
                                "id": 7037,
                                "nodeType": "Block",
                                "src": "6050:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7035,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7028,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "6068:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7034,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7031,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7029,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "6078:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303243354338363342373346",
                                                "id": 7030,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6087:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446747122203342655_by_1",
                                                  "typeString": "int_const 18446747122203342655"
                                                },
                                                "value": "0x1000002C5C863B73F"
                                              },
                                              "src": "6078:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7032,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "6077:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7033,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6111:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "6077:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6068:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7036,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6068:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7041,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7039,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "6145:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783230303030303030303030",
                                    "id": 7040,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6149:13:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2199023255552_by_1",
                                      "typeString": "int_const 2199023255552"
                                    },
                                    "value": "0x20000000000"
                                  },
                                  "src": "6145:17:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7042,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6165:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6145:21:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7054,
                              "nodeType": "IfStatement",
                              "src": "6141:105:21",
                              "trueBody": {
                                "id": 7053,
                                "nodeType": "Block",
                                "src": "6168:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7051,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7044,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "6186:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7050,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7047,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7045,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "6196:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303136324534333045354132",
                                                "id": 7046,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6205:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446745597956384162_by_1",
                                                  "typeString": "int_const 18446745597956384162"
                                                },
                                                "value": "0x100000162E430E5A2"
                                              },
                                              "src": "6196:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7048,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "6195:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7049,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6229:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "6195:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6186:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7052,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6186:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7059,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7057,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7055,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "6263:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783130303030303030303030",
                                    "id": 7056,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6267:13:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1099511627776_by_1",
                                      "typeString": "int_const 1099511627776"
                                    },
                                    "value": "0x10000000000"
                                  },
                                  "src": "6263:17:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7058,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6283:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6263:21:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7070,
                              "nodeType": "IfStatement",
                              "src": "6259:105:21",
                              "trueBody": {
                                "id": 7069,
                                "nodeType": "Block",
                                "src": "6286:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7067,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7060,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "6304:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7066,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7063,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7061,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "6314:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303042313732313833353531",
                                                "id": 7062,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6323:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744835832952145_by_1",
                                                  "typeString": "int_const 18446744835832952145"
                                                },
                                                "value": "0x1000000B172183551"
                                              },
                                              "src": "6314:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7064,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "6313:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7065,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6347:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "6313:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6304:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7068,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6304:45:21"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7073,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6659,
                              "src": "6388:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "hexValue": "307846463030303030303030",
                              "id": 7074,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6392:12:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1095216660480_by_1",
                                "typeString": "int_const 1095216660480"
                              },
                              "value": "0xFF00000000"
                            },
                            "src": "6388:16:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6407:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6388:20:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7207,
                        "nodeType": "IfStatement",
                        "src": "6384:969:21",
                        "trueBody": {
                          "id": 7206,
                          "nodeType": "Block",
                          "src": "6410:943:21",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7082,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7080,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7078,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "6428:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307838303030303030303030",
                                    "id": 7079,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6432:12:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_549755813888_by_1",
                                      "typeString": "int_const 549755813888"
                                    },
                                    "value": "0x8000000000"
                                  },
                                  "src": "6428:16:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7081,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6447:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6428:20:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7093,
                              "nodeType": "IfStatement",
                              "src": "6424:104:21",
                              "trueBody": {
                                "id": 7092,
                                "nodeType": "Block",
                                "src": "6450:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7090,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7083,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "6468:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7089,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7086,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7084,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "6478:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303035384239304330423439",
                                                "id": 7085,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6487:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744454771247945_by_1",
                                                  "typeString": "int_const 18446744454771247945"
                                                },
                                                "value": "0x100000058B90C0B49"
                                              },
                                              "src": "6478:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7087,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "6477:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7088,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6511:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "6477:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6468:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7091,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6468:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7098,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7096,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7094,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "6545:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307834303030303030303030",
                                    "id": 7095,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6549:12:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_274877906944_by_1",
                                      "typeString": "int_const 274877906944"
                                    },
                                    "value": "0x4000000000"
                                  },
                                  "src": "6545:16:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7097,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6564:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6545:20:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7109,
                              "nodeType": "IfStatement",
                              "src": "6541:104:21",
                              "trueBody": {
                                "id": 7108,
                                "nodeType": "Block",
                                "src": "6567:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7106,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7099,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "6585:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7105,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7102,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7100,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "6595:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303032433543383630314343",
                                                "id": 7101,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6604:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744264240398796_by_1",
                                                  "typeString": "int_const 18446744264240398796"
                                                },
                                                "value": "0x10000002C5C8601CC"
                                              },
                                              "src": "6595:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7103,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "6594:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7104,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6628:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "6594:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6585:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7107,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6585:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7114,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7112,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7110,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "6662:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307832303030303030303030",
                                    "id": 7111,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6666:12:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_137438953472_by_1",
                                      "typeString": "int_const 137438953472"
                                    },
                                    "value": "0x2000000000"
                                  },
                                  "src": "6662:16:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7113,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6681:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6662:20:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7125,
                              "nodeType": "IfStatement",
                              "src": "6658:104:21",
                              "trueBody": {
                                "id": 7124,
                                "nodeType": "Block",
                                "src": "6684:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7122,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7115,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "6702:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7121,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7118,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7116,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "6712:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303031363245343246464630",
                                                "id": 7117,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6721:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744168974974960_by_1",
                                                  "typeString": "int_const 18446744168974974960"
                                                },
                                                "value": "0x1000000162E42FFF0"
                                              },
                                              "src": "6712:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7119,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "6711:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7120,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6745:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "6711:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6702:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7123,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6702:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7128,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7126,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "6779:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307831303030303030303030",
                                    "id": 7127,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6783:12:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_68719476736_by_1",
                                      "typeString": "int_const 68719476736"
                                    },
                                    "value": "0x1000000000"
                                  },
                                  "src": "6779:16:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7129,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6798:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6779:20:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7141,
                              "nodeType": "IfStatement",
                              "src": "6775:104:21",
                              "trueBody": {
                                "id": 7140,
                                "nodeType": "Block",
                                "src": "6801:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7138,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7131,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "6819:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7137,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7134,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7132,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "6829:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030423137323137464242",
                                                "id": 7133,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6838:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744121342263227_by_1",
                                                  "typeString": "int_const 18446744121342263227"
                                                },
                                                "value": "0x10000000B17217FBB"
                                              },
                                              "src": "6829:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7135,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "6828:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7136,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6862:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "6828:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6819:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7139,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6819:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7146,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7144,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7142,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "6896:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078383030303030303030",
                                    "id": 7143,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6900:11:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_34359738368_by_1",
                                      "typeString": "int_const 34359738368"
                                    },
                                    "value": "0x800000000"
                                  },
                                  "src": "6896:15:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7145,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6914:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6896:19:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7157,
                              "nodeType": "IfStatement",
                              "src": "6892:103:21",
                              "trueBody": {
                                "id": 7156,
                                "nodeType": "Block",
                                "src": "6917:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7154,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7147,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "6935:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7153,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7150,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7148,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "6945:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030353842393042464345",
                                                "id": 7149,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6954:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744097525907406_by_1",
                                                  "typeString": "int_const 18446744097525907406"
                                                },
                                                "value": "0x1000000058B90BFCE"
                                              },
                                              "src": "6945:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7151,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "6944:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7152,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6978:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "6944:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6935:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7155,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6935:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7160,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7158,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "7012:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078343030303030303030",
                                    "id": 7159,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7016:11:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_17179869184_by_1",
                                      "typeString": "int_const 17179869184"
                                    },
                                    "value": "0x400000000"
                                  },
                                  "src": "7012:15:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7161,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7030:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7012:19:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7173,
                              "nodeType": "IfStatement",
                              "src": "7008:103:21",
                              "trueBody": {
                                "id": 7172,
                                "nodeType": "Block",
                                "src": "7033:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7170,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7163,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "7051:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7169,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7166,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7164,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "7061:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030324335433835464533",
                                                "id": 7165,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7070:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744085617729507_by_1",
                                                  "typeString": "int_const 18446744085617729507"
                                                },
                                                "value": "0x100000002C5C85FE3"
                                              },
                                              "src": "7061:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7167,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "7060:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7168,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7094:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "7060:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7051:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7171,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7051:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7178,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7176,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7174,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "7128:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078323030303030303030",
                                    "id": 7175,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7132:11:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8589934592_by_1",
                                      "typeString": "int_const 8589934592"
                                    },
                                    "value": "0x200000000"
                                  },
                                  "src": "7128:15:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7177,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7146:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7128:19:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7189,
                              "nodeType": "IfStatement",
                              "src": "7124:103:21",
                              "trueBody": {
                                "id": 7188,
                                "nodeType": "Block",
                                "src": "7149:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7186,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7179,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "7167:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7185,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7182,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7180,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "7177:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030313632453432464631",
                                                "id": 7181,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7186:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744079663640561_by_1",
                                                  "typeString": "int_const 18446744079663640561"
                                                },
                                                "value": "0x10000000162E42FF1"
                                              },
                                              "src": "7177:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7183,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "7176:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7184,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7210:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "7176:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7167:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7187,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7167:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7192,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7190,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "7244:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078313030303030303030",
                                    "id": 7191,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7248:11:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4294967296_by_1",
                                      "typeString": "int_const 4294967296"
                                    },
                                    "value": "0x100000000"
                                  },
                                  "src": "7244:15:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7262:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7244:19:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7205,
                              "nodeType": "IfStatement",
                              "src": "7240:103:21",
                              "trueBody": {
                                "id": 7204,
                                "nodeType": "Block",
                                "src": "7265:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7202,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7195,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "7283:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7201,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7198,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7196,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "7293:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030304231373231374638",
                                                "id": 7197,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7302:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744076686596088_by_1",
                                                  "typeString": "int_const 18446744076686596088"
                                                },
                                                "value": "0x100000000B17217F8"
                                              },
                                              "src": "7293:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7199,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "7292:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7200,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7326:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "7292:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7283:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7203,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7283:45:21"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7210,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7208,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6659,
                              "src": "7367:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "hexValue": "30784646303030303030",
                              "id": 7209,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7371:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4278190080_by_1",
                                "typeString": "int_const 4278190080"
                              },
                              "value": "0xFF000000"
                            },
                            "src": "7367:14:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7211,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7384:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7367:18:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7342,
                        "nodeType": "IfStatement",
                        "src": "7363:951:21",
                        "trueBody": {
                          "id": 7341,
                          "nodeType": "Block",
                          "src": "7387:927:21",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7217,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7215,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7213,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "7405:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783830303030303030",
                                    "id": 7214,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7409:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2147483648_by_1",
                                      "typeString": "int_const 2147483648"
                                    },
                                    "value": "0x80000000"
                                  },
                                  "src": "7405:14:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7216,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7422:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7405:18:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7228,
                              "nodeType": "IfStatement",
                              "src": "7401:102:21",
                              "trueBody": {
                                "id": 7227,
                                "nodeType": "Block",
                                "src": "7425:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7225,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7218,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "7443:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7224,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7221,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7219,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "7453:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303538423930424643",
                                                "id": 7220,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7462:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744075198073852_by_1",
                                                  "typeString": "int_const 18446744075198073852"
                                                },
                                                "value": "0x10000000058B90BFC"
                                              },
                                              "src": "7453:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7222,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "7452:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7223,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7486:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "7452:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7443:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7226,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7443:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7231,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7229,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "7520:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783430303030303030",
                                    "id": 7230,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7524:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1073741824_by_1",
                                      "typeString": "int_const 1073741824"
                                    },
                                    "value": "0x40000000"
                                  },
                                  "src": "7520:14:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7232,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7537:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7520:18:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7244,
                              "nodeType": "IfStatement",
                              "src": "7516:102:21",
                              "trueBody": {
                                "id": 7243,
                                "nodeType": "Block",
                                "src": "7540:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7241,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7234,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "7558:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7240,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7237,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7235,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "7568:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303243354338354645",
                                                "id": 7236,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7577:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744074453812734_by_1",
                                                  "typeString": "int_const 18446744074453812734"
                                                },
                                                "value": "0x1000000002C5C85FE"
                                              },
                                              "src": "7568:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7238,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "7567:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7239,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7601:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "7567:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7558:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7242,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7558:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7249,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7247,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7245,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "7635:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783230303030303030",
                                    "id": 7246,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7639:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_536870912_by_1",
                                      "typeString": "int_const 536870912"
                                    },
                                    "value": "0x20000000"
                                  },
                                  "src": "7635:14:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7248,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7652:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7635:18:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7260,
                              "nodeType": "IfStatement",
                              "src": "7631:102:21",
                              "trueBody": {
                                "id": 7259,
                                "nodeType": "Block",
                                "src": "7655:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7257,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7250,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "7673:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7256,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7253,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7251,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "7683:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303136324534324646",
                                                "id": 7252,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7692:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744074081682175_by_1",
                                                  "typeString": "int_const 18446744074081682175"
                                                },
                                                "value": "0x100000000162E42FF"
                                              },
                                              "src": "7683:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7254,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "7682:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7255,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7716:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "7682:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7673:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7258,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7673:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7265,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7263,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7261,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "7750:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783130303030303030",
                                    "id": 7262,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7754:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_268435456_by_1",
                                      "typeString": "int_const 268435456"
                                    },
                                    "value": "0x10000000"
                                  },
                                  "src": "7750:14:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7264,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7767:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7750:18:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7276,
                              "nodeType": "IfStatement",
                              "src": "7746:102:21",
                              "trueBody": {
                                "id": 7275,
                                "nodeType": "Block",
                                "src": "7770:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7273,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7266,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "7788:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7272,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7269,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7267,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "7798:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303042313732313746",
                                                "id": 7268,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7807:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073895616895_by_1",
                                                  "typeString": "int_const 18446744073895616895"
                                                },
                                                "value": "0x1000000000B17217F"
                                              },
                                              "src": "7798:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7270,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "7797:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7271,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7831:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "7797:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7788:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7274,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7788:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7279,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7277,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "7865:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307838303030303030",
                                    "id": 7278,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7869:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_134217728_by_1",
                                      "typeString": "int_const 134217728"
                                    },
                                    "value": "0x8000000"
                                  },
                                  "src": "7865:13:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7280,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7881:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7865:17:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7292,
                              "nodeType": "IfStatement",
                              "src": "7861:101:21",
                              "trueBody": {
                                "id": 7291,
                                "nodeType": "Block",
                                "src": "7884:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7289,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7282,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "7902:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7288,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7285,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7283,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "7912:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303035384239304330",
                                                "id": 7284,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7921:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073802584256_by_1",
                                                  "typeString": "int_const 18446744073802584256"
                                                },
                                                "value": "0x100000000058B90C0"
                                              },
                                              "src": "7912:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7286,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "7911:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7287,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7945:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "7911:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7902:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7290,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7902:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7297,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7295,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7293,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "7979:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307834303030303030",
                                    "id": 7294,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7983:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_67108864_by_1",
                                      "typeString": "int_const 67108864"
                                    },
                                    "value": "0x4000000"
                                  },
                                  "src": "7979:13:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7296,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7995:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7979:17:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7308,
                              "nodeType": "IfStatement",
                              "src": "7975:101:21",
                              "trueBody": {
                                "id": 7307,
                                "nodeType": "Block",
                                "src": "7998:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7305,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7298,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "8016:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7304,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7301,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7299,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "8026:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303032433543383630",
                                                "id": 7300,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8035:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073756067936_by_1",
                                                  "typeString": "int_const 18446744073756067936"
                                                },
                                                "value": "0x10000000002C5C860"
                                              },
                                              "src": "8026:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7302,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "8025:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7303,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8059:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "8025:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8016:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7306,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8016:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7311,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7309,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "8093:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307832303030303030",
                                    "id": 7310,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8097:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_33554432_by_1",
                                      "typeString": "int_const 33554432"
                                    },
                                    "value": "0x2000000"
                                  },
                                  "src": "8093:13:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7312,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8109:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8093:17:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7324,
                              "nodeType": "IfStatement",
                              "src": "8089:101:21",
                              "trueBody": {
                                "id": 7323,
                                "nodeType": "Block",
                                "src": "8112:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7321,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7314,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "8130:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7320,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7317,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7315,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "8140:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303031363245343330",
                                                "id": 7316,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8149:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073732809776_by_1",
                                                  "typeString": "int_const 18446744073732809776"
                                                },
                                                "value": "0x1000000000162E430"
                                              },
                                              "src": "8140:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7318,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "8139:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7319,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8173:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "8139:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8130:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7322,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8130:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7329,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7327,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7325,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "8207:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307831303030303030",
                                    "id": 7326,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8211:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_16777216_by_1",
                                      "typeString": "int_const 16777216"
                                    },
                                    "value": "0x1000000"
                                  },
                                  "src": "8207:13:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7328,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8223:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8207:17:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7340,
                              "nodeType": "IfStatement",
                              "src": "8203:101:21",
                              "trueBody": {
                                "id": 7339,
                                "nodeType": "Block",
                                "src": "8226:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7337,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7330,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "8244:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7336,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7333,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7331,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "8254:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030423137323138",
                                                "id": 7332,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8263:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073721180696_by_1",
                                                  "typeString": "int_const 18446744073721180696"
                                                },
                                                "value": "0x10000000000B17218"
                                              },
                                              "src": "8254:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7334,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "8253:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7335,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8287:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "8253:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8244:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7338,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8244:45:21"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7347,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7345,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7343,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6659,
                              "src": "8328:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "hexValue": "3078464630303030",
                              "id": 7344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8332:8:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_16711680_by_1",
                                "typeString": "int_const 16711680"
                              },
                              "value": "0xFF0000"
                            },
                            "src": "8328:12:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7346,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8343:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8328:16:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7477,
                        "nodeType": "IfStatement",
                        "src": "8324:933:21",
                        "trueBody": {
                          "id": 7476,
                          "nodeType": "Block",
                          "src": "8346:911:21",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7352,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7350,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7348,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "8364:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078383030303030",
                                    "id": 7349,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8368:8:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8388608_by_1",
                                      "typeString": "int_const 8388608"
                                    },
                                    "value": "0x800000"
                                  },
                                  "src": "8364:12:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7351,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8379:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8364:16:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7363,
                              "nodeType": "IfStatement",
                              "src": "8360:100:21",
                              "trueBody": {
                                "id": 7362,
                                "nodeType": "Block",
                                "src": "8382:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7360,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7353,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "8400:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7359,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7356,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7354,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "8410:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030353842393043",
                                                "id": 7355,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8419:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073715366156_by_1",
                                                  "typeString": "int_const 18446744073715366156"
                                                },
                                                "value": "0x1000000000058B90C"
                                              },
                                              "src": "8410:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7357,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "8409:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7358,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8443:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "8409:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8400:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7361,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8400:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7366,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7364,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "8477:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078343030303030",
                                    "id": 7365,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8481:8:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4194304_by_1",
                                      "typeString": "int_const 4194304"
                                    },
                                    "value": "0x400000"
                                  },
                                  "src": "8477:12:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7367,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8492:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8477:16:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7379,
                              "nodeType": "IfStatement",
                              "src": "8473:100:21",
                              "trueBody": {
                                "id": 7378,
                                "nodeType": "Block",
                                "src": "8495:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7376,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7369,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "8513:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7375,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7372,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7370,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "8523:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030324335433836",
                                                "id": 7371,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8532:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073712458886_by_1",
                                                  "typeString": "int_const 18446744073712458886"
                                                },
                                                "value": "0x100000000002C5C86"
                                              },
                                              "src": "8523:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7373,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "8522:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7374,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8556:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "8522:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8513:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7377,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8513:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7384,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7382,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7380,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "8590:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078323030303030",
                                    "id": 7381,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8594:8:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2097152_by_1",
                                      "typeString": "int_const 2097152"
                                    },
                                    "value": "0x200000"
                                  },
                                  "src": "8590:12:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7383,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8605:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8590:16:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7395,
                              "nodeType": "IfStatement",
                              "src": "8586:100:21",
                              "trueBody": {
                                "id": 7394,
                                "nodeType": "Block",
                                "src": "8608:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7392,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7385,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "8626:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7391,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7388,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7386,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "8636:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030313632453433",
                                                "id": 7387,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8645:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073711005251_by_1",
                                                  "typeString": "int_const 18446744073711005251"
                                                },
                                                "value": "0x10000000000162E43"
                                              },
                                              "src": "8636:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7389,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "8635:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7390,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8669:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "8635:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8626:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7393,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8626:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7400,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7398,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7396,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "8703:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078313030303030",
                                    "id": 7397,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8707:8:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1048576_by_1",
                                      "typeString": "int_const 1048576"
                                    },
                                    "value": "0x100000"
                                  },
                                  "src": "8703:12:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7399,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8718:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8703:16:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7411,
                              "nodeType": "IfStatement",
                              "src": "8699:100:21",
                              "trueBody": {
                                "id": 7410,
                                "nodeType": "Block",
                                "src": "8721:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7408,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7401,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "8739:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7407,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7404,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7402,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "8749:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030304231373231",
                                                "id": 7403,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8758:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073710278433_by_1",
                                                  "typeString": "int_const 18446744073710278433"
                                                },
                                                "value": "0x100000000000B1721"
                                              },
                                              "src": "8749:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7405,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "8748:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7406,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8782:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "8748:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8739:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7409,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8739:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7414,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7412,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "8816:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783830303030",
                                    "id": 7413,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8820:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_524288_by_1",
                                      "typeString": "int_const 524288"
                                    },
                                    "value": "0x80000"
                                  },
                                  "src": "8816:11:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7415,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8830:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8816:15:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7427,
                              "nodeType": "IfStatement",
                              "src": "8812:99:21",
                              "trueBody": {
                                "id": 7426,
                                "nodeType": "Block",
                                "src": "8833:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7424,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7417,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "8851:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7423,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7420,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7418,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "8861:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303538423931",
                                                "id": 7419,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8870:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709915025_by_1",
                                                  "typeString": "int_const 18446744073709915025"
                                                },
                                                "value": "0x10000000000058B91"
                                              },
                                              "src": "8861:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7421,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "8860:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7422,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8894:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "8860:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8851:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7425,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8851:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7432,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7430,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7428,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "8928:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783430303030",
                                    "id": 7429,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8932:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_262144_by_1",
                                      "typeString": "int_const 262144"
                                    },
                                    "value": "0x40000"
                                  },
                                  "src": "8928:11:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7431,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8942:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8928:15:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7443,
                              "nodeType": "IfStatement",
                              "src": "8924:99:21",
                              "trueBody": {
                                "id": 7442,
                                "nodeType": "Block",
                                "src": "8945:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7440,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7433,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "8963:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7439,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7436,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7434,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "8973:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303243354338",
                                                "id": 7435,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8982:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709733320_by_1",
                                                  "typeString": "int_const 18446744073709733320"
                                                },
                                                "value": "0x1000000000002C5C8"
                                              },
                                              "src": "8973:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7437,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "8972:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7438,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9006:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "8972:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8963:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7441,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8963:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7446,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7444,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "9040:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783230303030",
                                    "id": 7445,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9044:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_131072_by_1",
                                      "typeString": "int_const 131072"
                                    },
                                    "value": "0x20000"
                                  },
                                  "src": "9040:11:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7447,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9054:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "9040:15:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7459,
                              "nodeType": "IfStatement",
                              "src": "9036:99:21",
                              "trueBody": {
                                "id": 7458,
                                "nodeType": "Block",
                                "src": "9057:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7456,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7449,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "9075:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7455,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7452,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7450,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "9085:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303136324534",
                                                "id": 7451,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9094:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709642468_by_1",
                                                  "typeString": "int_const 18446744073709642468"
                                                },
                                                "value": "0x100000000000162E4"
                                              },
                                              "src": "9085:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7453,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "9084:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7454,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9118:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "9084:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9075:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7457,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9075:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7462,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7460,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "9152:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783130303030",
                                    "id": 7461,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9156:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_65536_by_1",
                                      "typeString": "int_const 65536"
                                    },
                                    "value": "0x10000"
                                  },
                                  "src": "9152:11:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7463,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9166:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "9152:15:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7475,
                              "nodeType": "IfStatement",
                              "src": "9148:99:21",
                              "trueBody": {
                                "id": 7474,
                                "nodeType": "Block",
                                "src": "9169:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7472,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7465,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "9187:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7471,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7468,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7466,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "9197:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303042313732",
                                                "id": 7467,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9206:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709597042_by_1",
                                                  "typeString": "int_const 18446744073709597042"
                                                },
                                                "value": "0x1000000000000B172"
                                              },
                                              "src": "9197:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7469,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "9196:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7470,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9230:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "9196:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9187:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7473,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9187:45:21"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7478,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6659,
                              "src": "9271:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "hexValue": "307846463030",
                              "id": 7479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9275:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_65280_by_1",
                                "typeString": "int_const 65280"
                              },
                              "value": "0xFF00"
                            },
                            "src": "9271:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9284:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9271:14:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7612,
                        "nodeType": "IfStatement",
                        "src": "9267:915:21",
                        "trueBody": {
                          "id": 7611,
                          "nodeType": "Block",
                          "src": "9287:895:21",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7487,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7485,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7483,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "9305:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307838303030",
                                    "id": 7484,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9309:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_32768_by_1",
                                      "typeString": "int_const 32768"
                                    },
                                    "value": "0x8000"
                                  },
                                  "src": "9305:10:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7486,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9318:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "9305:14:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7498,
                              "nodeType": "IfStatement",
                              "src": "9301:98:21",
                              "trueBody": {
                                "id": 7497,
                                "nodeType": "Block",
                                "src": "9321:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7495,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7488,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "9339:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7494,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7491,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7489,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "9349:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303035384239",
                                                "id": 7490,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9358:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709574329_by_1",
                                                  "typeString": "int_const 18446744073709574329"
                                                },
                                                "value": "0x100000000000058B9"
                                              },
                                              "src": "9349:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7492,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "9348:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7493,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9382:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "9348:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9339:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7496,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9339:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7501,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7499,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "9416:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307834303030",
                                    "id": 7500,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9420:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_16384_by_1",
                                      "typeString": "int_const 16384"
                                    },
                                    "value": "0x4000"
                                  },
                                  "src": "9416:10:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7502,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9429:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "9416:14:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7514,
                              "nodeType": "IfStatement",
                              "src": "9412:98:21",
                              "trueBody": {
                                "id": 7513,
                                "nodeType": "Block",
                                "src": "9432:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7511,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7504,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "9450:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7510,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7507,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7505,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "9460:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303032433544",
                                                "id": 7506,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9469:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709562973_by_1",
                                                  "typeString": "int_const 18446744073709562973"
                                                },
                                                "value": "0x10000000000002C5D"
                                              },
                                              "src": "9460:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7508,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "9459:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7509,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9493:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "9459:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9450:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7512,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9450:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7517,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7515,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "9527:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307832303030",
                                    "id": 7516,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9531:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8192_by_1",
                                      "typeString": "int_const 8192"
                                    },
                                    "value": "0x2000"
                                  },
                                  "src": "9527:10:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7518,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9540:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "9527:14:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7530,
                              "nodeType": "IfStatement",
                              "src": "9523:98:21",
                              "trueBody": {
                                "id": 7529,
                                "nodeType": "Block",
                                "src": "9543:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7527,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7520,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "9561:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7526,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7523,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7521,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "9571:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303031363245",
                                                "id": 7522,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9580:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709557294_by_1",
                                                  "typeString": "int_const 18446744073709557294"
                                                },
                                                "value": "0x1000000000000162E"
                                              },
                                              "src": "9571:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7524,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "9570:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7525,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9604:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "9570:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9561:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7528,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9561:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7535,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7533,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7531,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "9638:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307831303030",
                                    "id": 7532,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9642:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4096_by_1",
                                      "typeString": "int_const 4096"
                                    },
                                    "value": "0x1000"
                                  },
                                  "src": "9638:10:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7534,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9651:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "9638:14:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7546,
                              "nodeType": "IfStatement",
                              "src": "9634:98:21",
                              "trueBody": {
                                "id": 7545,
                                "nodeType": "Block",
                                "src": "9654:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7543,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7536,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "9672:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7542,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7539,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7537,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "9682:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303030423137",
                                                "id": 7538,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9691:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709554455_by_1",
                                                  "typeString": "int_const 18446744073709554455"
                                                },
                                                "value": "0x10000000000000B17"
                                              },
                                              "src": "9682:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7540,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "9681:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7541,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9715:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "9681:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9672:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7544,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9672:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7549,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7547,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "9749:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078383030",
                                    "id": 7548,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9753:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2048_by_1",
                                      "typeString": "int_const 2048"
                                    },
                                    "value": "0x800"
                                  },
                                  "src": "9749:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7550,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9761:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "9749:13:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7562,
                              "nodeType": "IfStatement",
                              "src": "9745:97:21",
                              "trueBody": {
                                "id": 7561,
                                "nodeType": "Block",
                                "src": "9764:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7559,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7552,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "9782:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7558,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7555,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7553,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "9792:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303030353843",
                                                "id": 7554,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9801:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709553036_by_1",
                                                  "typeString": "int_const 18446744073709553036"
                                                },
                                                "value": "0x1000000000000058C"
                                              },
                                              "src": "9792:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7556,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "9791:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7557,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9825:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "9791:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9782:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7560,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9782:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7567,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7565,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7563,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "9859:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078343030",
                                    "id": 7564,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9863:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1024_by_1",
                                      "typeString": "int_const 1024"
                                    },
                                    "value": "0x400"
                                  },
                                  "src": "9859:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7566,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9871:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "9859:13:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7578,
                              "nodeType": "IfStatement",
                              "src": "9855:97:21",
                              "trueBody": {
                                "id": 7577,
                                "nodeType": "Block",
                                "src": "9874:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7575,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7568,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "9892:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7574,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7571,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7569,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "9902:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303030324336",
                                                "id": 7570,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9911:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709552326_by_1",
                                                  "typeString": "int_const 18446744073709552326"
                                                },
                                                "value": "0x100000000000002C6"
                                              },
                                              "src": "9902:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7572,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "9901:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7573,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9935:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "9901:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9892:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7576,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9892:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7583,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7581,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7579,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "9969:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078323030",
                                    "id": 7580,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9973:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_512_by_1",
                                      "typeString": "int_const 512"
                                    },
                                    "value": "0x200"
                                  },
                                  "src": "9969:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7582,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9981:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "9969:13:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7594,
                              "nodeType": "IfStatement",
                              "src": "9965:97:21",
                              "trueBody": {
                                "id": 7593,
                                "nodeType": "Block",
                                "src": "9984:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7591,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7584,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "10002:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7590,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7587,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7585,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "10012:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303030313633",
                                                "id": 7586,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10021:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709551971_by_1",
                                                  "typeString": "int_const 18446744073709551971"
                                                },
                                                "value": "0x10000000000000163"
                                              },
                                              "src": "10012:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7588,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "10011:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7589,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10045:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "10011:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10002:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7592,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10002:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7599,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7597,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7595,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "10079:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "3078313030",
                                    "id": 7596,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10083:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_256_by_1",
                                      "typeString": "int_const 256"
                                    },
                                    "value": "0x100"
                                  },
                                  "src": "10079:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7598,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10091:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10079:13:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7610,
                              "nodeType": "IfStatement",
                              "src": "10075:97:21",
                              "trueBody": {
                                "id": 7609,
                                "nodeType": "Block",
                                "src": "10094:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7607,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7600,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "10112:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7606,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7603,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7601,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "10122:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303030304231",
                                                "id": 7602,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10131:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709551793_by_1",
                                                  "typeString": "int_const 18446744073709551793"
                                                },
                                                "value": "0x100000000000000B1"
                                              },
                                              "src": "10122:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7604,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "10121:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7605,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10155:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "10121:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10112:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7608,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10112:45:21"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7613,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6659,
                              "src": "10196:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "hexValue": "30784646",
                              "id": 7614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10200:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_255_by_1",
                                "typeString": "int_const 255"
                              },
                              "value": "0xFF"
                            },
                            "src": "10196:8:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10207:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10196:12:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7747,
                        "nodeType": "IfStatement",
                        "src": "10192:897:21",
                        "trueBody": {
                          "id": 7746,
                          "nodeType": "Block",
                          "src": "10210:879:21",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7622,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7620,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7618,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "10228:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783830",
                                    "id": 7619,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10232:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "0x80"
                                  },
                                  "src": "10228:8:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7621,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10239:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10228:12:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7633,
                              "nodeType": "IfStatement",
                              "src": "10224:96:21",
                              "trueBody": {
                                "id": 7632,
                                "nodeType": "Block",
                                "src": "10242:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7630,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7623,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "10260:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7629,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7626,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7624,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "10270:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303030303539",
                                                "id": 7625,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10279:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709551705_by_1",
                                                  "typeString": "int_const 18446744073709551705"
                                                },
                                                "value": "0x10000000000000059"
                                              },
                                              "src": "10270:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7627,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "10269:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7628,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10303:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "10269:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10260:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7631,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10260:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7638,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7636,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7634,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "10337:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783430",
                                    "id": 7635,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10341:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_64_by_1",
                                      "typeString": "int_const 64"
                                    },
                                    "value": "0x40"
                                  },
                                  "src": "10337:8:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7637,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10348:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10337:12:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7649,
                              "nodeType": "IfStatement",
                              "src": "10333:96:21",
                              "trueBody": {
                                "id": 7648,
                                "nodeType": "Block",
                                "src": "10351:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7646,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7639,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "10369:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7645,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7642,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7640,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "10379:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303030303243",
                                                "id": 7641,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10388:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709551660_by_1",
                                                  "typeString": "int_const 18446744073709551660"
                                                },
                                                "value": "0x1000000000000002C"
                                              },
                                              "src": "10379:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7643,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "10378:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7644,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10412:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "10378:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10369:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7647,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10369:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7654,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7652,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7650,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "10446:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783230",
                                    "id": 7651,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10450:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    },
                                    "value": "0x20"
                                  },
                                  "src": "10446:8:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7653,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10457:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10446:12:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7665,
                              "nodeType": "IfStatement",
                              "src": "10442:96:21",
                              "trueBody": {
                                "id": 7664,
                                "nodeType": "Block",
                                "src": "10460:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7662,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7655,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "10478:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7661,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7658,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7656,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "10488:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303030303136",
                                                "id": 7657,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10497:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709551638_by_1",
                                                  "typeString": "int_const 18446744073709551638"
                                                },
                                                "value": "0x10000000000000016"
                                              },
                                              "src": "10488:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7659,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "10487:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7660,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10521:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "10487:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10478:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7663,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10478:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7668,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7666,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "10555:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783130",
                                    "id": 7667,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10559:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_16_by_1",
                                      "typeString": "int_const 16"
                                    },
                                    "value": "0x10"
                                  },
                                  "src": "10555:8:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7669,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10566:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10555:12:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7681,
                              "nodeType": "IfStatement",
                              "src": "10551:96:21",
                              "trueBody": {
                                "id": 7680,
                                "nodeType": "Block",
                                "src": "10569:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7678,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7671,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "10587:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7677,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7674,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7672,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "10597:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303030303042",
                                                "id": 7673,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10606:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709551627_by_1",
                                                  "typeString": "int_const 18446744073709551627"
                                                },
                                                "value": "0x1000000000000000B"
                                              },
                                              "src": "10597:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7675,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "10596:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7676,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10630:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "10596:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10587:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7679,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10587:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7686,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7684,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7682,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "10664:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307838",
                                    "id": 7683,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10668:3:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    "value": "0x8"
                                  },
                                  "src": "10664:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7685,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10674:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10664:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7697,
                              "nodeType": "IfStatement",
                              "src": "10660:95:21",
                              "trueBody": {
                                "id": 7696,
                                "nodeType": "Block",
                                "src": "10677:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7694,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7687,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "10695:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7693,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7690,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7688,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "10705:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303030303036",
                                                "id": 7689,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10714:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709551622_by_1",
                                                  "typeString": "int_const 18446744073709551622"
                                                },
                                                "value": "0x10000000000000006"
                                              },
                                              "src": "10705:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7691,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "10704:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7692,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10738:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "10704:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10695:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7695,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10695:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7702,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7700,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7698,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "10772:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307834",
                                    "id": 7699,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10776:3:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "0x4"
                                  },
                                  "src": "10772:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7701,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10782:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10772:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7713,
                              "nodeType": "IfStatement",
                              "src": "10768:95:21",
                              "trueBody": {
                                "id": 7712,
                                "nodeType": "Block",
                                "src": "10785:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7710,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7703,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "10803:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7709,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7706,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7704,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "10813:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303030303033",
                                                "id": 7705,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10822:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709551619_by_1",
                                                  "typeString": "int_const 18446744073709551619"
                                                },
                                                "value": "0x10000000000000003"
                                              },
                                              "src": "10813:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7707,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "10812:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7708,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10846:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "10812:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10803:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7711,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10803:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7718,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7716,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7714,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "10880:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307832",
                                    "id": 7715,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10884:3:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "0x2"
                                  },
                                  "src": "10880:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7717,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10890:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10880:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7729,
                              "nodeType": "IfStatement",
                              "src": "10876:95:21",
                              "trueBody": {
                                "id": 7728,
                                "nodeType": "Block",
                                "src": "10893:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7726,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7719,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "10911:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7725,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7722,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7720,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "10921:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303030303031",
                                                "id": 7721,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10930:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709551617_by_1",
                                                  "typeString": "int_const 18446744073709551617"
                                                },
                                                "value": "0x10000000000000001"
                                              },
                                              "src": "10921:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7723,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "10920:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7724,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10954:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "10920:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10911:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7727,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10911:45:21"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7732,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7730,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6659,
                                    "src": "10988:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307831",
                                    "id": 7731,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10992:3:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "0x1"
                                  },
                                  "src": "10988:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7733,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10998:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10988:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7745,
                              "nodeType": "IfStatement",
                              "src": "10984:95:21",
                              "trueBody": {
                                "id": 7744,
                                "nodeType": "Block",
                                "src": "11001:78:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7742,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7735,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6662,
                                        "src": "11019:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7741,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7738,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7736,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6662,
                                                "src": "11029:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "*",
                                              "rightExpression": {
                                                "hexValue": "30783130303030303030303030303030303031",
                                                "id": 7737,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "11038:19:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_18446744073709551617_by_1",
                                                  "typeString": "int_const 18446744073709551617"
                                                },
                                                "value": "0x10000000000000001"
                                              },
                                              "src": "11029:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7739,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "11028:30:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "3634",
                                          "id": 7740,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11062:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "src": "11028:36:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11019:45:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7743,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11019:45:21"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 7750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7748,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6662,
                            "src": "11669:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "id": 7749,
                            "name": "UNIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6648,
                            "src": "11679:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11669:14:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7751,
                        "nodeType": "ExpressionStatement",
                        "src": "11669:14:21"
                      },
                      {
                        "expression": {
                          "id": 7760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7752,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6662,
                            "src": "11693:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "313931",
                                  "id": 7753,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11705:3:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_191_by_1",
                                    "typeString": "int_const 191"
                                  },
                                  "value": "191"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7756,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7754,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6659,
                                        "src": "11712:1:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "3634",
                                        "id": 7755,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11717:2:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_64_by_1",
                                          "typeString": "int_const 64"
                                        },
                                        "value": "64"
                                      },
                                      "src": "11712:7:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7757,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "11711:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11705:15:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 7759,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "11704:17:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11693:28:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7761,
                        "nodeType": "ExpressionStatement",
                        "src": "11693:28:21"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 6657,
                "nodeType": "StructuredDocumentation",
                "src": "2191:387:21",
                "text": "@notice Calculates the binary exponent of x using the binary fraction method.\n @dev Has to use 192.64-bit fixed-point numbers. See https://ethereum.stackexchange.com/a/96594/24693.\n @param x The exponent as an unsigned 192.64-bit fixed-point number.\n @return result The result as an unsigned 60.18-decimal fixed-point number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 7764,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "exp2",
              "nameLocation": "2587:4:21",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 6660,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 6659,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2600:1:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 7764,
                    "src": "2592:9:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 6658,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2592:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2591:11:21"
              },
              "returnParameters": {
                "id": 6663,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 6662,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2625:6:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 7764,
                    "src": "2617:14:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 6661,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2617:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2616:16:21"
              },
              "scope": 8329,
              "src": "2578:9152:21",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 7780,
                "nodeType": "Block",
                "src": "12736:1297:21",
                "statements": [
                  {
                    "AST": {
                      "nativeSrc": "12780:144:21",
                      "nodeType": "YulBlock",
                      "src": "12780:144:21",
                      "statements": [
                        {
                          "nativeSrc": "12790:63:21",
                          "nodeType": "YulVariableDeclaration",
                          "src": "12790:63:21",
                          "value": {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "12808:1:21",
                                "nodeType": "YulLiteral",
                                "src": "12808:1:21",
                                "type": "",
                                "value": "7"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nativeSrc": "12814:1:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "12814:1:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "12817:34:21",
                                    "nodeType": "YulLiteral",
                                    "src": "12817:34:21",
                                    "type": "",
                                    "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nativeSrc": "12811:2:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "12811:2:21"
                                },
                                "nativeSrc": "12811:41:21",
                                "nodeType": "YulFunctionCall",
                                "src": "12811:41:21"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "12804:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "12804:3:21"
                            },
                            "nativeSrc": "12804:49:21",
                            "nodeType": "YulFunctionCall",
                            "src": "12804:49:21"
                          },
                          "variables": [
                            {
                              "name": "factor",
                              "nativeSrc": "12794:6:21",
                              "nodeType": "YulTypedName",
                              "src": "12794:6:21",
                              "type": ""
                            }
                          ]
                        },
                        {
                          "nativeSrc": "12862:19:21",
                          "nodeType": "YulAssignment",
                          "src": "12862:19:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "factor",
                                "nativeSrc": "12871:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "12871:6:21"
                              },
                              {
                                "name": "x",
                                "nativeSrc": "12879:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "12879:1:21"
                              }
                            ],
                            "functionName": {
                              "name": "shr",
                              "nativeSrc": "12867:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "12867:3:21"
                            },
                            "nativeSrc": "12867:14:21",
                            "nodeType": "YulFunctionCall",
                            "src": "12867:14:21"
                          },
                          "variableNames": [
                            {
                              "name": "x",
                              "nativeSrc": "12862:1:21",
                              "nodeType": "YulIdentifier",
                              "src": "12862:1:21"
                            }
                          ]
                        },
                        {
                          "nativeSrc": "12890:28:21",
                          "nodeType": "YulAssignment",
                          "src": "12890:28:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "result",
                                "nativeSrc": "12903:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "12903:6:21"
                              },
                              {
                                "name": "factor",
                                "nativeSrc": "12911:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "12911:6:21"
                              }
                            ],
                            "functionName": {
                              "name": "or",
                              "nativeSrc": "12900:2:21",
                              "nodeType": "YulIdentifier",
                              "src": "12900:2:21"
                            },
                            "nativeSrc": "12900:18:21",
                            "nodeType": "YulFunctionCall",
                            "src": "12900:18:21"
                          },
                          "variableNames": [
                            {
                              "name": "result",
                              "nativeSrc": "12890:6:21",
                              "nodeType": "YulIdentifier",
                              "src": "12890:6:21"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12890:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12903:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12814:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12862:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12879:1:21",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 7772,
                    "nodeType": "InlineAssembly",
                    "src": "12755:169:21"
                  },
                  {
                    "AST": {
                      "nativeSrc": "12966:128:21",
                      "nodeType": "YulBlock",
                      "src": "12966:128:21",
                      "statements": [
                        {
                          "nativeSrc": "12976:47:21",
                          "nodeType": "YulVariableDeclaration",
                          "src": "12976:47:21",
                          "value": {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "12994:1:21",
                                "nodeType": "YulLiteral",
                                "src": "12994:1:21",
                                "type": "",
                                "value": "6"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nativeSrc": "13000:1:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "13000:1:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "13003:18:21",
                                    "nodeType": "YulLiteral",
                                    "src": "13003:18:21",
                                    "type": "",
                                    "value": "0xFFFFFFFFFFFFFFFF"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nativeSrc": "12997:2:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "12997:2:21"
                                },
                                "nativeSrc": "12997:25:21",
                                "nodeType": "YulFunctionCall",
                                "src": "12997:25:21"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "12990:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "12990:3:21"
                            },
                            "nativeSrc": "12990:33:21",
                            "nodeType": "YulFunctionCall",
                            "src": "12990:33:21"
                          },
                          "variables": [
                            {
                              "name": "factor",
                              "nativeSrc": "12980:6:21",
                              "nodeType": "YulTypedName",
                              "src": "12980:6:21",
                              "type": ""
                            }
                          ]
                        },
                        {
                          "nativeSrc": "13032:19:21",
                          "nodeType": "YulAssignment",
                          "src": "13032:19:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "factor",
                                "nativeSrc": "13041:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13041:6:21"
                              },
                              {
                                "name": "x",
                                "nativeSrc": "13049:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "13049:1:21"
                              }
                            ],
                            "functionName": {
                              "name": "shr",
                              "nativeSrc": "13037:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "13037:3:21"
                            },
                            "nativeSrc": "13037:14:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13037:14:21"
                          },
                          "variableNames": [
                            {
                              "name": "x",
                              "nativeSrc": "13032:1:21",
                              "nodeType": "YulIdentifier",
                              "src": "13032:1:21"
                            }
                          ]
                        },
                        {
                          "nativeSrc": "13060:28:21",
                          "nodeType": "YulAssignment",
                          "src": "13060:28:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "result",
                                "nativeSrc": "13073:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13073:6:21"
                              },
                              {
                                "name": "factor",
                                "nativeSrc": "13081:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13081:6:21"
                              }
                            ],
                            "functionName": {
                              "name": "or",
                              "nativeSrc": "13070:2:21",
                              "nodeType": "YulIdentifier",
                              "src": "13070:2:21"
                            },
                            "nativeSrc": "13070:18:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13070:18:21"
                          },
                          "variableNames": [
                            {
                              "name": "result",
                              "nativeSrc": "13060:6:21",
                              "nodeType": "YulIdentifier",
                              "src": "13060:6:21"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13060:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13073:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13000:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13032:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13049:1:21",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 7773,
                    "nodeType": "InlineAssembly",
                    "src": "12941:153:21"
                  },
                  {
                    "AST": {
                      "nativeSrc": "13136:120:21",
                      "nodeType": "YulBlock",
                      "src": "13136:120:21",
                      "statements": [
                        {
                          "nativeSrc": "13146:39:21",
                          "nodeType": "YulVariableDeclaration",
                          "src": "13146:39:21",
                          "value": {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "13164:1:21",
                                "nodeType": "YulLiteral",
                                "src": "13164:1:21",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nativeSrc": "13170:1:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "13170:1:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "13173:10:21",
                                    "nodeType": "YulLiteral",
                                    "src": "13173:10:21",
                                    "type": "",
                                    "value": "0xFFFFFFFF"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nativeSrc": "13167:2:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "13167:2:21"
                                },
                                "nativeSrc": "13167:17:21",
                                "nodeType": "YulFunctionCall",
                                "src": "13167:17:21"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "13160:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "13160:3:21"
                            },
                            "nativeSrc": "13160:25:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13160:25:21"
                          },
                          "variables": [
                            {
                              "name": "factor",
                              "nativeSrc": "13150:6:21",
                              "nodeType": "YulTypedName",
                              "src": "13150:6:21",
                              "type": ""
                            }
                          ]
                        },
                        {
                          "nativeSrc": "13194:19:21",
                          "nodeType": "YulAssignment",
                          "src": "13194:19:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "factor",
                                "nativeSrc": "13203:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13203:6:21"
                              },
                              {
                                "name": "x",
                                "nativeSrc": "13211:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "13211:1:21"
                              }
                            ],
                            "functionName": {
                              "name": "shr",
                              "nativeSrc": "13199:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "13199:3:21"
                            },
                            "nativeSrc": "13199:14:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13199:14:21"
                          },
                          "variableNames": [
                            {
                              "name": "x",
                              "nativeSrc": "13194:1:21",
                              "nodeType": "YulIdentifier",
                              "src": "13194:1:21"
                            }
                          ]
                        },
                        {
                          "nativeSrc": "13222:28:21",
                          "nodeType": "YulAssignment",
                          "src": "13222:28:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "result",
                                "nativeSrc": "13235:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13235:6:21"
                              },
                              {
                                "name": "factor",
                                "nativeSrc": "13243:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13243:6:21"
                              }
                            ],
                            "functionName": {
                              "name": "or",
                              "nativeSrc": "13232:2:21",
                              "nodeType": "YulIdentifier",
                              "src": "13232:2:21"
                            },
                            "nativeSrc": "13232:18:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13232:18:21"
                          },
                          "variableNames": [
                            {
                              "name": "result",
                              "nativeSrc": "13222:6:21",
                              "nodeType": "YulIdentifier",
                              "src": "13222:6:21"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13222:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13235:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13170:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13194:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13211:1:21",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 7774,
                    "nodeType": "InlineAssembly",
                    "src": "13111:145:21"
                  },
                  {
                    "AST": {
                      "nativeSrc": "13298:116:21",
                      "nodeType": "YulBlock",
                      "src": "13298:116:21",
                      "statements": [
                        {
                          "nativeSrc": "13308:35:21",
                          "nodeType": "YulVariableDeclaration",
                          "src": "13308:35:21",
                          "value": {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "13326:1:21",
                                "nodeType": "YulLiteral",
                                "src": "13326:1:21",
                                "type": "",
                                "value": "4"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nativeSrc": "13332:1:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "13332:1:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "13335:6:21",
                                    "nodeType": "YulLiteral",
                                    "src": "13335:6:21",
                                    "type": "",
                                    "value": "0xFFFF"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nativeSrc": "13329:2:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "13329:2:21"
                                },
                                "nativeSrc": "13329:13:21",
                                "nodeType": "YulFunctionCall",
                                "src": "13329:13:21"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "13322:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "13322:3:21"
                            },
                            "nativeSrc": "13322:21:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13322:21:21"
                          },
                          "variables": [
                            {
                              "name": "factor",
                              "nativeSrc": "13312:6:21",
                              "nodeType": "YulTypedName",
                              "src": "13312:6:21",
                              "type": ""
                            }
                          ]
                        },
                        {
                          "nativeSrc": "13352:19:21",
                          "nodeType": "YulAssignment",
                          "src": "13352:19:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "factor",
                                "nativeSrc": "13361:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13361:6:21"
                              },
                              {
                                "name": "x",
                                "nativeSrc": "13369:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "13369:1:21"
                              }
                            ],
                            "functionName": {
                              "name": "shr",
                              "nativeSrc": "13357:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "13357:3:21"
                            },
                            "nativeSrc": "13357:14:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13357:14:21"
                          },
                          "variableNames": [
                            {
                              "name": "x",
                              "nativeSrc": "13352:1:21",
                              "nodeType": "YulIdentifier",
                              "src": "13352:1:21"
                            }
                          ]
                        },
                        {
                          "nativeSrc": "13380:28:21",
                          "nodeType": "YulAssignment",
                          "src": "13380:28:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "result",
                                "nativeSrc": "13393:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13393:6:21"
                              },
                              {
                                "name": "factor",
                                "nativeSrc": "13401:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13401:6:21"
                              }
                            ],
                            "functionName": {
                              "name": "or",
                              "nativeSrc": "13390:2:21",
                              "nodeType": "YulIdentifier",
                              "src": "13390:2:21"
                            },
                            "nativeSrc": "13390:18:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13390:18:21"
                          },
                          "variableNames": [
                            {
                              "name": "result",
                              "nativeSrc": "13380:6:21",
                              "nodeType": "YulIdentifier",
                              "src": "13380:6:21"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13380:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13393:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13332:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13352:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13369:1:21",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 7775,
                    "nodeType": "InlineAssembly",
                    "src": "13273:141:21"
                  },
                  {
                    "AST": {
                      "nativeSrc": "13455:114:21",
                      "nodeType": "YulBlock",
                      "src": "13455:114:21",
                      "statements": [
                        {
                          "nativeSrc": "13465:33:21",
                          "nodeType": "YulVariableDeclaration",
                          "src": "13465:33:21",
                          "value": {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "13483:1:21",
                                "nodeType": "YulLiteral",
                                "src": "13483:1:21",
                                "type": "",
                                "value": "3"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nativeSrc": "13489:1:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "13489:1:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "13492:4:21",
                                    "nodeType": "YulLiteral",
                                    "src": "13492:4:21",
                                    "type": "",
                                    "value": "0xFF"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nativeSrc": "13486:2:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "13486:2:21"
                                },
                                "nativeSrc": "13486:11:21",
                                "nodeType": "YulFunctionCall",
                                "src": "13486:11:21"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "13479:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "13479:3:21"
                            },
                            "nativeSrc": "13479:19:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13479:19:21"
                          },
                          "variables": [
                            {
                              "name": "factor",
                              "nativeSrc": "13469:6:21",
                              "nodeType": "YulTypedName",
                              "src": "13469:6:21",
                              "type": ""
                            }
                          ]
                        },
                        {
                          "nativeSrc": "13507:19:21",
                          "nodeType": "YulAssignment",
                          "src": "13507:19:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "factor",
                                "nativeSrc": "13516:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13516:6:21"
                              },
                              {
                                "name": "x",
                                "nativeSrc": "13524:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "13524:1:21"
                              }
                            ],
                            "functionName": {
                              "name": "shr",
                              "nativeSrc": "13512:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "13512:3:21"
                            },
                            "nativeSrc": "13512:14:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13512:14:21"
                          },
                          "variableNames": [
                            {
                              "name": "x",
                              "nativeSrc": "13507:1:21",
                              "nodeType": "YulIdentifier",
                              "src": "13507:1:21"
                            }
                          ]
                        },
                        {
                          "nativeSrc": "13535:28:21",
                          "nodeType": "YulAssignment",
                          "src": "13535:28:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "result",
                                "nativeSrc": "13548:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13548:6:21"
                              },
                              {
                                "name": "factor",
                                "nativeSrc": "13556:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13556:6:21"
                              }
                            ],
                            "functionName": {
                              "name": "or",
                              "nativeSrc": "13545:2:21",
                              "nodeType": "YulIdentifier",
                              "src": "13545:2:21"
                            },
                            "nativeSrc": "13545:18:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13545:18:21"
                          },
                          "variableNames": [
                            {
                              "name": "result",
                              "nativeSrc": "13535:6:21",
                              "nodeType": "YulIdentifier",
                              "src": "13535:6:21"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13535:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13548:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13489:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13507:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13524:1:21",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 7776,
                    "nodeType": "InlineAssembly",
                    "src": "13430:139:21"
                  },
                  {
                    "AST": {
                      "nativeSrc": "13610:113:21",
                      "nodeType": "YulBlock",
                      "src": "13610:113:21",
                      "statements": [
                        {
                          "nativeSrc": "13620:32:21",
                          "nodeType": "YulVariableDeclaration",
                          "src": "13620:32:21",
                          "value": {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "13638:1:21",
                                "nodeType": "YulLiteral",
                                "src": "13638:1:21",
                                "type": "",
                                "value": "2"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nativeSrc": "13644:1:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "13644:1:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "13647:3:21",
                                    "nodeType": "YulLiteral",
                                    "src": "13647:3:21",
                                    "type": "",
                                    "value": "0xF"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nativeSrc": "13641:2:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "13641:2:21"
                                },
                                "nativeSrc": "13641:10:21",
                                "nodeType": "YulFunctionCall",
                                "src": "13641:10:21"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "13634:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "13634:3:21"
                            },
                            "nativeSrc": "13634:18:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13634:18:21"
                          },
                          "variables": [
                            {
                              "name": "factor",
                              "nativeSrc": "13624:6:21",
                              "nodeType": "YulTypedName",
                              "src": "13624:6:21",
                              "type": ""
                            }
                          ]
                        },
                        {
                          "nativeSrc": "13661:19:21",
                          "nodeType": "YulAssignment",
                          "src": "13661:19:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "factor",
                                "nativeSrc": "13670:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13670:6:21"
                              },
                              {
                                "name": "x",
                                "nativeSrc": "13678:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "13678:1:21"
                              }
                            ],
                            "functionName": {
                              "name": "shr",
                              "nativeSrc": "13666:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "13666:3:21"
                            },
                            "nativeSrc": "13666:14:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13666:14:21"
                          },
                          "variableNames": [
                            {
                              "name": "x",
                              "nativeSrc": "13661:1:21",
                              "nodeType": "YulIdentifier",
                              "src": "13661:1:21"
                            }
                          ]
                        },
                        {
                          "nativeSrc": "13689:28:21",
                          "nodeType": "YulAssignment",
                          "src": "13689:28:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "result",
                                "nativeSrc": "13702:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13702:6:21"
                              },
                              {
                                "name": "factor",
                                "nativeSrc": "13710:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13710:6:21"
                              }
                            ],
                            "functionName": {
                              "name": "or",
                              "nativeSrc": "13699:2:21",
                              "nodeType": "YulIdentifier",
                              "src": "13699:2:21"
                            },
                            "nativeSrc": "13699:18:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13699:18:21"
                          },
                          "variableNames": [
                            {
                              "name": "result",
                              "nativeSrc": "13689:6:21",
                              "nodeType": "YulIdentifier",
                              "src": "13689:6:21"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13689:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13702:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13644:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13661:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13678:1:21",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 7777,
                    "nodeType": "InlineAssembly",
                    "src": "13585:138:21"
                  },
                  {
                    "AST": {
                      "nativeSrc": "13764:113:21",
                      "nodeType": "YulBlock",
                      "src": "13764:113:21",
                      "statements": [
                        {
                          "nativeSrc": "13774:32:21",
                          "nodeType": "YulVariableDeclaration",
                          "src": "13774:32:21",
                          "value": {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "13792:1:21",
                                "nodeType": "YulLiteral",
                                "src": "13792:1:21",
                                "type": "",
                                "value": "1"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nativeSrc": "13798:1:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "13798:1:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "13801:3:21",
                                    "nodeType": "YulLiteral",
                                    "src": "13801:3:21",
                                    "type": "",
                                    "value": "0x3"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nativeSrc": "13795:2:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "13795:2:21"
                                },
                                "nativeSrc": "13795:10:21",
                                "nodeType": "YulFunctionCall",
                                "src": "13795:10:21"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "13788:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "13788:3:21"
                            },
                            "nativeSrc": "13788:18:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13788:18:21"
                          },
                          "variables": [
                            {
                              "name": "factor",
                              "nativeSrc": "13778:6:21",
                              "nodeType": "YulTypedName",
                              "src": "13778:6:21",
                              "type": ""
                            }
                          ]
                        },
                        {
                          "nativeSrc": "13815:19:21",
                          "nodeType": "YulAssignment",
                          "src": "13815:19:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "factor",
                                "nativeSrc": "13824:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13824:6:21"
                              },
                              {
                                "name": "x",
                                "nativeSrc": "13832:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "13832:1:21"
                              }
                            ],
                            "functionName": {
                              "name": "shr",
                              "nativeSrc": "13820:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "13820:3:21"
                            },
                            "nativeSrc": "13820:14:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13820:14:21"
                          },
                          "variableNames": [
                            {
                              "name": "x",
                              "nativeSrc": "13815:1:21",
                              "nodeType": "YulIdentifier",
                              "src": "13815:1:21"
                            }
                          ]
                        },
                        {
                          "nativeSrc": "13843:28:21",
                          "nodeType": "YulAssignment",
                          "src": "13843:28:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "result",
                                "nativeSrc": "13856:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13856:6:21"
                              },
                              {
                                "name": "factor",
                                "nativeSrc": "13864:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "13864:6:21"
                              }
                            ],
                            "functionName": {
                              "name": "or",
                              "nativeSrc": "13853:2:21",
                              "nodeType": "YulIdentifier",
                              "src": "13853:2:21"
                            },
                            "nativeSrc": "13853:18:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13853:18:21"
                          },
                          "variableNames": [
                            {
                              "name": "result",
                              "nativeSrc": "13843:6:21",
                              "nodeType": "YulIdentifier",
                              "src": "13843:6:21"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13843:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13856:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13798:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13815:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13832:1:21",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 7778,
                    "nodeType": "InlineAssembly",
                    "src": "13739:138:21"
                  },
                  {
                    "AST": {
                      "nativeSrc": "13954:77:21",
                      "nodeType": "YulBlock",
                      "src": "13954:77:21",
                      "statements": [
                        {
                          "nativeSrc": "13964:24:21",
                          "nodeType": "YulVariableDeclaration",
                          "src": "13964:24:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "13981:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "13981:1:21"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "13984:3:21",
                                "nodeType": "YulLiteral",
                                "src": "13984:3:21",
                                "type": "",
                                "value": "0x1"
                              }
                            ],
                            "functionName": {
                              "name": "gt",
                              "nativeSrc": "13978:2:21",
                              "nodeType": "YulIdentifier",
                              "src": "13978:2:21"
                            },
                            "nativeSrc": "13978:10:21",
                            "nodeType": "YulFunctionCall",
                            "src": "13978:10:21"
                          },
                          "variables": [
                            {
                              "name": "factor",
                              "nativeSrc": "13968:6:21",
                              "nodeType": "YulTypedName",
                              "src": "13968:6:21",
                              "type": ""
                            }
                          ]
                        },
                        {
                          "nativeSrc": "13997:28:21",
                          "nodeType": "YulAssignment",
                          "src": "13997:28:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "result",
                                "nativeSrc": "14010:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "14010:6:21"
                              },
                              {
                                "name": "factor",
                                "nativeSrc": "14018:6:21",
                                "nodeType": "YulIdentifier",
                                "src": "14018:6:21"
                              }
                            ],
                            "functionName": {
                              "name": "or",
                              "nativeSrc": "14007:2:21",
                              "nodeType": "YulIdentifier",
                              "src": "14007:2:21"
                            },
                            "nativeSrc": "14007:18:21",
                            "nodeType": "YulFunctionCall",
                            "src": "14007:18:21"
                          },
                          "variableNames": [
                            {
                              "name": "result",
                              "nativeSrc": "13997:6:21",
                              "nodeType": "YulIdentifier",
                              "src": "13997:6:21"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13997:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7770,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14010:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7767,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13981:1:21",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 7779,
                    "nodeType": "InlineAssembly",
                    "src": "13929:102:21"
                  }
                ]
              },
              "documentation": {
                "id": 7765,
                "nodeType": "StructuredDocumentation",
                "src": "11732:950:21",
                "text": "@notice Finds the zero-based index of the first 1 in the binary representation of x.\n @dev See the note on \"msb\" in this Wikipedia article: https://en.wikipedia.org/wiki/Find_first_set\n Each step in this implementation is equivalent to this high-level code:\n ```solidity\n if (x >= 2 ** 128) {\n     x >>= 128;\n     result += 128;\n }\n ```\n Where 128 is replaced with each respective power of two factor. See the full high-level implementation here:\n https://gist.github.com/PaulRBerg/f932f8693f2733e30c4d479e8e980948\n The Yul instructions used below are:\n - \"gt\" is \"greater than\"\n - \"or\" is the OR bitwise operator\n - \"shl\" is \"shift left\"\n - \"shr\" is \"shift right\"\n @param x The uint256 number for which to find the index of the most significant bit.\n @return result The index of the most significant bit as a uint256.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 7781,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "msb",
              "nameLocation": "12691:3:21",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 7768,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 7767,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "12703:1:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 7781,
                    "src": "12695:9:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7766,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "12695:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "12694:11:21"
              },
              "returnParameters": {
                "id": 7771,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 7770,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "12728:6:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 7781,
                    "src": "12720:14:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7769,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "12720:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "12719:16:21"
              },
              "scope": 8329,
              "src": "12682:1351:21",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 7909,
                "nodeType": "Block",
                "src": "14664:4032:21",
                "statements": [
                  {
                    "assignments": [
                      7794
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 7794,
                        "mutability": "mutable",
                        "name": "prod0",
                        "nameLocation": "14951:5:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 7909,
                        "src": "14943:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7793,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14943:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 7795,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "14943:13:21"
                  },
                  {
                    "assignments": [
                      7797
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 7797,
                        "mutability": "mutable",
                        "name": "prod1",
                        "nameLocation": "15015:5:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 7909,
                        "src": "15007:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7796,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15007:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 7798,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15007:13:21"
                  },
                  {
                    "AST": {
                      "nativeSrc": "15095:125:21",
                      "nodeType": "YulBlock",
                      "src": "15095:125:21",
                      "statements": [
                        {
                          "nativeSrc": "15105:30:21",
                          "nodeType": "YulVariableDeclaration",
                          "src": "15105:30:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "15122:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "15122:1:21"
                              },
                              {
                                "name": "y",
                                "nativeSrc": "15125:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "15125:1:21"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "15132:1:21",
                                    "nodeType": "YulLiteral",
                                    "src": "15132:1:21",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "15128:3:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "15128:3:21"
                                },
                                "nativeSrc": "15128:6:21",
                                "nodeType": "YulFunctionCall",
                                "src": "15128:6:21"
                              }
                            ],
                            "functionName": {
                              "name": "mulmod",
                              "nativeSrc": "15115:6:21",
                              "nodeType": "YulIdentifier",
                              "src": "15115:6:21"
                            },
                            "nativeSrc": "15115:20:21",
                            "nodeType": "YulFunctionCall",
                            "src": "15115:20:21"
                          },
                          "variables": [
                            {
                              "name": "mm",
                              "nativeSrc": "15109:2:21",
                              "nodeType": "YulTypedName",
                              "src": "15109:2:21",
                              "type": ""
                            }
                          ]
                        },
                        {
                          "nativeSrc": "15144:18:21",
                          "nodeType": "YulAssignment",
                          "src": "15144:18:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "15157:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "15157:1:21"
                              },
                              {
                                "name": "y",
                                "nativeSrc": "15160:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "15160:1:21"
                              }
                            ],
                            "functionName": {
                              "name": "mul",
                              "nativeSrc": "15153:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "15153:3:21"
                            },
                            "nativeSrc": "15153:9:21",
                            "nodeType": "YulFunctionCall",
                            "src": "15153:9:21"
                          },
                          "variableNames": [
                            {
                              "name": "prod0",
                              "nativeSrc": "15144:5:21",
                              "nodeType": "YulIdentifier",
                              "src": "15144:5:21"
                            }
                          ]
                        },
                        {
                          "nativeSrc": "15171:43:21",
                          "nodeType": "YulAssignment",
                          "src": "15171:43:21",
                          "value": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "mm",
                                    "nativeSrc": "15188:2:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "15188:2:21"
                                  },
                                  {
                                    "name": "prod0",
                                    "nativeSrc": "15192:5:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "15192:5:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "15184:3:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "15184:3:21"
                                },
                                "nativeSrc": "15184:14:21",
                                "nodeType": "YulFunctionCall",
                                "src": "15184:14:21"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "mm",
                                    "nativeSrc": "15203:2:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "15203:2:21"
                                  },
                                  {
                                    "name": "prod0",
                                    "nativeSrc": "15207:5:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "15207:5:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nativeSrc": "15200:2:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "15200:2:21"
                                },
                                "nativeSrc": "15200:13:21",
                                "nodeType": "YulFunctionCall",
                                "src": "15200:13:21"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "15180:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "15180:3:21"
                            },
                            "nativeSrc": "15180:34:21",
                            "nodeType": "YulFunctionCall",
                            "src": "15180:34:21"
                          },
                          "variableNames": [
                            {
                              "name": "prod1",
                              "nativeSrc": "15171:5:21",
                              "nodeType": "YulIdentifier",
                              "src": "15171:5:21"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 7794,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15144:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7794,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15192:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7794,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15207:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7797,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15171:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7784,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15122:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7784,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15157:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7786,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15125:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7786,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15160:1:21",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 7799,
                    "nodeType": "InlineAssembly",
                    "src": "15070:150:21"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7802,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 7800,
                        "name": "prod1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7797,
                        "src": "15285:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 7801,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15294:1:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "15285:10:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 7809,
                    "nodeType": "IfStatement",
                    "src": "15281:93:21",
                    "trueBody": {
                      "id": 7808,
                      "nodeType": "Block",
                      "src": "15297:77:21",
                      "statements": [
                        {
                          "id": 7807,
                          "nodeType": "UncheckedBlock",
                          "src": "15307:61:21",
                          "statements": [
                            {
                              "expression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7803,
                                  "name": "prod0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7794,
                                  "src": "15338:5:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 7804,
                                  "name": "denominator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7788,
                                  "src": "15346:11:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15338:19:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 7792,
                              "id": 7806,
                              "nodeType": "Return",
                              "src": "15331:26:21"
                            }
                          ]
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7812,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 7810,
                        "name": "prod1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7797,
                        "src": "15464:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "id": 7811,
                        "name": "denominator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7788,
                        "src": "15473:11:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "15464:20:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 7820,
                    "nodeType": "IfStatement",
                    "src": "15460:92:21",
                    "trueBody": {
                      "id": 7819,
                      "nodeType": "Block",
                      "src": "15486:66:21",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 7814,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7784,
                                "src": "15527:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7815,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7786,
                                "src": "15530:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7816,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7788,
                                "src": "15533:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7813,
                              "name": "PRBMath_MulDiv_Overflow",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6603,
                              "src": "15503:23:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_error_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (error)"
                              }
                            },
                            "id": 7817,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15503:42:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 7818,
                          "nodeType": "RevertStatement",
                          "src": "15496:49:21"
                        }
                      ]
                    }
                  },
                  {
                    "assignments": [
                      7822
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 7822,
                        "mutability": "mutable",
                        "name": "remainder",
                        "nameLocation": "15832:9:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 7909,
                        "src": "15824:17:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7821,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15824:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 7823,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15824:17:21"
                  },
                  {
                    "AST": {
                      "nativeSrc": "15872:263:21",
                      "nodeType": "YulBlock",
                      "src": "15872:263:21",
                      "statements": [
                        {
                          "nativeSrc": "15945:38:21",
                          "nodeType": "YulAssignment",
                          "src": "15945:38:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "15965:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "15965:1:21"
                              },
                              {
                                "name": "y",
                                "nativeSrc": "15968:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "15968:1:21"
                              },
                              {
                                "name": "denominator",
                                "nativeSrc": "15971:11:21",
                                "nodeType": "YulIdentifier",
                                "src": "15971:11:21"
                              }
                            ],
                            "functionName": {
                              "name": "mulmod",
                              "nativeSrc": "15958:6:21",
                              "nodeType": "YulIdentifier",
                              "src": "15958:6:21"
                            },
                            "nativeSrc": "15958:25:21",
                            "nodeType": "YulFunctionCall",
                            "src": "15958:25:21"
                          },
                          "variableNames": [
                            {
                              "name": "remainder",
                              "nativeSrc": "15945:9:21",
                              "nodeType": "YulIdentifier",
                              "src": "15945:9:21"
                            }
                          ]
                        },
                        {
                          "nativeSrc": "16049:41:21",
                          "nodeType": "YulAssignment",
                          "src": "16049:41:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "prod1",
                                "nativeSrc": "16062:5:21",
                                "nodeType": "YulIdentifier",
                                "src": "16062:5:21"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "remainder",
                                    "nativeSrc": "16072:9:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "16072:9:21"
                                  },
                                  {
                                    "name": "prod0",
                                    "nativeSrc": "16083:5:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "16083:5:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nativeSrc": "16069:2:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "16069:2:21"
                                },
                                "nativeSrc": "16069:20:21",
                                "nodeType": "YulFunctionCall",
                                "src": "16069:20:21"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "16058:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "16058:3:21"
                            },
                            "nativeSrc": "16058:32:21",
                            "nodeType": "YulFunctionCall",
                            "src": "16058:32:21"
                          },
                          "variableNames": [
                            {
                              "name": "prod1",
                              "nativeSrc": "16049:5:21",
                              "nodeType": "YulIdentifier",
                              "src": "16049:5:21"
                            }
                          ]
                        },
                        {
                          "nativeSrc": "16099:30:21",
                          "nodeType": "YulAssignment",
                          "src": "16099:30:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "prod0",
                                "nativeSrc": "16112:5:21",
                                "nodeType": "YulIdentifier",
                                "src": "16112:5:21"
                              },
                              {
                                "name": "remainder",
                                "nativeSrc": "16119:9:21",
                                "nodeType": "YulIdentifier",
                                "src": "16119:9:21"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "16108:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "16108:3:21"
                            },
                            "nativeSrc": "16108:21:21",
                            "nodeType": "YulFunctionCall",
                            "src": "16108:21:21"
                          },
                          "variableNames": [
                            {
                              "name": "prod0",
                              "nativeSrc": "16099:5:21",
                              "nodeType": "YulIdentifier",
                              "src": "16099:5:21"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 7788,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15971:11:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7794,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16083:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7794,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16099:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7794,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16112:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7797,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16049:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7797,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16062:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7822,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15945:9:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7822,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16072:9:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7822,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16119:9:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7784,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15965:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7786,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15968:1:21",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 7824,
                    "nodeType": "InlineAssembly",
                    "src": "15847:288:21"
                  },
                  {
                    "id": 7908,
                    "nodeType": "UncheckedBlock",
                    "src": "16141:2553:21",
                    "statements": [
                      {
                        "assignments": [
                          7826
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7826,
                            "mutability": "mutable",
                            "name": "lpotdod",
                            "nameLocation": "16496:7:21",
                            "nodeType": "VariableDeclaration",
                            "scope": 7908,
                            "src": "16488:15:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7825,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16488:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7834,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7827,
                            "name": "denominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7788,
                            "src": "16506:11:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7831,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7829,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "~",
                                  "prefix": true,
                                  "src": "16521:12:21",
                                  "subExpression": {
                                    "id": 7828,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7788,
                                    "src": "16522:11:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 7830,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16536:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "16521:16:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 7832,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "16520:18:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16506:32:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16488:50:21"
                      },
                      {
                        "assignments": [
                          7836
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7836,
                            "mutability": "mutable",
                            "name": "flippedLpotdod",
                            "nameLocation": "16556:14:21",
                            "nodeType": "VariableDeclaration",
                            "scope": 7908,
                            "src": "16548:22:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7835,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16548:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7837,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16548:22:21"
                      },
                      {
                        "AST": {
                          "nativeSrc": "16606:642:21",
                          "nodeType": "YulBlock",
                          "src": "16606:642:21",
                          "statements": [
                            {
                              "nativeSrc": "16676:40:21",
                              "nodeType": "YulAssignment",
                              "src": "16676:40:21",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "denominator",
                                    "nativeSrc": "16695:11:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "16695:11:21"
                                  },
                                  {
                                    "name": "lpotdod",
                                    "nativeSrc": "16708:7:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "16708:7:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nativeSrc": "16691:3:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "16691:3:21"
                                },
                                "nativeSrc": "16691:25:21",
                                "nodeType": "YulFunctionCall",
                                "src": "16691:25:21"
                              },
                              "variableNames": [
                                {
                                  "name": "denominator",
                                  "nativeSrc": "16676:11:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "16676:11:21"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "16778:28:21",
                              "nodeType": "YulAssignment",
                              "src": "16778:28:21",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "prod0",
                                    "nativeSrc": "16791:5:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "16791:5:21"
                                  },
                                  {
                                    "name": "lpotdod",
                                    "nativeSrc": "16798:7:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "16798:7:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nativeSrc": "16787:3:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "16787:3:21"
                                },
                                "nativeSrc": "16787:19:21",
                                "nodeType": "YulFunctionCall",
                                "src": "16787:19:21"
                              },
                              "variableNames": [
                                {
                                  "name": "prod0",
                                  "nativeSrc": "16778:5:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "16778:5:21"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "17183:55:21",
                              "nodeType": "YulAssignment",
                              "src": "17183:55:21",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nativeSrc": "17213:1:21",
                                            "nodeType": "YulLiteral",
                                            "src": "17213:1:21",
                                            "type": "",
                                            "value": "0"
                                          },
                                          {
                                            "name": "lpotdod",
                                            "nativeSrc": "17216:7:21",
                                            "nodeType": "YulIdentifier",
                                            "src": "17216:7:21"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nativeSrc": "17209:3:21",
                                          "nodeType": "YulIdentifier",
                                          "src": "17209:3:21"
                                        },
                                        "nativeSrc": "17209:15:21",
                                        "nodeType": "YulFunctionCall",
                                        "src": "17209:15:21"
                                      },
                                      {
                                        "name": "lpotdod",
                                        "nativeSrc": "17226:7:21",
                                        "nodeType": "YulIdentifier",
                                        "src": "17226:7:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nativeSrc": "17205:3:21",
                                      "nodeType": "YulIdentifier",
                                      "src": "17205:3:21"
                                    },
                                    "nativeSrc": "17205:29:21",
                                    "nodeType": "YulFunctionCall",
                                    "src": "17205:29:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "17236:1:21",
                                    "nodeType": "YulLiteral",
                                    "src": "17236:1:21",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "17201:3:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "17201:3:21"
                                },
                                "nativeSrc": "17201:37:21",
                                "nodeType": "YulFunctionCall",
                                "src": "17201:37:21"
                              },
                              "variableNames": [
                                {
                                  "name": "flippedLpotdod",
                                  "nativeSrc": "17183:14:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "17183:14:21"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 7788,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16676:11:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7788,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16695:11:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7836,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "17183:14:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7826,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16708:7:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7826,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16798:7:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7826,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "17216:7:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7826,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "17226:7:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7794,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16778:5:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7794,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16791:5:21",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 7838,
                        "nodeType": "InlineAssembly",
                        "src": "16581:667:21"
                      },
                      {
                        "expression": {
                          "id": 7843,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7839,
                            "name": "prod0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7794,
                            "src": "17306:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7842,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7840,
                              "name": "prod1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7797,
                              "src": "17315:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "id": 7841,
                              "name": "flippedLpotdod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7836,
                              "src": "17323:14:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17315:22:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17306:31:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7844,
                        "nodeType": "ExpressionStatement",
                        "src": "17306:31:21"
                      },
                      {
                        "assignments": [
                          7846
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7846,
                            "mutability": "mutable",
                            "name": "inverse",
                            "nameLocation": "17647:7:21",
                            "nodeType": "VariableDeclaration",
                            "scope": 7908,
                            "src": "17639:15:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7845,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17639:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7853,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7852,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7849,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "33",
                                  "id": 7847,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17658:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_3_by_1",
                                    "typeString": "int_const 3"
                                  },
                                  "value": "3"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 7848,
                                  "name": "denominator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7788,
                                  "src": "17662:11:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17658:15:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 7850,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "17657:17:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "^",
                          "rightExpression": {
                            "hexValue": "32",
                            "id": 7851,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17677:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "17657:21:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17639:39:21"
                      },
                      {
                        "expression": {
                          "id": 7860,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7854,
                            "name": "inverse",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7846,
                            "src": "17883:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7859,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "32",
                              "id": 7855,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17894:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7858,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7856,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7788,
                                "src": "17898:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 7857,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7846,
                                "src": "17912:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "17898:21:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17894:25:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17883:36:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7861,
                        "nodeType": "ExpressionStatement",
                        "src": "17883:36:21"
                      },
                      {
                        "expression": {
                          "id": 7868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7862,
                            "name": "inverse",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7846,
                            "src": "17948:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7867,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "32",
                              "id": 7863,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17959:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7864,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7788,
                                "src": "17963:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 7865,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7846,
                                "src": "17977:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "17963:21:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17959:25:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17948:36:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7869,
                        "nodeType": "ExpressionStatement",
                        "src": "17948:36:21"
                      },
                      {
                        "expression": {
                          "id": 7876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7870,
                            "name": "inverse",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7846,
                            "src": "18014:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7875,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "32",
                              "id": 7871,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18025:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7874,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7872,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7788,
                                "src": "18029:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 7873,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7846,
                                "src": "18043:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "18029:21:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "18025:25:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18014:36:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7877,
                        "nodeType": "ExpressionStatement",
                        "src": "18014:36:21"
                      },
                      {
                        "expression": {
                          "id": 7884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7878,
                            "name": "inverse",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7846,
                            "src": "18080:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7883,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "32",
                              "id": 7879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18091:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7882,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7880,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7788,
                                "src": "18095:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 7881,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7846,
                                "src": "18109:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "18095:21:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "18091:25:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18080:36:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7885,
                        "nodeType": "ExpressionStatement",
                        "src": "18080:36:21"
                      },
                      {
                        "expression": {
                          "id": 7892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7886,
                            "name": "inverse",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7846,
                            "src": "18146:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7891,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "32",
                              "id": 7887,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18157:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7890,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7888,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7788,
                                "src": "18161:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 7889,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7846,
                                "src": "18175:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "18161:21:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "18157:25:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18146:36:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7893,
                        "nodeType": "ExpressionStatement",
                        "src": "18146:36:21"
                      },
                      {
                        "expression": {
                          "id": 7900,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7894,
                            "name": "inverse",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7846,
                            "src": "18213:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7899,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "32",
                              "id": 7895,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18224:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7898,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7896,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7788,
                                "src": "18228:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 7897,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7846,
                                "src": "18242:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "18228:21:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "18224:25:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18213:36:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7901,
                        "nodeType": "ExpressionStatement",
                        "src": "18213:36:21"
                      },
                      {
                        "expression": {
                          "id": 7906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7902,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7791,
                            "src": "18663:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7905,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7903,
                              "name": "prod0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7794,
                              "src": "18672:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "id": 7904,
                              "name": "inverse",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7846,
                              "src": "18680:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "18672:15:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18663:24:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7907,
                        "nodeType": "ExpressionStatement",
                        "src": "18663:24:21"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 7782,
                "nodeType": "StructuredDocumentation",
                "src": "14035:540:21",
                "text": "@notice Calculates x*y÷denominator with 512-bit precision.\n @dev Credits to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv.\n Notes:\n - The result is rounded toward zero.\n Requirements:\n - The denominator must not be zero.\n - The result must fit in uint256.\n @param x The multiplicand as a uint256.\n @param y The multiplier as a uint256.\n @param denominator The divisor as a uint256.\n @return result The result as a uint256.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 7910,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "mulDiv",
              "nameLocation": "14584:6:21",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 7789,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 7784,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "14599:1:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 7910,
                    "src": "14591:9:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7783,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "14591:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7786,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "14610:1:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 7910,
                    "src": "14602:9:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7785,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "14602:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7788,
                    "mutability": "mutable",
                    "name": "denominator",
                    "nameLocation": "14621:11:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 7910,
                    "src": "14613:19:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7787,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "14613:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "14590:43:21"
              },
              "returnParameters": {
                "id": 7792,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 7791,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "14656:6:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 7910,
                    "src": "14648:14:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7790,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "14648:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "14647:16:21"
              },
              "scope": 8329,
              "src": "14575:4121:21",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 7951,
                "nodeType": "Block",
                "src": "19750:749:21",
                "statements": [
                  {
                    "assignments": [
                      7921
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 7921,
                        "mutability": "mutable",
                        "name": "prod0",
                        "nameLocation": "19764:5:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 7951,
                        "src": "19756:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7920,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19756:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 7922,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19756:13:21"
                  },
                  {
                    "assignments": [
                      7924
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 7924,
                        "mutability": "mutable",
                        "name": "prod1",
                        "nameLocation": "19783:5:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 7951,
                        "src": "19775:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7923,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19775:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 7925,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19775:13:21"
                  },
                  {
                    "AST": {
                      "nativeSrc": "19819:125:21",
                      "nodeType": "YulBlock",
                      "src": "19819:125:21",
                      "statements": [
                        {
                          "nativeSrc": "19829:30:21",
                          "nodeType": "YulVariableDeclaration",
                          "src": "19829:30:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "19846:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "19846:1:21"
                              },
                              {
                                "name": "y",
                                "nativeSrc": "19849:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "19849:1:21"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "19856:1:21",
                                    "nodeType": "YulLiteral",
                                    "src": "19856:1:21",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "19852:3:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "19852:3:21"
                                },
                                "nativeSrc": "19852:6:21",
                                "nodeType": "YulFunctionCall",
                                "src": "19852:6:21"
                              }
                            ],
                            "functionName": {
                              "name": "mulmod",
                              "nativeSrc": "19839:6:21",
                              "nodeType": "YulIdentifier",
                              "src": "19839:6:21"
                            },
                            "nativeSrc": "19839:20:21",
                            "nodeType": "YulFunctionCall",
                            "src": "19839:20:21"
                          },
                          "variables": [
                            {
                              "name": "mm",
                              "nativeSrc": "19833:2:21",
                              "nodeType": "YulTypedName",
                              "src": "19833:2:21",
                              "type": ""
                            }
                          ]
                        },
                        {
                          "nativeSrc": "19868:18:21",
                          "nodeType": "YulAssignment",
                          "src": "19868:18:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "19881:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "19881:1:21"
                              },
                              {
                                "name": "y",
                                "nativeSrc": "19884:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "19884:1:21"
                              }
                            ],
                            "functionName": {
                              "name": "mul",
                              "nativeSrc": "19877:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "19877:3:21"
                            },
                            "nativeSrc": "19877:9:21",
                            "nodeType": "YulFunctionCall",
                            "src": "19877:9:21"
                          },
                          "variableNames": [
                            {
                              "name": "prod0",
                              "nativeSrc": "19868:5:21",
                              "nodeType": "YulIdentifier",
                              "src": "19868:5:21"
                            }
                          ]
                        },
                        {
                          "nativeSrc": "19895:43:21",
                          "nodeType": "YulAssignment",
                          "src": "19895:43:21",
                          "value": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "mm",
                                    "nativeSrc": "19912:2:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "19912:2:21"
                                  },
                                  {
                                    "name": "prod0",
                                    "nativeSrc": "19916:5:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "19916:5:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "19908:3:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "19908:3:21"
                                },
                                "nativeSrc": "19908:14:21",
                                "nodeType": "YulFunctionCall",
                                "src": "19908:14:21"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "mm",
                                    "nativeSrc": "19927:2:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "19927:2:21"
                                  },
                                  {
                                    "name": "prod0",
                                    "nativeSrc": "19931:5:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "19931:5:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nativeSrc": "19924:2:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "19924:2:21"
                                },
                                "nativeSrc": "19924:13:21",
                                "nodeType": "YulFunctionCall",
                                "src": "19924:13:21"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "19904:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "19904:3:21"
                            },
                            "nativeSrc": "19904:34:21",
                            "nodeType": "YulFunctionCall",
                            "src": "19904:34:21"
                          },
                          "variableNames": [
                            {
                              "name": "prod1",
                              "nativeSrc": "19895:5:21",
                              "nodeType": "YulIdentifier",
                              "src": "19895:5:21"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 7921,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19868:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7921,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19916:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7921,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19931:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7924,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19895:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7913,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19846:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7913,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19881:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7915,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19849:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7915,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19884:1:21",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 7926,
                    "nodeType": "InlineAssembly",
                    "src": "19794:150:21"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7929,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 7927,
                        "name": "prod1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7924,
                        "src": "19954:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 7928,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19963:1:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "19954:10:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 7936,
                    "nodeType": "IfStatement",
                    "src": "19950:86:21",
                    "trueBody": {
                      "id": 7935,
                      "nodeType": "Block",
                      "src": "19966:70:21",
                      "statements": [
                        {
                          "id": 7934,
                          "nodeType": "UncheckedBlock",
                          "src": "19976:54:21",
                          "statements": [
                            {
                              "expression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7932,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7930,
                                  "name": "prod0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7921,
                                  "src": "20007:5:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 7931,
                                  "name": "UNIT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6648,
                                  "src": "20015:4:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20007:12:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 7919,
                              "id": 7933,
                              "nodeType": "Return",
                              "src": "20000:19:21"
                            }
                          ]
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7939,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 7937,
                        "name": "prod1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7924,
                        "src": "20046:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "id": 7938,
                        "name": "UNIT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6648,
                        "src": "20055:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "20046:13:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 7946,
                    "nodeType": "IfStatement",
                    "src": "20042:74:21",
                    "trueBody": {
                      "id": 7945,
                      "nodeType": "Block",
                      "src": "20061:55:21",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 7941,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7913,
                                "src": "20104:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7942,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7915,
                                "src": "20107:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7940,
                              "name": "PRBMath_MulDiv18_Overflow",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6610,
                              "src": "20078:25:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$",
                                "typeString": "function (uint256,uint256) pure returns (error)"
                              }
                            },
                            "id": 7943,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20078:31:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 7944,
                          "nodeType": "RevertStatement",
                          "src": "20071:38:21"
                        }
                      ]
                    }
                  },
                  {
                    "assignments": [
                      7948
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 7948,
                        "mutability": "mutable",
                        "name": "remainder",
                        "nameLocation": "20130:9:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 7951,
                        "src": "20122:17:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7947,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20122:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 7949,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "20122:17:21"
                  },
                  {
                    "AST": {
                      "nativeSrc": "20170:327:21",
                      "nodeType": "YulBlock",
                      "src": "20170:327:21",
                      "statements": [
                        {
                          "nativeSrc": "20180:31:21",
                          "nodeType": "YulAssignment",
                          "src": "20180:31:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "20200:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "20200:1:21"
                              },
                              {
                                "name": "y",
                                "nativeSrc": "20203:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "20203:1:21"
                              },
                              {
                                "name": "UNIT",
                                "nativeSrc": "20206:4:21",
                                "nodeType": "YulIdentifier",
                                "src": "20206:4:21"
                              }
                            ],
                            "functionName": {
                              "name": "mulmod",
                              "nativeSrc": "20193:6:21",
                              "nodeType": "YulIdentifier",
                              "src": "20193:6:21"
                            },
                            "nativeSrc": "20193:18:21",
                            "nodeType": "YulFunctionCall",
                            "src": "20193:18:21"
                          },
                          "variableNames": [
                            {
                              "name": "remainder",
                              "nativeSrc": "20180:9:21",
                              "nodeType": "YulIdentifier",
                              "src": "20180:9:21"
                            }
                          ]
                        },
                        {
                          "nativeSrc": "20220:271:21",
                          "nodeType": "YulAssignment",
                          "src": "20220:271:21",
                          "value": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "prod0",
                                            "nativeSrc": "20295:5:21",
                                            "nodeType": "YulIdentifier",
                                            "src": "20295:5:21"
                                          },
                                          {
                                            "name": "remainder",
                                            "nativeSrc": "20302:9:21",
                                            "nodeType": "YulIdentifier",
                                            "src": "20302:9:21"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nativeSrc": "20291:3:21",
                                          "nodeType": "YulIdentifier",
                                          "src": "20291:3:21"
                                        },
                                        "nativeSrc": "20291:21:21",
                                        "nodeType": "YulFunctionCall",
                                        "src": "20291:21:21"
                                      },
                                      {
                                        "name": "UNIT_LPOTD",
                                        "nativeSrc": "20314:10:21",
                                        "nodeType": "YulIdentifier",
                                        "src": "20314:10:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nativeSrc": "20287:3:21",
                                      "nodeType": "YulIdentifier",
                                      "src": "20287:3:21"
                                    },
                                    "nativeSrc": "20287:38:21",
                                    "nodeType": "YulFunctionCall",
                                    "src": "20287:38:21"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "prod1",
                                            "nativeSrc": "20355:5:21",
                                            "nodeType": "YulIdentifier",
                                            "src": "20355:5:21"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "remainder",
                                                "nativeSrc": "20365:9:21",
                                                "nodeType": "YulIdentifier",
                                                "src": "20365:9:21"
                                              },
                                              {
                                                "name": "prod0",
                                                "nativeSrc": "20376:5:21",
                                                "nodeType": "YulIdentifier",
                                                "src": "20376:5:21"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "gt",
                                              "nativeSrc": "20362:2:21",
                                              "nodeType": "YulIdentifier",
                                              "src": "20362:2:21"
                                            },
                                            "nativeSrc": "20362:20:21",
                                            "nodeType": "YulFunctionCall",
                                            "src": "20362:20:21"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nativeSrc": "20351:3:21",
                                          "nodeType": "YulIdentifier",
                                          "src": "20351:3:21"
                                        },
                                        "nativeSrc": "20351:32:21",
                                        "nodeType": "YulFunctionCall",
                                        "src": "20351:32:21"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nativeSrc": "20397:1:21",
                                                    "nodeType": "YulLiteral",
                                                    "src": "20397:1:21",
                                                    "type": "",
                                                    "value": "0"
                                                  },
                                                  {
                                                    "name": "UNIT_LPOTD",
                                                    "nativeSrc": "20400:10:21",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "20400:10:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sub",
                                                  "nativeSrc": "20393:3:21",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20393:3:21"
                                                },
                                                "nativeSrc": "20393:18:21",
                                                "nodeType": "YulFunctionCall",
                                                "src": "20393:18:21"
                                              },
                                              {
                                                "name": "UNIT_LPOTD",
                                                "nativeSrc": "20413:10:21",
                                                "nodeType": "YulIdentifier",
                                                "src": "20413:10:21"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nativeSrc": "20389:3:21",
                                              "nodeType": "YulIdentifier",
                                              "src": "20389:3:21"
                                            },
                                            "nativeSrc": "20389:35:21",
                                            "nodeType": "YulFunctionCall",
                                            "src": "20389:35:21"
                                          },
                                          {
                                            "kind": "number",
                                            "nativeSrc": "20426:1:21",
                                            "nodeType": "YulLiteral",
                                            "src": "20426:1:21",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "20385:3:21",
                                          "nodeType": "YulIdentifier",
                                          "src": "20385:3:21"
                                        },
                                        "nativeSrc": "20385:43:21",
                                        "nodeType": "YulFunctionCall",
                                        "src": "20385:43:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nativeSrc": "20347:3:21",
                                      "nodeType": "YulIdentifier",
                                      "src": "20347:3:21"
                                    },
                                    "nativeSrc": "20347:82:21",
                                    "nodeType": "YulFunctionCall",
                                    "src": "20347:82:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nativeSrc": "20263:2:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "20263:2:21"
                                },
                                "nativeSrc": "20263:184:21",
                                "nodeType": "YulFunctionCall",
                                "src": "20263:184:21"
                              },
                              {
                                "name": "UNIT_INVERSE",
                                "nativeSrc": "20465:12:21",
                                "nodeType": "YulIdentifier",
                                "src": "20465:12:21"
                              }
                            ],
                            "functionName": {
                              "name": "mul",
                              "nativeSrc": "20242:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "20242:3:21"
                            },
                            "nativeSrc": "20242:249:21",
                            "nodeType": "YulFunctionCall",
                            "src": "20242:249:21"
                          },
                          "variableNames": [
                            {
                              "name": "result",
                              "nativeSrc": "20220:6:21",
                              "nodeType": "YulIdentifier",
                              "src": "20220:6:21"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 6648,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "20206:4:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 6652,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "20465:12:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 6656,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "20314:10:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 6656,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "20400:10:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 6656,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "20413:10:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7921,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "20295:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7921,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "20376:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7924,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "20355:5:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7948,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "20180:9:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7948,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "20302:9:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7948,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "20365:9:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7918,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "20220:6:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7913,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "20200:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7915,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "20203:1:21",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 7950,
                    "nodeType": "InlineAssembly",
                    "src": "20145:352:21"
                  }
                ]
              },
              "documentation": {
                "id": 7911,
                "nodeType": "StructuredDocumentation",
                "src": "18698:982:21",
                "text": "@notice Calculates x*y÷1e18 with 512-bit precision.\n @dev A variant of {mulDiv} with constant folding, i.e. in which the denominator is hard coded to 1e18.\n Notes:\n - The body is purposely left uncommented; to understand how this works, see the documentation in {mulDiv}.\n - The result is rounded toward zero.\n - We take as an axiom that the result cannot be `MAX_UINT256` when x and y solve the following system of equations:\n $$\n \\begin{cases}\n     x * y = MAX\\_UINT256 * UNIT \\\\\n     (x * y) \\% UNIT \\geq \\frac{UNIT}{2}\n \\end{cases}\n $$\n Requirements:\n - Refer to the requirements in {mulDiv}.\n - The result must fit in uint256.\n @param x The multiplicand as an unsigned 60.18-decimal fixed-point number.\n @param y The multiplier as an unsigned 60.18-decimal fixed-point number.\n @return result The result as an unsigned 60.18-decimal fixed-point number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 7952,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "mulDiv18",
              "nameLocation": "19689:8:21",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 7916,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 7913,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "19706:1:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 7952,
                    "src": "19698:9:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7912,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "19698:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7915,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "19717:1:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 7952,
                    "src": "19709:9:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7914,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "19709:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "19697:22:21"
              },
              "returnParameters": {
                "id": 7919,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 7918,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "19742:6:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 7952,
                    "src": "19734:14:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7917,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "19734:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "19733:16:21"
              },
              "scope": 8329,
              "src": "19680:819:21",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8106,
                "nodeType": "Block",
                "src": "21236:1371:21",
                "statements": [
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 7986,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7978,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 7970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7964,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7955,
                            "src": "21246:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 7967,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "21256:6:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 7966,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "21256:6:21",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  }
                                ],
                                "id": 7965,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "21251:4:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 7968,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21251:12:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_int256",
                                "typeString": "type(int256)"
                              }
                            },
                            "id": 7969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "21264:3:21",
                            "memberName": "min",
                            "nodeType": "MemberAccess",
                            "src": "21251:16:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "21246:21:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 7977,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7971,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7957,
                            "src": "21271:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 7974,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "21281:6:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 7973,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "21281:6:21",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  }
                                ],
                                "id": 7972,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "21276:4:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 7975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21276:12:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_int256",
                                "typeString": "type(int256)"
                              }
                            },
                            "id": 7976,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "21289:3:21",
                            "memberName": "min",
                            "nodeType": "MemberAccess",
                            "src": "21276:16:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "21271:21:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "21246:46:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 7985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 7979,
                          "name": "denominator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7959,
                          "src": "21296:11:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 7982,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "21316:6:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int256_$",
                                  "typeString": "type(int256)"
                                },
                                "typeName": {
                                  "id": 7981,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21316:6:21",
                                  "typeDescriptions": {}
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_int256_$",
                                  "typeString": "type(int256)"
                                }
                              ],
                              "id": 7980,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "21311:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 7983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21311:12:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_int256",
                              "typeString": "type(int256)"
                            }
                          },
                          "id": 7984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "21324:3:21",
                          "memberName": "min",
                          "nodeType": "MemberAccess",
                          "src": "21311:16:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "21296:31:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "21246:81:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 7991,
                    "nodeType": "IfStatement",
                    "src": "21242:147:21",
                    "trueBody": {
                      "id": 7990,
                      "nodeType": "Block",
                      "src": "21329:60:21",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 7987,
                              "name": "PRBMath_MulDivSigned_InputTooSmall",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6613,
                              "src": "21346:34:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 7988,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21346:36:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 7989,
                          "nodeType": "RevertStatement",
                          "src": "21339:43:21"
                        }
                      ]
                    }
                  },
                  {
                    "assignments": [
                      7993
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 7993,
                        "mutability": "mutable",
                        "name": "xAbs",
                        "nameLocation": "21471:4:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 8106,
                        "src": "21463:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7992,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21463:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 7994,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "21463:12:21"
                  },
                  {
                    "assignments": [
                      7996
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 7996,
                        "mutability": "mutable",
                        "name": "yAbs",
                        "nameLocation": "21489:4:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 8106,
                        "src": "21481:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7995,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21481:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 7997,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "21481:12:21"
                  },
                  {
                    "assignments": [
                      7999
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 7999,
                        "mutability": "mutable",
                        "name": "dAbs",
                        "nameLocation": "21507:4:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 8106,
                        "src": "21499:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7998,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21499:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8000,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "21499:12:21"
                  },
                  {
                    "id": 8049,
                    "nodeType": "UncheckedBlock",
                    "src": "21517:194:21",
                    "statements": [
                      {
                        "expression": {
                          "id": 8015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8001,
                            "name": "xAbs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7993,
                            "src": "21537:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 8004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8002,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7955,
                                "src": "21544:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8003,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "21548:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "21544:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "arguments": [
                                {
                                  "id": 8012,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7955,
                                  "src": "21574:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 8011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "21566:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8010,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21566:7:21",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8013,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21566:10:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8014,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "21544:32:21",
                            "trueExpression": {
                              "arguments": [
                                {
                                  "id": 8008,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "21560:2:21",
                                  "subExpression": {
                                    "id": 8007,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7955,
                                    "src": "21561:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 8006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "21552:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8005,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21552:7:21",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21552:11:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21537:39:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8016,
                        "nodeType": "ExpressionStatement",
                        "src": "21537:39:21"
                      },
                      {
                        "expression": {
                          "id": 8031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8017,
                            "name": "yAbs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7996,
                            "src": "21586:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 8020,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8018,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7957,
                                "src": "21593:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8019,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "21597:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "21593:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "arguments": [
                                {
                                  "id": 8028,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7957,
                                  "src": "21623:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 8027,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "21615:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8026,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21615:7:21",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21615:10:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "21593:32:21",
                            "trueExpression": {
                              "arguments": [
                                {
                                  "id": 8024,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "21609:2:21",
                                  "subExpression": {
                                    "id": 8023,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7957,
                                    "src": "21610:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 8022,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "21601:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8021,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21601:7:21",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21601:11:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21586:39:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8032,
                        "nodeType": "ExpressionStatement",
                        "src": "21586:39:21"
                      },
                      {
                        "expression": {
                          "id": 8047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8033,
                            "name": "dAbs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7999,
                            "src": "21635:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 8036,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8034,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7959,
                                "src": "21642:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8035,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "21656:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "21642:15:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "arguments": [
                                {
                                  "id": 8044,
                                  "name": "denominator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7959,
                                  "src": "21692:11:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 8043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "21684:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8042,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21684:7:21",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8045,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21684:20:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8046,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "21642:62:21",
                            "trueExpression": {
                              "arguments": [
                                {
                                  "id": 8040,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "21668:12:21",
                                  "subExpression": {
                                    "id": 8039,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7959,
                                    "src": "21669:11:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 8038,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "21660:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8037,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21660:7:21",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8041,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21660:21:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21635:69:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8048,
                        "nodeType": "ExpressionStatement",
                        "src": "21635:69:21"
                      }
                    ]
                  },
                  {
                    "assignments": [
                      8051
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8051,
                        "mutability": "mutable",
                        "name": "resultAbs",
                        "nameLocation": "21811:9:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 8106,
                        "src": "21803:17:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8050,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21803:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8057,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 8053,
                          "name": "xAbs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7993,
                          "src": "21830:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 8054,
                          "name": "yAbs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7996,
                          "src": "21836:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 8055,
                          "name": "dAbs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7999,
                          "src": "21842:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 8052,
                        "name": "mulDiv",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7910,
                        "src": "21823:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 8056,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21823:24:21",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "21803:44:21"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 8067,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8058,
                        "name": "resultAbs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8051,
                        "src": "21857:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "arguments": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8063,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "21882:6:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 8062,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "21882:6:21",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  }
                                ],
                                "id": 8061,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "21877:4:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8064,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21877:12:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_int256",
                                "typeString": "type(int256)"
                              }
                            },
                            "id": 8065,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "21890:3:21",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "21877:16:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 8060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "21869:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 8059,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "21869:7:21",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 8066,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21869:25:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "21857:37:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8074,
                    "nodeType": "IfStatement",
                    "src": "21853:102:21",
                    "trueBody": {
                      "id": 8073,
                      "nodeType": "Block",
                      "src": "21896:59:21",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 8069,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7955,
                                "src": "21943:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              {
                                "id": 8070,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7957,
                                "src": "21946:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 8068,
                              "name": "PRBMath_MulDivSigned_Overflow",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6620,
                              "src": "21913:29:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_int256_$_t_int256_$returns$_t_error_$",
                                "typeString": "function (int256,int256) pure returns (error)"
                              }
                            },
                            "id": 8071,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21913:35:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 8072,
                          "nodeType": "RevertStatement",
                          "src": "21906:42:21"
                        }
                      ]
                    }
                  },
                  {
                    "assignments": [
                      8076
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8076,
                        "mutability": "mutable",
                        "name": "sx",
                        "nameLocation": "22019:2:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 8106,
                        "src": "22011:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8075,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22011:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8077,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "22011:10:21"
                  },
                  {
                    "assignments": [
                      8079
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8079,
                        "mutability": "mutable",
                        "name": "sy",
                        "nameLocation": "22035:2:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 8106,
                        "src": "22027:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8078,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22027:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8080,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "22027:10:21"
                  },
                  {
                    "assignments": [
                      8082
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8082,
                        "mutability": "mutable",
                        "name": "sd",
                        "nameLocation": "22051:2:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 8106,
                        "src": "22043:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8081,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22043:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8083,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "22043:10:21"
                  },
                  {
                    "AST": {
                      "nativeSrc": "22084:222:21",
                      "nodeType": "YulBlock",
                      "src": "22084:222:21",
                      "statements": [
                        {
                          "nativeSrc": "22203:23:21",
                          "nodeType": "YulAssignment",
                          "src": "22203:23:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "22213:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "22213:1:21"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "22220:1:21",
                                    "nodeType": "YulLiteral",
                                    "src": "22220:1:21",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "22223:1:21",
                                    "nodeType": "YulLiteral",
                                    "src": "22223:1:21",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "22216:3:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "22216:3:21"
                                },
                                "nativeSrc": "22216:9:21",
                                "nodeType": "YulFunctionCall",
                                "src": "22216:9:21"
                              }
                            ],
                            "functionName": {
                              "name": "sgt",
                              "nativeSrc": "22209:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "22209:3:21"
                            },
                            "nativeSrc": "22209:17:21",
                            "nodeType": "YulFunctionCall",
                            "src": "22209:17:21"
                          },
                          "variableNames": [
                            {
                              "name": "sx",
                              "nativeSrc": "22203:2:21",
                              "nodeType": "YulIdentifier",
                              "src": "22203:2:21"
                            }
                          ]
                        },
                        {
                          "nativeSrc": "22235:23:21",
                          "nodeType": "YulAssignment",
                          "src": "22235:23:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "y",
                                "nativeSrc": "22245:1:21",
                                "nodeType": "YulIdentifier",
                                "src": "22245:1:21"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "22252:1:21",
                                    "nodeType": "YulLiteral",
                                    "src": "22252:1:21",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "22255:1:21",
                                    "nodeType": "YulLiteral",
                                    "src": "22255:1:21",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "22248:3:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "22248:3:21"
                                },
                                "nativeSrc": "22248:9:21",
                                "nodeType": "YulFunctionCall",
                                "src": "22248:9:21"
                              }
                            ],
                            "functionName": {
                              "name": "sgt",
                              "nativeSrc": "22241:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "22241:3:21"
                            },
                            "nativeSrc": "22241:17:21",
                            "nodeType": "YulFunctionCall",
                            "src": "22241:17:21"
                          },
                          "variableNames": [
                            {
                              "name": "sy",
                              "nativeSrc": "22235:2:21",
                              "nodeType": "YulIdentifier",
                              "src": "22235:2:21"
                            }
                          ]
                        },
                        {
                          "nativeSrc": "22267:33:21",
                          "nodeType": "YulAssignment",
                          "src": "22267:33:21",
                          "value": {
                            "arguments": [
                              {
                                "name": "denominator",
                                "nativeSrc": "22277:11:21",
                                "nodeType": "YulIdentifier",
                                "src": "22277:11:21"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "22294:1:21",
                                    "nodeType": "YulLiteral",
                                    "src": "22294:1:21",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "22297:1:21",
                                    "nodeType": "YulLiteral",
                                    "src": "22297:1:21",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "22290:3:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "22290:3:21"
                                },
                                "nativeSrc": "22290:9:21",
                                "nodeType": "YulFunctionCall",
                                "src": "22290:9:21"
                              }
                            ],
                            "functionName": {
                              "name": "sgt",
                              "nativeSrc": "22273:3:21",
                              "nodeType": "YulIdentifier",
                              "src": "22273:3:21"
                            },
                            "nativeSrc": "22273:27:21",
                            "nodeType": "YulFunctionCall",
                            "src": "22273:27:21"
                          },
                          "variableNames": [
                            {
                              "name": "sd",
                              "nativeSrc": "22267:2:21",
                              "nodeType": "YulIdentifier",
                              "src": "22267:2:21"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 7959,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "22277:11:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 8082,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "22267:2:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 8076,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "22203:2:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 8079,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "22235:2:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7955,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "22213:1:21",
                        "valueSize": 1
                      },
                      {
                        "declaration": 7957,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "22245:1:21",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 8084,
                    "nodeType": "InlineAssembly",
                    "src": "22059:247:21"
                  },
                  {
                    "id": 8105,
                    "nodeType": "UncheckedBlock",
                    "src": "22511:94:21",
                    "statements": [
                      {
                        "expression": {
                          "id": 8103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8085,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7962,
                            "src": "22531:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8088,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8086,
                                    "name": "sx",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8076,
                                    "src": "22540:2:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "^",
                                  "rightExpression": {
                                    "id": 8087,
                                    "name": "sy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8079,
                                    "src": "22545:2:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "22540:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "^",
                                "rightExpression": {
                                  "id": 8089,
                                  "name": "sd",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8082,
                                  "src": "22550:2:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "22540:12:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8091,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22556:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "22540:17:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "arguments": [
                                {
                                  "id": 8100,
                                  "name": "resultAbs",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8051,
                                  "src": "22588:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 8099,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "22581:6:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int256_$",
                                  "typeString": "type(int256)"
                                },
                                "typeName": {
                                  "id": 8098,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "22581:6:21",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8101,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22581:17:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 8102,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "22540:58:21",
                            "trueExpression": {
                              "id": 8097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "22560:18:21",
                              "subExpression": {
                                "arguments": [
                                  {
                                    "id": 8095,
                                    "name": "resultAbs",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8051,
                                    "src": "22568:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8094,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "22561:6:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 8093,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "22561:6:21",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 8096,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22561:17:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "22531:67:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 8104,
                        "nodeType": "ExpressionStatement",
                        "src": "22531:67:21"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 7953,
                "nodeType": "StructuredDocumentation",
                "src": "20501:644:21",
                "text": "@notice Calculates x*y÷denominator with 512-bit precision.\n @dev This is an extension of {mulDiv} for signed numbers, which works by computing the signs and the absolute values separately.\n Notes:\n - The result is rounded toward zero.\n Requirements:\n - Refer to the requirements in {mulDiv}.\n - None of the inputs can be `type(int256).min`.\n - The result must fit in int256.\n @param x The multiplicand as an int256.\n @param y The multiplier as an int256.\n @param denominator The divisor as an int256.\n @return result The result as an int256.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 8107,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "mulDivSigned",
              "nameLocation": "21154:12:21",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 7960,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 7955,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "21174:1:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 8107,
                    "src": "21167:8:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "typeName": {
                      "id": 7954,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "21167:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7957,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "21184:1:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 8107,
                    "src": "21177:8:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "typeName": {
                      "id": 7956,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "21177:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7959,
                    "mutability": "mutable",
                    "name": "denominator",
                    "nameLocation": "21194:11:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 8107,
                    "src": "21187:18:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "typeName": {
                      "id": 7958,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "21187:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "21166:40:21"
              },
              "returnParameters": {
                "id": 7963,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 7962,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "21228:6:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 8107,
                    "src": "21221:13:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "typeName": {
                      "id": 7961,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "21221:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "21220:15:21"
              },
              "scope": 8329,
              "src": "21145:1462:21",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8327,
                "nodeType": "Block",
                "src": "23154:2257:21",
                "statements": [
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 8117,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8115,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8110,
                        "src": "23164:1:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 8116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23169:1:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "23164:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8121,
                    "nodeType": "IfStatement",
                    "src": "23160:37:21",
                    "trueBody": {
                      "id": 8120,
                      "nodeType": "Block",
                      "src": "23172:25:21",
                      "statements": [
                        {
                          "expression": {
                            "hexValue": "30",
                            "id": 8118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23189:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "functionReturnParameters": 8114,
                          "id": 8119,
                          "nodeType": "Return",
                          "src": "23182:8:21"
                        }
                      ]
                    }
                  },
                  {
                    "assignments": [
                      8123
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8123,
                        "mutability": "mutable",
                        "name": "xAux",
                        "nameLocation": "23933:4:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 8327,
                        "src": "23925:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8122,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23925:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8128,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 8126,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8110,
                          "src": "23948:1:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 8125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "23940:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 8124,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23940:7:21",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 8127,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23940:10:21",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "23925:25:21"
                  },
                  {
                    "expression": {
                      "id": 8131,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8129,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8113,
                        "src": "23956:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "hexValue": "31",
                        "id": 8130,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23965:1:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "23956:10:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 8132,
                    "nodeType": "ExpressionStatement",
                    "src": "23956:10:21"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 8137,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8133,
                        "name": "xAux",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8123,
                        "src": "23976:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                          "typeString": "int_const 3402...(31 digits omitted)...1456"
                        },
                        "id": 8136,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "32",
                          "id": 8134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "23984:1:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "hexValue": "313238",
                          "id": 8135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "23989:3:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "23984:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                          "typeString": "int_const 3402...(31 digits omitted)...1456"
                        }
                      },
                      "src": "23976:16:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8147,
                    "nodeType": "IfStatement",
                    "src": "23972:74:21",
                    "trueBody": {
                      "id": 8146,
                      "nodeType": "Block",
                      "src": "23994:52:21",
                      "statements": [
                        {
                          "expression": {
                            "id": 8140,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 8138,
                              "name": "xAux",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8123,
                              "src": "24004:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": ">>=",
                            "rightHandSide": {
                              "hexValue": "313238",
                              "id": 8139,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24013:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_128_by_1",
                                "typeString": "int_const 128"
                              },
                              "value": "128"
                            },
                            "src": "24004:12:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8141,
                          "nodeType": "ExpressionStatement",
                          "src": "24004:12:21"
                        },
                        {
                          "expression": {
                            "id": 8144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 8142,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8113,
                              "src": "24026:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "<<=",
                            "rightHandSide": {
                              "hexValue": "3634",
                              "id": 8143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24037:2:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_64_by_1",
                                "typeString": "int_const 64"
                              },
                              "value": "64"
                            },
                            "src": "24026:13:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8145,
                          "nodeType": "ExpressionStatement",
                          "src": "24026:13:21"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 8152,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8148,
                        "name": "xAux",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8123,
                        "src": "24055:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_rational_18446744073709551616_by_1",
                          "typeString": "int_const 18446744073709551616"
                        },
                        "id": 8151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "32",
                          "id": 8149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24063:1:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "hexValue": "3634",
                          "id": 8150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24068:2:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_64_by_1",
                            "typeString": "int_const 64"
                          },
                          "value": "64"
                        },
                        "src": "24063:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_18446744073709551616_by_1",
                          "typeString": "int_const 18446744073709551616"
                        }
                      },
                      "src": "24055:15:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8162,
                    "nodeType": "IfStatement",
                    "src": "24051:72:21",
                    "trueBody": {
                      "id": 8161,
                      "nodeType": "Block",
                      "src": "24072:51:21",
                      "statements": [
                        {
                          "expression": {
                            "id": 8155,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 8153,
                              "name": "xAux",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8123,
                              "src": "24082:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": ">>=",
                            "rightHandSide": {
                              "hexValue": "3634",
                              "id": 8154,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24091:2:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_64_by_1",
                                "typeString": "int_const 64"
                              },
                              "value": "64"
                            },
                            "src": "24082:11:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8156,
                          "nodeType": "ExpressionStatement",
                          "src": "24082:11:21"
                        },
                        {
                          "expression": {
                            "id": 8159,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 8157,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8113,
                              "src": "24103:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "<<=",
                            "rightHandSide": {
                              "hexValue": "3332",
                              "id": 8158,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24114:2:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              },
                              "value": "32"
                            },
                            "src": "24103:13:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8160,
                          "nodeType": "ExpressionStatement",
                          "src": "24103:13:21"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 8167,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8163,
                        "name": "xAux",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8123,
                        "src": "24132:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_rational_4294967296_by_1",
                          "typeString": "int_const 4294967296"
                        },
                        "id": 8166,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "32",
                          "id": 8164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24140:1:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "hexValue": "3332",
                          "id": 8165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24145:2:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_32_by_1",
                            "typeString": "int_const 32"
                          },
                          "value": "32"
                        },
                        "src": "24140:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4294967296_by_1",
                          "typeString": "int_const 4294967296"
                        }
                      },
                      "src": "24132:15:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8177,
                    "nodeType": "IfStatement",
                    "src": "24128:72:21",
                    "trueBody": {
                      "id": 8176,
                      "nodeType": "Block",
                      "src": "24149:51:21",
                      "statements": [
                        {
                          "expression": {
                            "id": 8170,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 8168,
                              "name": "xAux",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8123,
                              "src": "24159:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": ">>=",
                            "rightHandSide": {
                              "hexValue": "3332",
                              "id": 8169,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24168:2:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              },
                              "value": "32"
                            },
                            "src": "24159:11:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8171,
                          "nodeType": "ExpressionStatement",
                          "src": "24159:11:21"
                        },
                        {
                          "expression": {
                            "id": 8174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 8172,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8113,
                              "src": "24180:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "<<=",
                            "rightHandSide": {
                              "hexValue": "3136",
                              "id": 8173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24191:2:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_16_by_1",
                                "typeString": "int_const 16"
                              },
                              "value": "16"
                            },
                            "src": "24180:13:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8175,
                          "nodeType": "ExpressionStatement",
                          "src": "24180:13:21"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 8182,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8178,
                        "name": "xAux",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8123,
                        "src": "24209:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_rational_65536_by_1",
                          "typeString": "int_const 65536"
                        },
                        "id": 8181,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "32",
                          "id": 8179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24217:1:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "hexValue": "3136",
                          "id": 8180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24222:2:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_16_by_1",
                            "typeString": "int_const 16"
                          },
                          "value": "16"
                        },
                        "src": "24217:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_65536_by_1",
                          "typeString": "int_const 65536"
                        }
                      },
                      "src": "24209:15:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8192,
                    "nodeType": "IfStatement",
                    "src": "24205:71:21",
                    "trueBody": {
                      "id": 8191,
                      "nodeType": "Block",
                      "src": "24226:50:21",
                      "statements": [
                        {
                          "expression": {
                            "id": 8185,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 8183,
                              "name": "xAux",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8123,
                              "src": "24236:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": ">>=",
                            "rightHandSide": {
                              "hexValue": "3136",
                              "id": 8184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24245:2:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_16_by_1",
                                "typeString": "int_const 16"
                              },
                              "value": "16"
                            },
                            "src": "24236:11:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8186,
                          "nodeType": "ExpressionStatement",
                          "src": "24236:11:21"
                        },
                        {
                          "expression": {
                            "id": 8189,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 8187,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8113,
                              "src": "24257:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "<<=",
                            "rightHandSide": {
                              "hexValue": "38",
                              "id": 8188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24268:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_8_by_1",
                                "typeString": "int_const 8"
                              },
                              "value": "8"
                            },
                            "src": "24257:12:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8190,
                          "nodeType": "ExpressionStatement",
                          "src": "24257:12:21"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 8197,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8193,
                        "name": "xAux",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8123,
                        "src": "24285:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_rational_256_by_1",
                          "typeString": "int_const 256"
                        },
                        "id": 8196,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "32",
                          "id": 8194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24293:1:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "hexValue": "38",
                          "id": 8195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24298:1:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "8"
                        },
                        "src": "24293:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_256_by_1",
                          "typeString": "int_const 256"
                        }
                      },
                      "src": "24285:14:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8207,
                    "nodeType": "IfStatement",
                    "src": "24281:69:21",
                    "trueBody": {
                      "id": 8206,
                      "nodeType": "Block",
                      "src": "24301:49:21",
                      "statements": [
                        {
                          "expression": {
                            "id": 8200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 8198,
                              "name": "xAux",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8123,
                              "src": "24311:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": ">>=",
                            "rightHandSide": {
                              "hexValue": "38",
                              "id": 8199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24320:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_8_by_1",
                                "typeString": "int_const 8"
                              },
                              "value": "8"
                            },
                            "src": "24311:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8201,
                          "nodeType": "ExpressionStatement",
                          "src": "24311:10:21"
                        },
                        {
                          "expression": {
                            "id": 8204,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 8202,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8113,
                              "src": "24331:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "<<=",
                            "rightHandSide": {
                              "hexValue": "34",
                              "id": 8203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24342:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "src": "24331:12:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8205,
                          "nodeType": "ExpressionStatement",
                          "src": "24331:12:21"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 8212,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8208,
                        "name": "xAux",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8123,
                        "src": "24359:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_rational_16_by_1",
                          "typeString": "int_const 16"
                        },
                        "id": 8211,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "32",
                          "id": 8209,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24367:1:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "hexValue": "34",
                          "id": 8210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24372:1:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          },
                          "value": "4"
                        },
                        "src": "24367:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_16_by_1",
                          "typeString": "int_const 16"
                        }
                      },
                      "src": "24359:14:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8222,
                    "nodeType": "IfStatement",
                    "src": "24355:69:21",
                    "trueBody": {
                      "id": 8221,
                      "nodeType": "Block",
                      "src": "24375:49:21",
                      "statements": [
                        {
                          "expression": {
                            "id": 8215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 8213,
                              "name": "xAux",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8123,
                              "src": "24385:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": ">>=",
                            "rightHandSide": {
                              "hexValue": "34",
                              "id": 8214,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24394:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "src": "24385:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8216,
                          "nodeType": "ExpressionStatement",
                          "src": "24385:10:21"
                        },
                        {
                          "expression": {
                            "id": 8219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 8217,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8113,
                              "src": "24405:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "<<=",
                            "rightHandSide": {
                              "hexValue": "32",
                              "id": 8218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24416:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "24405:12:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8220,
                          "nodeType": "ExpressionStatement",
                          "src": "24405:12:21"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 8227,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8223,
                        "name": "xAux",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8123,
                        "src": "24433:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "id": 8226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "32",
                          "id": 8224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24441:1:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "hexValue": "32",
                          "id": 8225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24446:1:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "24441:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      },
                      "src": "24433:14:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8233,
                    "nodeType": "IfStatement",
                    "src": "24429:49:21",
                    "trueBody": {
                      "id": 8232,
                      "nodeType": "Block",
                      "src": "24449:29:21",
                      "statements": [
                        {
                          "expression": {
                            "id": 8230,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 8228,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8113,
                              "src": "24459:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "<<=",
                            "rightHandSide": {
                              "hexValue": "31",
                              "id": 8229,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24470:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "24459:12:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8231,
                          "nodeType": "ExpressionStatement",
                          "src": "24459:12:21"
                        }
                      ]
                    }
                  },
                  {
                    "id": 8326,
                    "nodeType": "UncheckedBlock",
                    "src": "24876:533:21",
                    "statements": [
                      {
                        "expression": {
                          "id": 8243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8234,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8113,
                            "src": "24896:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8242,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8239,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8235,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8113,
                                    "src": "24906:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8238,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8236,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8110,
                                      "src": "24915:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 8237,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8113,
                                      "src": "24919:6:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "24915:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "24906:19:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 8240,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "24905:21:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 8241,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24930:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "24905:26:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24896:35:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8244,
                        "nodeType": "ExpressionStatement",
                        "src": "24896:35:21"
                      },
                      {
                        "expression": {
                          "id": 8254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8245,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8113,
                            "src": "24941:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8253,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8250,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8246,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8113,
                                    "src": "24951:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8249,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8247,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8110,
                                      "src": "24960:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 8248,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8113,
                                      "src": "24964:6:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "24960:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "24951:19:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 8251,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "24950:21:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 8252,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24975:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "24950:26:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24941:35:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8255,
                        "nodeType": "ExpressionStatement",
                        "src": "24941:35:21"
                      },
                      {
                        "expression": {
                          "id": 8265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8256,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8113,
                            "src": "24986:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8264,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8261,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8257,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8113,
                                    "src": "24996:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8260,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8258,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8110,
                                      "src": "25005:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 8259,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8113,
                                      "src": "25009:6:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "25005:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "24996:19:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 8262,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "24995:21:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 8263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "25020:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "24995:26:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24986:35:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8266,
                        "nodeType": "ExpressionStatement",
                        "src": "24986:35:21"
                      },
                      {
                        "expression": {
                          "id": 8276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8267,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8113,
                            "src": "25031:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8272,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8268,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8113,
                                    "src": "25041:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8271,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8269,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8110,
                                      "src": "25050:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 8270,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8113,
                                      "src": "25054:6:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "25050:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "25041:19:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 8273,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "25040:21:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 8274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "25065:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "25040:26:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25031:35:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8277,
                        "nodeType": "ExpressionStatement",
                        "src": "25031:35:21"
                      },
                      {
                        "expression": {
                          "id": 8287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8278,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8113,
                            "src": "25076:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8286,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8283,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8279,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8113,
                                    "src": "25086:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8282,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8280,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8110,
                                      "src": "25095:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 8281,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8113,
                                      "src": "25099:6:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "25095:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "25086:19:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 8284,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "25085:21:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 8285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "25110:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "25085:26:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25076:35:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8288,
                        "nodeType": "ExpressionStatement",
                        "src": "25076:35:21"
                      },
                      {
                        "expression": {
                          "id": 8298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8289,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8113,
                            "src": "25121:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8297,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8294,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8290,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8113,
                                    "src": "25131:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8293,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8291,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8110,
                                      "src": "25140:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 8292,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8113,
                                      "src": "25144:6:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "25140:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "25131:19:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 8295,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "25130:21:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 8296,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "25155:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "25130:26:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25121:35:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8299,
                        "nodeType": "ExpressionStatement",
                        "src": "25121:35:21"
                      },
                      {
                        "expression": {
                          "id": 8309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8300,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8113,
                            "src": "25166:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8308,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8305,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8301,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8113,
                                    "src": "25176:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8304,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8302,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8110,
                                      "src": "25185:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 8303,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8113,
                                      "src": "25189:6:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "25185:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "25176:19:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 8306,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "25175:21:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 8307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "25200:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "25175:26:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25166:35:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8310,
                        "nodeType": "ExpressionStatement",
                        "src": "25166:35:21"
                      },
                      {
                        "assignments": [
                          8312
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8312,
                            "mutability": "mutable",
                            "name": "roundedResult",
                            "nameLocation": "25291:13:21",
                            "nodeType": "VariableDeclaration",
                            "scope": 8326,
                            "src": "25283:21:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8311,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25283:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8316,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8313,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8110,
                            "src": "25307:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 8314,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8113,
                            "src": "25311:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25307:10:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25283:34:21"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8317,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8113,
                            "src": "25331:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "id": 8318,
                            "name": "roundedResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8312,
                            "src": "25341:13:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25331:23:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8325,
                        "nodeType": "IfStatement",
                        "src": "25327:76:21",
                        "trueBody": {
                          "id": 8324,
                          "nodeType": "Block",
                          "src": "25356:47:21",
                          "statements": [
                            {
                              "expression": {
                                "id": 8322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8320,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8113,
                                  "src": "25370:6:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 8321,
                                  "name": "roundedResult",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8312,
                                  "src": "25379:13:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25370:22:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8323,
                              "nodeType": "ExpressionStatement",
                              "src": "25370:22:21"
                            }
                          ]
                        }
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 8108,
                "nodeType": "StructuredDocumentation",
                "src": "22609:490:21",
                "text": "@notice Calculates the square root of x using the Babylonian method.\n @dev See https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method.\n Notes:\n - If x is not a perfect square, the result is rounded down.\n - Credits to OpenZeppelin for the explanations in comments below.\n @param x The uint256 number for which to calculate the square root.\n @return result The result as a uint256.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 8328,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "sqrt",
              "nameLocation": "23108:4:21",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8111,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8110,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "23121:1:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 8328,
                    "src": "23113:9:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 8109,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "23113:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "23112:11:21"
              },
              "returnParameters": {
                "id": 8114,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8113,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "23146:6:21",
                    "nodeType": "VariableDeclaration",
                    "scope": 8328,
                    "src": "23138:14:21",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 8112,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "23138:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "23137:16:21"
              },
              "scope": 8329,
              "src": "23099:2312:21",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            }
          ],
          "src": "32:25380:21"
        },
        "id": 21
      },
      "@prb/math/src/UD60x18.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/UD60x18.sol",
          "exportedSymbols": {
            "Casting": [
              14175
            ],
            "CastingErrors": [
              12281
            ],
            "Common": [
              13419
            ],
            "E": [
              12689
            ],
            "EXP2_MAX_INPUT": [
              12713
            ],
            "EXP_MAX_INPUT": [
              12700
            ],
            "Errors": [
              13420
            ],
            "HALF_UNIT": [
              12724
            ],
            "Helpers": [
              14176
            ],
            "LOG2_10": [
              12735
            ],
            "LOG2_E": [
              12746
            ],
            "MAX_UD60x18": [
              12757
            ],
            "MAX_UINT128": [
              6628
            ],
            "MAX_UINT40": [
              6636
            ],
            "MAX_WHOLE_UD60x18": [
              12768
            ],
            "Math": [
              14177
            ],
            "PI": [
              12776
            ],
            "PRBMath_UD60x18_Ceil_Overflow": [
              12875
            ],
            "PRBMath_UD60x18_Convert_Overflow": [
              12880
            ],
            "PRBMath_UD60x18_Exp2_InputTooBig": [
              12892
            ],
            "PRBMath_UD60x18_Exp_InputTooBig": [
              12886
            ],
            "PRBMath_UD60x18_Gm_Overflow": [
              12901
            ],
            "PRBMath_UD60x18_IntoSD1x18_Overflow": [
              12907
            ],
            "PRBMath_UD60x18_IntoSD21x18_Overflow": [
              12913
            ],
            "PRBMath_UD60x18_IntoSD59x18_Overflow": [
              12919
            ],
            "PRBMath_UD60x18_IntoUD21x18_Overflow": [
              12931
            ],
            "PRBMath_UD60x18_IntoUD2x18_Overflow": [
              12925
            ],
            "PRBMath_UD60x18_IntoUint128_Overflow": [
              12937
            ],
            "PRBMath_UD60x18_IntoUint40_Overflow": [
              12943
            ],
            "PRBMath_UD60x18_Log_InputTooSmall": [
              12949
            ],
            "PRBMath_UD60x18_Sqrt_Overflow": [
              12955
            ],
            "SD1x18": [
              8686
            ],
            "SD21x18": [
              9041
            ],
            "SD59x18": [
              11699
            ],
            "UD21x18": [
              12015
            ],
            "UD2x18": [
              12269
            ],
            "UD60x18": [
              14179
            ],
            "UNIT": [
              12787
            ],
            "UNIT_SQUARED": [
              12798
            ],
            "ZERO": [
              12806
            ],
            "add": [
              12987
            ],
            "and": [
              13010
            ],
            "and2": [
              13036
            ],
            "avg": [
              13480
            ],
            "ceil": [
              13509
            ],
            "convert": [
              12834,
              12865
            ],
            "div": [
              13538
            ],
            "eq": [
              13059
            ],
            "exp": [
              13583
            ],
            "exp2": [
              13629
            ],
            "floor": [
              13641
            ],
            "frac": [
              13653
            ],
            "gm": [
              13720
            ],
            "gt": [
              13082
            ],
            "gte": [
              13105
            ],
            "intoSD1x18": [
              12354
            ],
            "intoSD21x18": [
              12402
            ],
            "intoSD59x18": [
              12522
            ],
            "intoUD21x18": [
              12480
            ],
            "intoUD2x18": [
              12441
            ],
            "intoUint128": [
              12574
            ],
            "intoUint256": [
              12539
            ],
            "intoUint40": [
              12609
            ],
            "inv": [
              13742
            ],
            "isZero": [
              13123
            ],
            "ln": [
              13768
            ],
            "log10": [
              13819
            ],
            "log2": [
              13923
            ],
            "lshift": [
              13146
            ],
            "lt": [
              13169
            ],
            "lte": [
              13192
            ],
            "mod": [
              13218
            ],
            "mul": [
              13951
            ],
            "neq": [
              13241
            ],
            "not": [
              13261
            ],
            "or": [
              13287
            ],
            "pow": [
              14058
            ],
            "powu": [
              14130
            ],
            "rshift": [
              13310
            ],
            "sqrt": [
              14172
            ],
            "sub": [
              13336
            ],
            "uEXP2_MAX_INPUT": [
              12706
            ],
            "uEXP_MAX_INPUT": [
              12693
            ],
            "uHALF_UNIT": [
              12717
            ],
            "uLOG2_10": [
              12728
            ],
            "uLOG2_E": [
              12739
            ],
            "uMAX_SD1x18": [
              8609
            ],
            "uMAX_SD21x18": [
              8964
            ],
            "uMAX_SD59x18": [
              9662
            ],
            "uMAX_UD21x18": [
              11974
            ],
            "uMAX_UD2x18": [
              12228
            ],
            "uMAX_UD60x18": [
              12750
            ],
            "uMAX_WHOLE_UD60x18": [
              12761
            ],
            "uUNIT": [
              12780
            ],
            "uUNIT_SQUARED": [
              12791
            ],
            "ud": [
              12626
            ],
            "ud60x18": [
              12643
            ],
            "uncheckedAdd": [
              13363
            ],
            "uncheckedSub": [
              13390
            ],
            "unwrap": [
              12660
            ],
            "wrap": [
              12677
            ],
            "xor": [
              13416
            ]
          },
          "id": 8338,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8330,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:22"
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Casting.sol",
              "file": "./ud60x18/Casting.sol",
              "id": 8331,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8338,
              "sourceUnit": 12678,
              "src": "1919:31:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Constants.sol",
              "file": "./ud60x18/Constants.sol",
              "id": 8332,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8338,
              "sourceUnit": 12807,
              "src": "1951:33:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Conversions.sol",
              "file": "./ud60x18/Conversions.sol",
              "id": 8333,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8338,
              "sourceUnit": 12866,
              "src": "1985:35:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Errors.sol",
              "file": "./ud60x18/Errors.sol",
              "id": 8334,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8338,
              "sourceUnit": 12956,
              "src": "2021:30:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Helpers.sol",
              "file": "./ud60x18/Helpers.sol",
              "id": 8335,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8338,
              "sourceUnit": 13417,
              "src": "2052:31:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Math.sol",
              "file": "./ud60x18/Math.sol",
              "id": 8336,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8338,
              "sourceUnit": 14173,
              "src": "2084:28:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/ValueType.sol",
              "file": "./ud60x18/ValueType.sol",
              "id": 8337,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8338,
              "sourceUnit": 14250,
              "src": "2113:33:22",
              "symbolAliases": [],
              "unitAlias": ""
            }
          ],
          "src": "32:2115:22"
        },
        "id": 22
      },
      "@prb/math/src/sd1x18/Casting.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/sd1x18/Casting.sol",
          "exportedSymbols": {
            "CastingErrors": [
              8341
            ],
            "Common": [
              8340
            ],
            "SD1x18": [
              8686
            ],
            "SD59x18": [
              11699
            ],
            "UD60x18": [
              14179
            ],
            "intoSD59x18": [
              8371
            ],
            "intoUD60x18": [
              8410
            ],
            "intoUint128": [
              8448
            ],
            "intoUint256": [
              8486
            ],
            "intoUint40": [
              8542
            ],
            "sd1x18": [
              8559
            ],
            "unwrap": [
              8576
            ],
            "wrap": [
              8593
            ]
          },
          "id": 8594,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8339,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:23"
            },
            {
              "absolutePath": "@prb/math/src/Common.sol",
              "file": "../Common.sol",
              "id": 8340,
              "nameLocation": "85:6:23",
              "nodeType": "ImportDirective",
              "scope": 8594,
              "sourceUnit": 8329,
              "src": "59:33:23",
              "symbolAliases": [],
              "unitAlias": "Common"
            },
            {
              "absolutePath": "@prb/math/src/sd1x18/Errors.sol",
              "file": "./Errors.sol",
              "id": 8341,
              "nameLocation": "118:13:23",
              "nodeType": "ImportDirective",
              "scope": 8594,
              "sourceUnit": 8682,
              "src": "93:39:23",
              "symbolAliases": [],
              "unitAlias": "CastingErrors"
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/ValueType.sol",
              "file": "../sd59x18/ValueType.sol",
              "id": 8343,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8594,
              "sourceUnit": 11774,
              "src": "133:51:23",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8342,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "142:7:23",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/ValueType.sol",
              "file": "../ud60x18/ValueType.sol",
              "id": 8345,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8594,
              "sourceUnit": 14250,
              "src": "185:51:23",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8344,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "194:7:23",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd1x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 8347,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8594,
              "sourceUnit": 8696,
              "src": "237:41:23",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8346,
                    "name": "SD1x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8686,
                    "src": "246:6:23",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "body": {
                "id": 8370,
                "nodeType": "Block",
                "src": "454:56:23",
                "statements": [
                  {
                    "expression": {
                      "id": 8368,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8357,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8355,
                        "src": "460:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 8364,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8351,
                                    "src": "503:1:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                                      "typeString": "SD1x18"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                                      "typeString": "SD1x18"
                                    }
                                  ],
                                  "expression": {
                                    "id": 8362,
                                    "name": "SD1x18",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8686,
                                    "src": "489:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD1x18_$8686_$",
                                      "typeString": "type(SD1x18)"
                                    }
                                  },
                                  "id": 8363,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "496:6:23",
                                  "memberName": "unwrap",
                                  "nodeType": "MemberAccess",
                                  "src": "489:13:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD1x18_$8686_$returns$_t_int64_$",
                                    "typeString": "function (SD1x18) pure returns (int64)"
                                  }
                                },
                                "id": 8365,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "489:16:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int64",
                                  "typeString": "int64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int64",
                                  "typeString": "int64"
                                }
                              ],
                              "id": 8361,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "482:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 8360,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "482:6:23",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8366,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "482:24:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "expression": {
                            "id": 8358,
                            "name": "SD59x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11699,
                            "src": "469:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "type(SD59x18)"
                            }
                          },
                          "id": 8359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "477:4:23",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "469:12:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 8367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "469:38:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "460:47:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 8369,
                    "nodeType": "ExpressionStatement",
                    "src": "460:47:23"
                  }
                ]
              },
              "documentation": {
                "id": 8348,
                "nodeType": "StructuredDocumentation",
                "src": "280:113:23",
                "text": "@notice Casts an SD1x18 number into SD59x18.\n @dev There is no overflow check because SD1x18 ⊆ SD59x18."
              },
              "id": 8371,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoSD59x18",
              "nameLocation": "402:11:23",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8352,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8351,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "421:1:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8371,
                    "src": "414:8:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                      "typeString": "SD1x18"
                    },
                    "typeName": {
                      "id": 8350,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8349,
                        "name": "SD1x18",
                        "nameLocations": [
                          "414:6:23"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8686,
                        "src": "414:6:23"
                      },
                      "referencedDeclaration": 8686,
                      "src": "414:6:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "413:10:23"
              },
              "returnParameters": {
                "id": 8356,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8355,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "446:6:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8371,
                    "src": "438:14:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 8354,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8353,
                        "name": "SD59x18",
                        "nameLocations": [
                          "438:7:23"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "438:7:23"
                      },
                      "referencedDeclaration": 11699,
                      "src": "438:7:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "437:16:23"
              },
              "scope": 8594,
              "src": "393:117:23",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8409,
                "nodeType": "Block",
                "src": "659:173:23",
                "statements": [
                  {
                    "assignments": [
                      8382
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8382,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "671:4:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 8409,
                        "src": "665:10:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        },
                        "typeName": {
                          "id": 8381,
                          "name": "int64",
                          "nodeType": "ElementaryTypeName",
                          "src": "665:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int64",
                            "typeString": "int64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8387,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 8385,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8375,
                          "src": "692:1:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                            "typeString": "SD1x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                            "typeString": "SD1x18"
                          }
                        ],
                        "expression": {
                          "id": 8383,
                          "name": "SD1x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8686,
                          "src": "678:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD1x18_$8686_$",
                            "typeString": "type(SD1x18)"
                          }
                        },
                        "id": 8384,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "685:6:23",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "678:13:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD1x18_$8686_$returns$_t_int64_$",
                          "typeString": "function (SD1x18) pure returns (int64)"
                        }
                      },
                      "id": 8386,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "678:16:23",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int64",
                        "typeString": "int64"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "665:29:23"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int64",
                        "typeString": "int64"
                      },
                      "id": 8390,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8388,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8382,
                        "src": "704:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 8389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "711:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "704:8:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8398,
                    "nodeType": "IfStatement",
                    "src": "700:89:23",
                    "trueBody": {
                      "id": 8397,
                      "nodeType": "Block",
                      "src": "714:75:23",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 8394,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8375,
                                "src": "780:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                                  "typeString": "SD1x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                                  "typeString": "SD1x18"
                                }
                              ],
                              "expression": {
                                "id": 8391,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8341,
                                "src": "731:13:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_8682",
                                  "typeString": "module \"@prb/math/src/sd1x18/Errors.sol\""
                                }
                              },
                              "id": 8393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "745:34:23",
                              "memberName": "PRBMath_SD1x18_ToUD60x18_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8657,
                              "src": "731:48:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD1x18_$8686_$returns$_t_error_$",
                                "typeString": "function (SD1x18) pure returns (error)"
                              }
                            },
                            "id": 8395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "731:51:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 8396,
                          "nodeType": "RevertStatement",
                          "src": "724:58:23"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 8407,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8399,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8379,
                        "src": "794:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 8404,
                                "name": "xInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8382,
                                "src": "823:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int64",
                                  "typeString": "int64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int64",
                                  "typeString": "int64"
                                }
                              ],
                              "id": 8403,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "816:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 8402,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "816:6:23",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "816:12:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "expression": {
                            "id": 8400,
                            "name": "UD60x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14179,
                            "src": "803:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "type(UD60x18)"
                            }
                          },
                          "id": 8401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "811:4:23",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "803:12:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 8406,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "803:26:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "794:35:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 8408,
                    "nodeType": "ExpressionStatement",
                    "src": "794:35:23"
                  }
                ]
              },
              "documentation": {
                "id": 8372,
                "nodeType": "StructuredDocumentation",
                "src": "512:86:23",
                "text": "@notice Casts an SD1x18 number into UD60x18.\n @dev Requirements:\n - x ≥ 0"
              },
              "id": 8410,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUD60x18",
              "nameLocation": "607:11:23",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8376,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8375,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "626:1:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8410,
                    "src": "619:8:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                      "typeString": "SD1x18"
                    },
                    "typeName": {
                      "id": 8374,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8373,
                        "name": "SD1x18",
                        "nameLocations": [
                          "619:6:23"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8686,
                        "src": "619:6:23"
                      },
                      "referencedDeclaration": 8686,
                      "src": "619:6:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "618:10:23"
              },
              "returnParameters": {
                "id": 8380,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8379,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "651:6:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8410,
                    "src": "643:14:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 8378,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8377,
                        "name": "UD60x18",
                        "nameLocations": [
                          "643:7:23"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "643:7:23"
                      },
                      "referencedDeclaration": 14179,
                      "src": "643:7:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "642:16:23"
              },
              "scope": 8594,
              "src": "598:234:23",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8447,
                "nodeType": "Block",
                "src": "981:168:23",
                "statements": [
                  {
                    "assignments": [
                      8420
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8420,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "993:4:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 8447,
                        "src": "987:10:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        },
                        "typeName": {
                          "id": 8419,
                          "name": "int64",
                          "nodeType": "ElementaryTypeName",
                          "src": "987:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int64",
                            "typeString": "int64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8425,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 8423,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8414,
                          "src": "1014:1:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                            "typeString": "SD1x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                            "typeString": "SD1x18"
                          }
                        ],
                        "expression": {
                          "id": 8421,
                          "name": "SD1x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8686,
                          "src": "1000:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD1x18_$8686_$",
                            "typeString": "type(SD1x18)"
                          }
                        },
                        "id": 8422,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1007:6:23",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "1000:13:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD1x18_$8686_$returns$_t_int64_$",
                          "typeString": "function (SD1x18) pure returns (int64)"
                        }
                      },
                      "id": 8424,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1000:16:23",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int64",
                        "typeString": "int64"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "987:29:23"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int64",
                        "typeString": "int64"
                      },
                      "id": 8428,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8426,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8420,
                        "src": "1026:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 8427,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1033:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "1026:8:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8436,
                    "nodeType": "IfStatement",
                    "src": "1022:89:23",
                    "trueBody": {
                      "id": 8435,
                      "nodeType": "Block",
                      "src": "1036:75:23",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 8432,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8414,
                                "src": "1102:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                                  "typeString": "SD1x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                                  "typeString": "SD1x18"
                                }
                              ],
                              "expression": {
                                "id": 8429,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8341,
                                "src": "1053:13:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_8682",
                                  "typeString": "module \"@prb/math/src/sd1x18/Errors.sol\""
                                }
                              },
                              "id": 8431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1067:34:23",
                              "memberName": "PRBMath_SD1x18_ToUint128_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8663,
                              "src": "1053:48:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD1x18_$8686_$returns$_t_error_$",
                                "typeString": "function (SD1x18) pure returns (error)"
                              }
                            },
                            "id": 8433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1053:51:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 8434,
                          "nodeType": "RevertStatement",
                          "src": "1046:58:23"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 8445,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8437,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8417,
                        "src": "1116:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 8442,
                                "name": "xInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8420,
                                "src": "1140:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int64",
                                  "typeString": "int64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int64",
                                  "typeString": "int64"
                                }
                              ],
                              "id": 8441,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1133:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 8440,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "1133:6:23",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1133:12:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 8439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1125:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint128_$",
                            "typeString": "type(uint128)"
                          },
                          "typeName": {
                            "id": 8438,
                            "name": "uint128",
                            "nodeType": "ElementaryTypeName",
                            "src": "1125:7:23",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 8444,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1125:21:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "1116:30:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "id": 8446,
                    "nodeType": "ExpressionStatement",
                    "src": "1116:30:23"
                  }
                ]
              },
              "documentation": {
                "id": 8411,
                "nodeType": "StructuredDocumentation",
                "src": "834:86:23",
                "text": "@notice Casts an SD1x18 number into uint128.\n @dev Requirements:\n - x ≥ 0"
              },
              "id": 8448,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint128",
              "nameLocation": "929:11:23",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8415,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8414,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "948:1:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8448,
                    "src": "941:8:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                      "typeString": "SD1x18"
                    },
                    "typeName": {
                      "id": 8413,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8412,
                        "name": "SD1x18",
                        "nameLocations": [
                          "941:6:23"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8686,
                        "src": "941:6:23"
                      },
                      "referencedDeclaration": 8686,
                      "src": "941:6:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "940:10:23"
              },
              "returnParameters": {
                "id": 8418,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8417,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "973:6:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8448,
                    "src": "965:14:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "typeName": {
                      "id": 8416,
                      "name": "uint128",
                      "nodeType": "ElementaryTypeName",
                      "src": "965:7:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "964:16:23"
              },
              "scope": 8594,
              "src": "920:229:23",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8485,
                "nodeType": "Block",
                "src": "1298:168:23",
                "statements": [
                  {
                    "assignments": [
                      8458
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8458,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "1310:4:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 8485,
                        "src": "1304:10:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        },
                        "typeName": {
                          "id": 8457,
                          "name": "int64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1304:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int64",
                            "typeString": "int64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8463,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 8461,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8452,
                          "src": "1331:1:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                            "typeString": "SD1x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                            "typeString": "SD1x18"
                          }
                        ],
                        "expression": {
                          "id": 8459,
                          "name": "SD1x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8686,
                          "src": "1317:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD1x18_$8686_$",
                            "typeString": "type(SD1x18)"
                          }
                        },
                        "id": 8460,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1324:6:23",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "1317:13:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD1x18_$8686_$returns$_t_int64_$",
                          "typeString": "function (SD1x18) pure returns (int64)"
                        }
                      },
                      "id": 8462,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1317:16:23",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int64",
                        "typeString": "int64"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1304:29:23"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int64",
                        "typeString": "int64"
                      },
                      "id": 8466,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8464,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8458,
                        "src": "1343:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 8465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1350:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "1343:8:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8474,
                    "nodeType": "IfStatement",
                    "src": "1339:89:23",
                    "trueBody": {
                      "id": 8473,
                      "nodeType": "Block",
                      "src": "1353:75:23",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 8470,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8452,
                                "src": "1419:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                                  "typeString": "SD1x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                                  "typeString": "SD1x18"
                                }
                              ],
                              "expression": {
                                "id": 8467,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8341,
                                "src": "1370:13:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_8682",
                                  "typeString": "module \"@prb/math/src/sd1x18/Errors.sol\""
                                }
                              },
                              "id": 8469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1384:34:23",
                              "memberName": "PRBMath_SD1x18_ToUint256_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8669,
                              "src": "1370:48:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD1x18_$8686_$returns$_t_error_$",
                                "typeString": "function (SD1x18) pure returns (error)"
                              }
                            },
                            "id": 8471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1370:51:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 8472,
                          "nodeType": "RevertStatement",
                          "src": "1363:58:23"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 8483,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8475,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8455,
                        "src": "1433:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 8480,
                                "name": "xInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8458,
                                "src": "1457:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int64",
                                  "typeString": "int64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int64",
                                  "typeString": "int64"
                                }
                              ],
                              "id": 8479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1450:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 8478,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "1450:6:23",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1450:12:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 8477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1442:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 8476,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1442:7:23",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 8482,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1442:21:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1433:30:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 8484,
                    "nodeType": "ExpressionStatement",
                    "src": "1433:30:23"
                  }
                ]
              },
              "documentation": {
                "id": 8449,
                "nodeType": "StructuredDocumentation",
                "src": "1151:86:23",
                "text": "@notice Casts an SD1x18 number into uint256.\n @dev Requirements:\n - x ≥ 0"
              },
              "id": 8486,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint256",
              "nameLocation": "1246:11:23",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8453,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8452,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1265:1:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8486,
                    "src": "1258:8:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                      "typeString": "SD1x18"
                    },
                    "typeName": {
                      "id": 8451,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8450,
                        "name": "SD1x18",
                        "nameLocations": [
                          "1258:6:23"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8686,
                        "src": "1258:6:23"
                      },
                      "referencedDeclaration": 8686,
                      "src": "1258:6:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1257:10:23"
              },
              "returnParameters": {
                "id": 8456,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8455,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1290:6:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8486,
                    "src": "1282:14:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 8454,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1282:7:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1281:16:23"
              },
              "scope": 8594,
              "src": "1237:229:23",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8541,
                "nodeType": "Block",
                "src": "1635:289:23",
                "statements": [
                  {
                    "assignments": [
                      8496
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8496,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "1647:4:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 8541,
                        "src": "1641:10:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        },
                        "typeName": {
                          "id": 8495,
                          "name": "int64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1641:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int64",
                            "typeString": "int64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8501,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 8499,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8490,
                          "src": "1668:1:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                            "typeString": "SD1x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                            "typeString": "SD1x18"
                          }
                        ],
                        "expression": {
                          "id": 8497,
                          "name": "SD1x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8686,
                          "src": "1654:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD1x18_$8686_$",
                            "typeString": "type(SD1x18)"
                          }
                        },
                        "id": 8498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1661:6:23",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "1654:13:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD1x18_$8686_$returns$_t_int64_$",
                          "typeString": "function (SD1x18) pure returns (int64)"
                        }
                      },
                      "id": 8500,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1654:16:23",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int64",
                        "typeString": "int64"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1641:29:23"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int64",
                        "typeString": "int64"
                      },
                      "id": 8504,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8502,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8496,
                        "src": "1680:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 8503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1687:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "1680:8:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8512,
                    "nodeType": "IfStatement",
                    "src": "1676:88:23",
                    "trueBody": {
                      "id": 8511,
                      "nodeType": "Block",
                      "src": "1690:74:23",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 8508,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8490,
                                "src": "1755:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                                  "typeString": "SD1x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                                  "typeString": "SD1x18"
                                }
                              ],
                              "expression": {
                                "id": 8505,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8341,
                                "src": "1707:13:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_8682",
                                  "typeString": "module \"@prb/math/src/sd1x18/Errors.sol\""
                                }
                              },
                              "id": 8507,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1721:33:23",
                              "memberName": "PRBMath_SD1x18_ToUint40_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8681,
                              "src": "1707:47:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD1x18_$8686_$returns$_t_error_$",
                                "typeString": "function (SD1x18) pure returns (error)"
                              }
                            },
                            "id": 8509,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1707:50:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 8510,
                          "nodeType": "RevertStatement",
                          "src": "1700:57:23"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int64",
                        "typeString": "int64"
                      },
                      "id": 8522,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8513,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8496,
                        "src": "1773:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 8518,
                                  "name": "Common",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8340,
                                  "src": "1793:6:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_module_8329",
                                    "typeString": "module \"@prb/math/src/Common.sol\""
                                  }
                                },
                                "id": 8519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "1800:10:23",
                                "memberName": "MAX_UINT40",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6636,
                                "src": "1793:17:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              ],
                              "id": 8517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1786:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 8516,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "1786:6:23",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8520,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1786:25:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 8515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1780:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_int64_$",
                            "typeString": "type(int64)"
                          },
                          "typeName": {
                            "id": 8514,
                            "name": "int64",
                            "nodeType": "ElementaryTypeName",
                            "src": "1780:5:23",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 8521,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1780:32:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        }
                      },
                      "src": "1773:39:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8530,
                    "nodeType": "IfStatement",
                    "src": "1769:118:23",
                    "trueBody": {
                      "id": 8529,
                      "nodeType": "Block",
                      "src": "1814:73:23",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 8526,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8490,
                                "src": "1878:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                                  "typeString": "SD1x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                                  "typeString": "SD1x18"
                                }
                              ],
                              "expression": {
                                "id": 8523,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8341,
                                "src": "1831:13:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_8682",
                                  "typeString": "module \"@prb/math/src/sd1x18/Errors.sol\""
                                }
                              },
                              "id": 8525,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1845:32:23",
                              "memberName": "PRBMath_SD1x18_ToUint40_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8675,
                              "src": "1831:46:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD1x18_$8686_$returns$_t_error_$",
                                "typeString": "function (SD1x18) pure returns (error)"
                              }
                            },
                            "id": 8527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1831:49:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 8528,
                          "nodeType": "RevertStatement",
                          "src": "1824:56:23"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 8539,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8531,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8493,
                        "src": "1892:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 8536,
                                "name": "xInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8496,
                                "src": "1915:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int64",
                                  "typeString": "int64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int64",
                                  "typeString": "int64"
                                }
                              ],
                              "id": 8535,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1908:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 8534,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "1908:6:23",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8537,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1908:12:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 8533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1901:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint40_$",
                            "typeString": "type(uint40)"
                          },
                          "typeName": {
                            "id": 8532,
                            "name": "uint40",
                            "nodeType": "ElementaryTypeName",
                            "src": "1901:6:23",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 8538,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1901:20:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "src": "1892:29:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "id": 8540,
                    "nodeType": "ExpressionStatement",
                    "src": "1892:29:23"
                  }
                ]
              },
              "documentation": {
                "id": 8487,
                "nodeType": "StructuredDocumentation",
                "src": "1468:108:23",
                "text": "@notice Casts an SD1x18 number into uint40.\n @dev Requirements:\n - x ≥ 0\n - x ≤ MAX_UINT40"
              },
              "id": 8542,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint40",
              "nameLocation": "1585:10:23",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8491,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8490,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1603:1:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8542,
                    "src": "1596:8:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                      "typeString": "SD1x18"
                    },
                    "typeName": {
                      "id": 8489,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8488,
                        "name": "SD1x18",
                        "nameLocations": [
                          "1596:6:23"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8686,
                        "src": "1596:6:23"
                      },
                      "referencedDeclaration": 8686,
                      "src": "1596:6:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1595:10:23"
              },
              "returnParameters": {
                "id": 8494,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8493,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1627:6:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8542,
                    "src": "1620:13:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    },
                    "typeName": {
                      "id": 8492,
                      "name": "uint40",
                      "nodeType": "ElementaryTypeName",
                      "src": "1620:6:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1619:15:23"
              },
              "scope": 8594,
              "src": "1576:348:23",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8558,
                "nodeType": "Block",
                "src": "2010:32:23",
                "statements": [
                  {
                    "expression": {
                      "id": 8556,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8551,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8549,
                        "src": "2016:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                          "typeString": "SD1x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 8554,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8545,
                            "src": "2037:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int64",
                              "typeString": "int64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int64",
                              "typeString": "int64"
                            }
                          ],
                          "expression": {
                            "id": 8552,
                            "name": "SD1x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8686,
                            "src": "2025:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD1x18_$8686_$",
                              "typeString": "type(SD1x18)"
                            }
                          },
                          "id": 8553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2032:4:23",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "2025:11:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int64_$returns$_t_userDefinedValueType$_SD1x18_$8686_$",
                            "typeString": "function (int64) pure returns (SD1x18)"
                          }
                        },
                        "id": 8555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2025:14:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                          "typeString": "SD1x18"
                        }
                      },
                      "src": "2016:23:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "id": 8557,
                    "nodeType": "ExpressionStatement",
                    "src": "2016:23:23"
                  }
                ]
              },
              "documentation": {
                "id": 8543,
                "nodeType": "StructuredDocumentation",
                "src": "1926:30:23",
                "text": "@notice Alias for {wrap}."
              },
              "id": 8559,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "sd1x18",
              "nameLocation": "1965:6:23",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8546,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8545,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1978:1:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8559,
                    "src": "1972:7:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int64",
                      "typeString": "int64"
                    },
                    "typeName": {
                      "id": 8544,
                      "name": "int64",
                      "nodeType": "ElementaryTypeName",
                      "src": "1972:5:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int64",
                        "typeString": "int64"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1971:9:23"
              },
              "returnParameters": {
                "id": 8550,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8549,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2002:6:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8559,
                    "src": "1995:13:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                      "typeString": "SD1x18"
                    },
                    "typeName": {
                      "id": 8548,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8547,
                        "name": "SD1x18",
                        "nameLocations": [
                          "1995:6:23"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8686,
                        "src": "1995:6:23"
                      },
                      "referencedDeclaration": 8686,
                      "src": "1995:6:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1994:15:23"
              },
              "scope": 8594,
              "src": "1956:86:23",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8575,
                "nodeType": "Block",
                "src": "2147:34:23",
                "statements": [
                  {
                    "expression": {
                      "id": 8573,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8568,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8566,
                        "src": "2153:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 8571,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8563,
                            "src": "2176:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                              "typeString": "SD1x18"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                              "typeString": "SD1x18"
                            }
                          ],
                          "expression": {
                            "id": 8569,
                            "name": "SD1x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8686,
                            "src": "2162:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD1x18_$8686_$",
                              "typeString": "type(SD1x18)"
                            }
                          },
                          "id": 8570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2169:6:23",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "src": "2162:13:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD1x18_$8686_$returns$_t_int64_$",
                            "typeString": "function (SD1x18) pure returns (int64)"
                          }
                        },
                        "id": 8572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2162:16:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        }
                      },
                      "src": "2153:25:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int64",
                        "typeString": "int64"
                      }
                    },
                    "id": 8574,
                    "nodeType": "ExpressionStatement",
                    "src": "2153:25:23"
                  }
                ]
              },
              "documentation": {
                "id": 8560,
                "nodeType": "StructuredDocumentation",
                "src": "2044:49:23",
                "text": "@notice Unwraps an SD1x18 number into int64."
              },
              "id": 8576,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "unwrap",
              "nameLocation": "2102:6:23",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8564,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8563,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2116:1:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8576,
                    "src": "2109:8:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                      "typeString": "SD1x18"
                    },
                    "typeName": {
                      "id": 8562,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8561,
                        "name": "SD1x18",
                        "nameLocations": [
                          "2109:6:23"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8686,
                        "src": "2109:6:23"
                      },
                      "referencedDeclaration": 8686,
                      "src": "2109:6:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2108:10:23"
              },
              "returnParameters": {
                "id": 8567,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8566,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2139:6:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8576,
                    "src": "2133:12:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int64",
                      "typeString": "int64"
                    },
                    "typeName": {
                      "id": 8565,
                      "name": "int64",
                      "nodeType": "ElementaryTypeName",
                      "src": "2133:5:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int64",
                        "typeString": "int64"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2132:14:23"
              },
              "scope": 8594,
              "src": "2093:88:23",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8592,
                "nodeType": "Block",
                "src": "2282:32:23",
                "statements": [
                  {
                    "expression": {
                      "id": 8590,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8585,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8583,
                        "src": "2288:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                          "typeString": "SD1x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 8588,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8579,
                            "src": "2309:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int64",
                              "typeString": "int64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int64",
                              "typeString": "int64"
                            }
                          ],
                          "expression": {
                            "id": 8586,
                            "name": "SD1x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8686,
                            "src": "2297:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD1x18_$8686_$",
                              "typeString": "type(SD1x18)"
                            }
                          },
                          "id": 8587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2304:4:23",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "2297:11:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int64_$returns$_t_userDefinedValueType$_SD1x18_$8686_$",
                            "typeString": "function (int64) pure returns (SD1x18)"
                          }
                        },
                        "id": 8589,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2297:14:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                          "typeString": "SD1x18"
                        }
                      },
                      "src": "2288:23:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "id": 8591,
                    "nodeType": "ExpressionStatement",
                    "src": "2288:23:23"
                  }
                ]
              },
              "documentation": {
                "id": 8577,
                "nodeType": "StructuredDocumentation",
                "src": "2183:47:23",
                "text": "@notice Wraps an int64 number into SD1x18."
              },
              "id": 8593,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "wrap",
              "nameLocation": "2239:4:23",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8580,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8579,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2250:1:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8593,
                    "src": "2244:7:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int64",
                      "typeString": "int64"
                    },
                    "typeName": {
                      "id": 8578,
                      "name": "int64",
                      "nodeType": "ElementaryTypeName",
                      "src": "2244:5:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int64",
                        "typeString": "int64"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2243:9:23"
              },
              "returnParameters": {
                "id": 8584,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8583,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2274:6:23",
                    "nodeType": "VariableDeclaration",
                    "scope": 8593,
                    "src": "2267:13:23",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                      "typeString": "SD1x18"
                    },
                    "typeName": {
                      "id": 8582,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8581,
                        "name": "SD1x18",
                        "nameLocations": [
                          "2267:6:23"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8686,
                        "src": "2267:6:23"
                      },
                      "referencedDeclaration": 8686,
                      "src": "2267:6:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2266:15:23"
              },
              "scope": 8594,
              "src": "2230:84:23",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            }
          ],
          "src": "32:2283:23"
        },
        "id": 23
      },
      "@prb/math/src/sd1x18/Constants.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/sd1x18/Constants.sol",
          "exportedSymbols": {
            "E": [
              8605
            ],
            "MAX_SD1x18": [
              8616
            ],
            "MIN_SD1x18": [
              8628
            ],
            "PI": [
              8636
            ],
            "SD1x18": [
              8686
            ],
            "UNIT": [
              8644
            ],
            "uMAX_SD1x18": [
              8609
            ],
            "uMIN_SD1x18": [
              8621
            ],
            "uUNIT": [
              8647
            ]
          },
          "id": 8648,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8595,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:24"
            },
            {
              "absolutePath": "@prb/math/src/sd1x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 8597,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8648,
              "sourceUnit": 8696,
              "src": "59:41:24",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8596,
                    "name": "SD1x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8686,
                    "src": "68:6:24",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "constant": true,
              "id": 8605,
              "mutability": "constant",
              "name": "E",
              "nameLocation": "163:1:24",
              "nodeType": "VariableDeclaration",
              "scope": 8648,
              "src": "147:53:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                "typeString": "SD1x18"
              },
              "typeName": {
                "id": 8600,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 8599,
                  "name": "SD1x18",
                  "nameLocations": [
                    "147:6:24"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 8686,
                  "src": "147:6:24"
                },
                "referencedDeclaration": 8686,
                "src": "147:6:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                  "typeString": "SD1x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "325f373138323831383238343539303435323335",
                    "id": 8603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "179:20:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2718281828459045235_by_1",
                      "typeString": "int_const 2718281828459045235"
                    },
                    "value": "2_718281828459045235"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_2718281828459045235_by_1",
                      "typeString": "int_const 2718281828459045235"
                    }
                  ],
                  "expression": {
                    "id": 8601,
                    "name": "SD1x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8686,
                    "src": "167:6:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD1x18_$8686_$",
                      "typeString": "type(SD1x18)"
                    }
                  },
                  "id": 8602,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "174:4:24",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "167:11:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int64_$returns$_t_userDefinedValueType$_SD1x18_$8686_$",
                    "typeString": "function (int64) pure returns (SD1x18)"
                  }
                },
                "id": 8604,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "167:33:24",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                  "typeString": "SD1x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8609,
              "mutability": "constant",
              "name": "uMAX_SD1x18",
              "nameLocation": "272:11:24",
              "nodeType": "VariableDeclaration",
              "scope": 8648,
              "src": "257:49:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int64",
                "typeString": "int64"
              },
              "typeName": {
                "id": 8607,
                "name": "int64",
                "nodeType": "ElementaryTypeName",
                "src": "257:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_int64",
                  "typeString": "int64"
                }
              },
              "value": {
                "hexValue": "395f323233333732303336383534373735383037",
                "id": 8608,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "286:20:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_9223372036854775807_by_1",
                  "typeString": "int_const 9223372036854775807"
                },
                "value": "9_223372036854775807"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8616,
              "mutability": "constant",
              "name": "MAX_SD1x18",
              "nameLocation": "324:10:24",
              "nodeType": "VariableDeclaration",
              "scope": 8648,
              "src": "308:53:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                "typeString": "SD1x18"
              },
              "typeName": {
                "id": 8611,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 8610,
                  "name": "SD1x18",
                  "nameLocations": [
                    "308:6:24"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 8686,
                  "src": "308:6:24"
                },
                "referencedDeclaration": 8686,
                "src": "308:6:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                  "typeString": "SD1x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 8614,
                    "name": "uMAX_SD1x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8609,
                    "src": "349:11:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int64",
                      "typeString": "int64"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int64",
                      "typeString": "int64"
                    }
                  ],
                  "expression": {
                    "id": 8612,
                    "name": "SD1x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8686,
                    "src": "337:6:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD1x18_$8686_$",
                      "typeString": "type(SD1x18)"
                    }
                  },
                  "id": 8613,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "344:4:24",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "337:11:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int64_$returns$_t_userDefinedValueType$_SD1x18_$8686_$",
                    "typeString": "function (int64) pure returns (SD1x18)"
                  }
                },
                "id": 8615,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "337:24:24",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                  "typeString": "SD1x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8621,
              "mutability": "constant",
              "name": "uMIN_SD1x18",
              "nameLocation": "433:11:24",
              "nodeType": "VariableDeclaration",
              "scope": 8648,
              "src": "418:50:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int64",
                "typeString": "int64"
              },
              "typeName": {
                "id": 8618,
                "name": "int64",
                "nodeType": "ElementaryTypeName",
                "src": "418:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_int64",
                  "typeString": "int64"
                }
              },
              "value": {
                "id": 8620,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "UnaryOperation",
                "operator": "-",
                "prefix": true,
                "src": "447:21:24",
                "subExpression": {
                  "hexValue": "395f323233333732303336383534373735383038",
                  "id": 8619,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "448:20:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_9223372036854775808_by_1",
                    "typeString": "int_const 9223372036854775808"
                  },
                  "value": "9_223372036854775808"
                },
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_minus_9223372036854775808_by_1",
                  "typeString": "int_const -9223372036854775808"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8628,
              "mutability": "constant",
              "name": "MIN_SD1x18",
              "nameLocation": "486:10:24",
              "nodeType": "VariableDeclaration",
              "scope": 8648,
              "src": "470:53:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                "typeString": "SD1x18"
              },
              "typeName": {
                "id": 8623,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 8622,
                  "name": "SD1x18",
                  "nameLocations": [
                    "470:6:24"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 8686,
                  "src": "470:6:24"
                },
                "referencedDeclaration": 8686,
                "src": "470:6:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                  "typeString": "SD1x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 8626,
                    "name": "uMIN_SD1x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8621,
                    "src": "511:11:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int64",
                      "typeString": "int64"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int64",
                      "typeString": "int64"
                    }
                  ],
                  "expression": {
                    "id": 8624,
                    "name": "SD1x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8686,
                    "src": "499:6:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD1x18_$8686_$",
                      "typeString": "type(SD1x18)"
                    }
                  },
                  "id": 8625,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "506:4:24",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "499:11:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int64_$returns$_t_userDefinedValueType$_SD1x18_$8686_$",
                    "typeString": "function (int64) pure returns (SD1x18)"
                  }
                },
                "id": 8627,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "499:24:24",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                  "typeString": "SD1x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8636,
              "mutability": "constant",
              "name": "PI",
              "nameLocation": "575:2:24",
              "nodeType": "VariableDeclaration",
              "scope": 8648,
              "src": "559:54:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                "typeString": "SD1x18"
              },
              "typeName": {
                "id": 8631,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 8630,
                  "name": "SD1x18",
                  "nameLocations": [
                    "559:6:24"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 8686,
                  "src": "559:6:24"
                },
                "referencedDeclaration": 8686,
                "src": "559:6:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                  "typeString": "SD1x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "335f313431353932363533353839373933323338",
                    "id": 8634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "592:20:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3141592653589793238_by_1",
                      "typeString": "int_const 3141592653589793238"
                    },
                    "value": "3_141592653589793238"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_3141592653589793238_by_1",
                      "typeString": "int_const 3141592653589793238"
                    }
                  ],
                  "expression": {
                    "id": 8632,
                    "name": "SD1x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8686,
                    "src": "580:6:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD1x18_$8686_$",
                      "typeString": "type(SD1x18)"
                    }
                  },
                  "id": 8633,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "587:4:24",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "580:11:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int64_$returns$_t_userDefinedValueType$_SD1x18_$8686_$",
                    "typeString": "function (int64) pure returns (SD1x18)"
                  }
                },
                "id": 8635,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "580:33:24",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                  "typeString": "SD1x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8644,
              "mutability": "constant",
              "name": "UNIT",
              "nameLocation": "703:4:24",
              "nodeType": "VariableDeclaration",
              "scope": 8648,
              "src": "687:40:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                "typeString": "SD1x18"
              },
              "typeName": {
                "id": 8639,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 8638,
                  "name": "SD1x18",
                  "nameLocations": [
                    "687:6:24"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 8686,
                  "src": "687:6:24"
                },
                "referencedDeclaration": 8686,
                "src": "687:6:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                  "typeString": "SD1x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "31653138",
                    "id": 8642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "722:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "value": "1e18"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    }
                  ],
                  "expression": {
                    "id": 8640,
                    "name": "SD1x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8686,
                    "src": "710:6:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD1x18_$8686_$",
                      "typeString": "type(SD1x18)"
                    }
                  },
                  "id": 8641,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "717:4:24",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "710:11:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int64_$returns$_t_userDefinedValueType$_SD1x18_$8686_$",
                    "typeString": "function (int64) pure returns (SD1x18)"
                  }
                },
                "id": 8643,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "710:17:24",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                  "typeString": "SD1x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8647,
              "mutability": "constant",
              "name": "uUNIT",
              "nameLocation": "744:5:24",
              "nodeType": "VariableDeclaration",
              "scope": 8648,
              "src": "729:27:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int64",
                "typeString": "int64"
              },
              "typeName": {
                "id": 8645,
                "name": "int64",
                "nodeType": "ElementaryTypeName",
                "src": "729:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_int64",
                  "typeString": "int64"
                }
              },
              "value": {
                "hexValue": "31653138",
                "id": 8646,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "752:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                  "typeString": "int_const 1000000000000000000"
                },
                "value": "1e18"
              },
              "visibility": "internal"
            }
          ],
          "src": "32:726:24"
        },
        "id": 24
      },
      "@prb/math/src/sd1x18/Errors.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/sd1x18/Errors.sol",
          "exportedSymbols": {
            "PRBMath_SD1x18_ToUD60x18_Underflow": [
              8657
            ],
            "PRBMath_SD1x18_ToUint128_Underflow": [
              8663
            ],
            "PRBMath_SD1x18_ToUint256_Underflow": [
              8669
            ],
            "PRBMath_SD1x18_ToUint40_Overflow": [
              8675
            ],
            "PRBMath_SD1x18_ToUint40_Underflow": [
              8681
            ],
            "SD1x18": [
              8686
            ]
          },
          "id": 8682,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8649,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:25"
            },
            {
              "absolutePath": "@prb/math/src/sd1x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 8651,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8682,
              "sourceUnit": 8696,
              "src": "59:41:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8650,
                    "name": "SD1x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8686,
                    "src": "68:6:25",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "documentation": {
                "id": 8652,
                "nodeType": "StructuredDocumentation",
                "src": "102:85:25",
                "text": "@notice Thrown when trying to cast an SD1x18 number that doesn't fit in UD60x18."
              },
              "errorSelector": "2f990a1f",
              "id": 8657,
              "name": "PRBMath_SD1x18_ToUD60x18_Underflow",
              "nameLocation": "193:34:25",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 8656,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8655,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "235:1:25",
                    "nodeType": "VariableDeclaration",
                    "scope": 8657,
                    "src": "228:8:25",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                      "typeString": "SD1x18"
                    },
                    "typeName": {
                      "id": 8654,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8653,
                        "name": "SD1x18",
                        "nameLocations": [
                          "228:6:25"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8686,
                        "src": "228:6:25"
                      },
                      "referencedDeclaration": 8686,
                      "src": "228:6:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "227:10:25"
              },
              "src": "187:51:25"
            },
            {
              "documentation": {
                "id": 8658,
                "nodeType": "StructuredDocumentation",
                "src": "240:85:25",
                "text": "@notice Thrown when trying to cast an SD1x18 number that doesn't fit in uint128."
              },
              "errorSelector": "19fcc664",
              "id": 8663,
              "name": "PRBMath_SD1x18_ToUint128_Underflow",
              "nameLocation": "331:34:25",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 8662,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8661,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "373:1:25",
                    "nodeType": "VariableDeclaration",
                    "scope": 8663,
                    "src": "366:8:25",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                      "typeString": "SD1x18"
                    },
                    "typeName": {
                      "id": 8660,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8659,
                        "name": "SD1x18",
                        "nameLocations": [
                          "366:6:25"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8686,
                        "src": "366:6:25"
                      },
                      "referencedDeclaration": 8686,
                      "src": "366:6:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "365:10:25"
              },
              "src": "325:51:25"
            },
            {
              "documentation": {
                "id": 8664,
                "nodeType": "StructuredDocumentation",
                "src": "378:85:25",
                "text": "@notice Thrown when trying to cast an SD1x18 number that doesn't fit in uint256."
              },
              "errorSelector": "9b5f93cd",
              "id": 8669,
              "name": "PRBMath_SD1x18_ToUint256_Underflow",
              "nameLocation": "469:34:25",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 8668,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8667,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "511:1:25",
                    "nodeType": "VariableDeclaration",
                    "scope": 8669,
                    "src": "504:8:25",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                      "typeString": "SD1x18"
                    },
                    "typeName": {
                      "id": 8666,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8665,
                        "name": "SD1x18",
                        "nameLocations": [
                          "504:6:25"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8686,
                        "src": "504:6:25"
                      },
                      "referencedDeclaration": 8686,
                      "src": "504:6:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "503:10:25"
              },
              "src": "463:51:25"
            },
            {
              "documentation": {
                "id": 8670,
                "nodeType": "StructuredDocumentation",
                "src": "516:84:25",
                "text": "@notice Thrown when trying to cast an SD1x18 number that doesn't fit in uint40."
              },
              "errorSelector": "3568132d",
              "id": 8675,
              "name": "PRBMath_SD1x18_ToUint40_Overflow",
              "nameLocation": "606:32:25",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 8674,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8673,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "646:1:25",
                    "nodeType": "VariableDeclaration",
                    "scope": 8675,
                    "src": "639:8:25",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                      "typeString": "SD1x18"
                    },
                    "typeName": {
                      "id": 8672,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8671,
                        "name": "SD1x18",
                        "nameLocations": [
                          "639:6:25"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8686,
                        "src": "639:6:25"
                      },
                      "referencedDeclaration": 8686,
                      "src": "639:6:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "638:10:25"
              },
              "src": "600:49:25"
            },
            {
              "documentation": {
                "id": 8676,
                "nodeType": "StructuredDocumentation",
                "src": "651:84:25",
                "text": "@notice Thrown when trying to cast an SD1x18 number that doesn't fit in uint40."
              },
              "errorSelector": "30de4027",
              "id": 8681,
              "name": "PRBMath_SD1x18_ToUint40_Underflow",
              "nameLocation": "741:33:25",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 8680,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8679,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "782:1:25",
                    "nodeType": "VariableDeclaration",
                    "scope": 8681,
                    "src": "775:8:25",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                      "typeString": "SD1x18"
                    },
                    "typeName": {
                      "id": 8678,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8677,
                        "name": "SD1x18",
                        "nameLocations": [
                          "775:6:25"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8686,
                        "src": "775:6:25"
                      },
                      "referencedDeclaration": 8686,
                      "src": "775:6:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "774:10:25"
              },
              "src": "735:50:25"
            }
          ],
          "src": "32:754:25"
        },
        "id": 25
      },
      "@prb/math/src/sd1x18/ValueType.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/sd1x18/ValueType.sol",
          "exportedSymbols": {
            "Casting": [
              8684
            ],
            "SD1x18": [
              8686
            ]
          },
          "id": 8696,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8683,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:26"
            },
            {
              "absolutePath": "@prb/math/src/sd1x18/Casting.sol",
              "file": "./Casting.sol",
              "id": 8684,
              "nameLocation": "85:7:26",
              "nodeType": "ImportDirective",
              "scope": 8696,
              "sourceUnit": 8594,
              "src": "59:34:26",
              "symbolAliases": [],
              "unitAlias": "Casting"
            },
            {
              "canonicalName": "SD1x18",
              "id": 8686,
              "name": "SD1x18",
              "nameLocation": "466:6:26",
              "nodeType": "UserDefinedValueTypeDefinition",
              "src": "461:21:26",
              "underlyingType": {
                "id": 8685,
                "name": "int64",
                "nodeType": "ElementaryTypeName",
                "src": "476:5:26",
                "typeDescriptions": {
                  "typeIdentifier": "t_int64",
                  "typeString": "int64"
                }
              }
            },
            {
              "functionList": [
                {
                  "function": {
                    "id": 8687,
                    "name": "Casting.intoSD59x18",
                    "nameLocations": [
                      "695:7:26",
                      "703:11:26"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8371,
                    "src": "695:19:26"
                  }
                },
                {
                  "function": {
                    "id": 8688,
                    "name": "Casting.intoUD60x18",
                    "nameLocations": [
                      "720:7:26",
                      "728:11:26"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8410,
                    "src": "720:19:26"
                  }
                },
                {
                  "function": {
                    "id": 8689,
                    "name": "Casting.intoUint128",
                    "nameLocations": [
                      "745:7:26",
                      "753:11:26"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8448,
                    "src": "745:19:26"
                  }
                },
                {
                  "function": {
                    "id": 8690,
                    "name": "Casting.intoUint256",
                    "nameLocations": [
                      "770:7:26",
                      "778:11:26"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8486,
                    "src": "770:19:26"
                  }
                },
                {
                  "function": {
                    "id": 8691,
                    "name": "Casting.intoUint40",
                    "nameLocations": [
                      "795:7:26",
                      "803:10:26"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8542,
                    "src": "795:18:26"
                  }
                },
                {
                  "function": {
                    "id": 8692,
                    "name": "Casting.unwrap",
                    "nameLocations": [
                      "819:7:26",
                      "827:6:26"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8576,
                    "src": "819:14:26"
                  }
                }
              ],
              "global": true,
              "id": 8695,
              "nodeType": "UsingForDirective",
              "src": "683:171:26",
              "typeName": {
                "id": 8694,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 8693,
                  "name": "SD1x18",
                  "nameLocations": [
                    "840:6:26"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 8686,
                  "src": "840:6:26"
                },
                "referencedDeclaration": 8686,
                "src": "840:6:26",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                  "typeString": "SD1x18"
                }
              }
            }
          ],
          "src": "32:823:26"
        },
        "id": 26
      },
      "@prb/math/src/sd21x18/Casting.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/sd21x18/Casting.sol",
          "exportedSymbols": {
            "CastingErrors": [
              8699
            ],
            "Common": [
              8698
            ],
            "SD21x18": [
              9041
            ],
            "SD59x18": [
              11699
            ],
            "UD60x18": [
              14179
            ],
            "intoSD59x18": [
              8729
            ],
            "intoUD60x18": [
              8768
            ],
            "intoUint128": [
              8803
            ],
            "intoUint256": [
              8841
            ],
            "intoUint40": [
              8897
            ],
            "sd21x18": [
              8914
            ],
            "unwrap": [
              8931
            ],
            "wrap": [
              8948
            ]
          },
          "id": 8949,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8697,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:27"
            },
            {
              "absolutePath": "@prb/math/src/Common.sol",
              "file": "../Common.sol",
              "id": 8698,
              "nameLocation": "85:6:27",
              "nodeType": "ImportDirective",
              "scope": 8949,
              "sourceUnit": 8329,
              "src": "59:33:27",
              "symbolAliases": [],
              "unitAlias": "Common"
            },
            {
              "absolutePath": "@prb/math/src/sd21x18/Errors.sol",
              "file": "./Errors.sol",
              "id": 8699,
              "nameLocation": "118:13:27",
              "nodeType": "ImportDirective",
              "scope": 8949,
              "sourceUnit": 9037,
              "src": "93:39:27",
              "symbolAliases": [],
              "unitAlias": "CastingErrors"
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/ValueType.sol",
              "file": "../sd59x18/ValueType.sol",
              "id": 8701,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8949,
              "sourceUnit": 11774,
              "src": "133:51:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8700,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "142:7:27",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/ValueType.sol",
              "file": "../ud60x18/ValueType.sol",
              "id": 8703,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8949,
              "sourceUnit": 14250,
              "src": "185:51:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8702,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "194:7:27",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd21x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 8705,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8949,
              "sourceUnit": 9051,
              "src": "237:42:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8704,
                    "name": "SD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9041,
                    "src": "246:7:27",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "body": {
                "id": 8728,
                "nodeType": "Block",
                "src": "458:57:27",
                "statements": [
                  {
                    "expression": {
                      "id": 8726,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8715,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8713,
                        "src": "464:6:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 8722,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8709,
                                    "src": "508:1:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                                      "typeString": "SD21x18"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                                      "typeString": "SD21x18"
                                    }
                                  ],
                                  "expression": {
                                    "id": 8720,
                                    "name": "SD21x18",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9041,
                                    "src": "493:7:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD21x18_$9041_$",
                                      "typeString": "type(SD21x18)"
                                    }
                                  },
                                  "id": 8721,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "501:6:27",
                                  "memberName": "unwrap",
                                  "nodeType": "MemberAccess",
                                  "src": "493:14:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD21x18_$9041_$returns$_t_int128_$",
                                    "typeString": "function (SD21x18) pure returns (int128)"
                                  }
                                },
                                "id": 8723,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "493:17:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              ],
                              "id": 8719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "486:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 8718,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "486:6:27",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8724,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "486:25:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "expression": {
                            "id": 8716,
                            "name": "SD59x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11699,
                            "src": "473:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "type(SD59x18)"
                            }
                          },
                          "id": 8717,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "481:4:27",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "473:12:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 8725,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "473:39:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "464:48:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 8727,
                    "nodeType": "ExpressionStatement",
                    "src": "464:48:27"
                  }
                ]
              },
              "documentation": {
                "id": 8706,
                "nodeType": "StructuredDocumentation",
                "src": "281:115:27",
                "text": "@notice Casts an SD21x18 number into SD59x18.\n @dev There is no overflow check because SD21x18 ⊆ SD59x18."
              },
              "id": 8729,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoSD59x18",
              "nameLocation": "405:11:27",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8710,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8709,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "425:1:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8729,
                    "src": "417:9:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                      "typeString": "SD21x18"
                    },
                    "typeName": {
                      "id": 8708,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8707,
                        "name": "SD21x18",
                        "nameLocations": [
                          "417:7:27"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9041,
                        "src": "417:7:27"
                      },
                      "referencedDeclaration": 9041,
                      "src": "417:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "416:11:27"
              },
              "returnParameters": {
                "id": 8714,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8713,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "450:6:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8729,
                    "src": "442:14:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 8712,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8711,
                        "name": "SD59x18",
                        "nameLocations": [
                          "442:7:27"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "442:7:27"
                      },
                      "referencedDeclaration": 11699,
                      "src": "442:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "441:16:27"
              },
              "scope": 8949,
              "src": "396:119:27",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8767,
                "nodeType": "Block",
                "src": "666:177:27",
                "statements": [
                  {
                    "assignments": [
                      8740
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8740,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "679:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 8767,
                        "src": "672:11:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        },
                        "typeName": {
                          "id": 8739,
                          "name": "int128",
                          "nodeType": "ElementaryTypeName",
                          "src": "672:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8745,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 8743,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8733,
                          "src": "701:1:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                            "typeString": "SD21x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                            "typeString": "SD21x18"
                          }
                        ],
                        "expression": {
                          "id": 8741,
                          "name": "SD21x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9041,
                          "src": "686:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD21x18_$9041_$",
                            "typeString": "type(SD21x18)"
                          }
                        },
                        "id": 8742,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "694:6:27",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "686:14:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD21x18_$9041_$returns$_t_int128_$",
                          "typeString": "function (SD21x18) pure returns (int128)"
                        }
                      },
                      "id": 8744,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "686:17:27",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "672:31:27"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      },
                      "id": 8748,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8746,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8740,
                        "src": "713:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 8747,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "720:1:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "713:8:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8756,
                    "nodeType": "IfStatement",
                    "src": "709:90:27",
                    "trueBody": {
                      "id": 8755,
                      "nodeType": "Block",
                      "src": "723:76:27",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 8752,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8733,
                                "src": "790:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                                  "typeString": "SD21x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                                  "typeString": "SD21x18"
                                }
                              ],
                              "expression": {
                                "id": 8749,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8699,
                                "src": "740:13:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9037",
                                  "typeString": "module \"@prb/math/src/sd21x18/Errors.sol\""
                                }
                              },
                              "id": 8751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "754:35:27",
                              "memberName": "PRBMath_SD21x18_ToUD60x18_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9018,
                              "src": "740:49:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD21x18_$9041_$returns$_t_error_$",
                                "typeString": "function (SD21x18) pure returns (error)"
                              }
                            },
                            "id": 8753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "740:52:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 8754,
                          "nodeType": "RevertStatement",
                          "src": "733:59:27"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 8765,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8757,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8737,
                        "src": "804:6:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 8762,
                                "name": "xInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8740,
                                "src": "834:4:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              ],
                              "id": 8761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "826:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 8760,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "826:7:27",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8763,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "826:13:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          ],
                          "expression": {
                            "id": 8758,
                            "name": "UD60x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14179,
                            "src": "813:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "type(UD60x18)"
                            }
                          },
                          "id": 8759,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "821:4:27",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "813:12:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 8764,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "813:27:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "804:36:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 8766,
                    "nodeType": "ExpressionStatement",
                    "src": "804:36:27"
                  }
                ]
              },
              "documentation": {
                "id": 8730,
                "nodeType": "StructuredDocumentation",
                "src": "517:87:27",
                "text": "@notice Casts an SD21x18 number into UD60x18.\n @dev Requirements:\n - x ≥ 0"
              },
              "id": 8768,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUD60x18",
              "nameLocation": "613:11:27",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8734,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8733,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "633:1:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8768,
                    "src": "625:9:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                      "typeString": "SD21x18"
                    },
                    "typeName": {
                      "id": 8732,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8731,
                        "name": "SD21x18",
                        "nameLocations": [
                          "625:7:27"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9041,
                        "src": "625:7:27"
                      },
                      "referencedDeclaration": 9041,
                      "src": "625:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "624:11:27"
              },
              "returnParameters": {
                "id": 8738,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8737,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "658:6:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8768,
                    "src": "650:14:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 8736,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8735,
                        "name": "UD60x18",
                        "nameLocations": [
                          "650:7:27"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "650:7:27"
                      },
                      "referencedDeclaration": 14179,
                      "src": "650:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "649:16:27"
              },
              "scope": 8949,
              "src": "604:239:27",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8802,
                "nodeType": "Block",
                "src": "994:163:27",
                "statements": [
                  {
                    "assignments": [
                      8778
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8778,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "1007:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 8802,
                        "src": "1000:11:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        },
                        "typeName": {
                          "id": 8777,
                          "name": "int128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1000:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8783,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 8781,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8772,
                          "src": "1029:1:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                            "typeString": "SD21x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                            "typeString": "SD21x18"
                          }
                        ],
                        "expression": {
                          "id": 8779,
                          "name": "SD21x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9041,
                          "src": "1014:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD21x18_$9041_$",
                            "typeString": "type(SD21x18)"
                          }
                        },
                        "id": 8780,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1022:6:27",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "1014:14:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD21x18_$9041_$returns$_t_int128_$",
                          "typeString": "function (SD21x18) pure returns (int128)"
                        }
                      },
                      "id": 8782,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1014:17:27",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1000:31:27"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      },
                      "id": 8786,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8784,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8778,
                        "src": "1041:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 8785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1048:1:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "1041:8:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8794,
                    "nodeType": "IfStatement",
                    "src": "1037:90:27",
                    "trueBody": {
                      "id": 8793,
                      "nodeType": "Block",
                      "src": "1051:76:27",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 8790,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8772,
                                "src": "1118:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                                  "typeString": "SD21x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                                  "typeString": "SD21x18"
                                }
                              ],
                              "expression": {
                                "id": 8787,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8699,
                                "src": "1068:13:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9037",
                                  "typeString": "module \"@prb/math/src/sd21x18/Errors.sol\""
                                }
                              },
                              "id": 8789,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1082:35:27",
                              "memberName": "PRBMath_SD21x18_ToUint128_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9012,
                              "src": "1068:49:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD21x18_$9041_$returns$_t_error_$",
                                "typeString": "function (SD21x18) pure returns (error)"
                              }
                            },
                            "id": 8791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1068:52:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 8792,
                          "nodeType": "RevertStatement",
                          "src": "1061:59:27"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 8800,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8795,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8775,
                        "src": "1132:6:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 8798,
                            "name": "xInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8778,
                            "src": "1149:4:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          ],
                          "id": 8797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1141:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint128_$",
                            "typeString": "type(uint128)"
                          },
                          "typeName": {
                            "id": 8796,
                            "name": "uint128",
                            "nodeType": "ElementaryTypeName",
                            "src": "1141:7:27",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 8799,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1141:13:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "1132:22:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "id": 8801,
                    "nodeType": "ExpressionStatement",
                    "src": "1132:22:27"
                  }
                ]
              },
              "documentation": {
                "id": 8769,
                "nodeType": "StructuredDocumentation",
                "src": "845:87:27",
                "text": "@notice Casts an SD21x18 number into uint128.\n @dev Requirements:\n - x ≥ 0"
              },
              "id": 8803,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint128",
              "nameLocation": "941:11:27",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8773,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8772,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "961:1:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8803,
                    "src": "953:9:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                      "typeString": "SD21x18"
                    },
                    "typeName": {
                      "id": 8771,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8770,
                        "name": "SD21x18",
                        "nameLocations": [
                          "953:7:27"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9041,
                        "src": "953:7:27"
                      },
                      "referencedDeclaration": 9041,
                      "src": "953:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "952:11:27"
              },
              "returnParameters": {
                "id": 8776,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8775,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "986:6:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8803,
                    "src": "978:14:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "typeName": {
                      "id": 8774,
                      "name": "uint128",
                      "nodeType": "ElementaryTypeName",
                      "src": "978:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "977:16:27"
              },
              "scope": 8949,
              "src": "932:225:27",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8840,
                "nodeType": "Block",
                "src": "1308:172:27",
                "statements": [
                  {
                    "assignments": [
                      8813
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8813,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "1321:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 8840,
                        "src": "1314:11:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        },
                        "typeName": {
                          "id": 8812,
                          "name": "int128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1314:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8818,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 8816,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8807,
                          "src": "1343:1:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                            "typeString": "SD21x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                            "typeString": "SD21x18"
                          }
                        ],
                        "expression": {
                          "id": 8814,
                          "name": "SD21x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9041,
                          "src": "1328:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD21x18_$9041_$",
                            "typeString": "type(SD21x18)"
                          }
                        },
                        "id": 8815,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1336:6:27",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "1328:14:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD21x18_$9041_$returns$_t_int128_$",
                          "typeString": "function (SD21x18) pure returns (int128)"
                        }
                      },
                      "id": 8817,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1328:17:27",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1314:31:27"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      },
                      "id": 8821,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8819,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8813,
                        "src": "1355:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 8820,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1362:1:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "1355:8:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8829,
                    "nodeType": "IfStatement",
                    "src": "1351:90:27",
                    "trueBody": {
                      "id": 8828,
                      "nodeType": "Block",
                      "src": "1365:76:27",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 8825,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8807,
                                "src": "1432:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                                  "typeString": "SD21x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                                  "typeString": "SD21x18"
                                }
                              ],
                              "expression": {
                                "id": 8822,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8699,
                                "src": "1382:13:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9037",
                                  "typeString": "module \"@prb/math/src/sd21x18/Errors.sol\""
                                }
                              },
                              "id": 8824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1396:35:27",
                              "memberName": "PRBMath_SD21x18_ToUint256_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9024,
                              "src": "1382:49:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD21x18_$9041_$returns$_t_error_$",
                                "typeString": "function (SD21x18) pure returns (error)"
                              }
                            },
                            "id": 8826,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1382:52:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 8827,
                          "nodeType": "RevertStatement",
                          "src": "1375:59:27"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 8838,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8830,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8810,
                        "src": "1446:6:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 8835,
                                "name": "xInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8813,
                                "src": "1471:4:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              ],
                              "id": 8834,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1463:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 8833,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "1463:7:27",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8836,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1463:13:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          ],
                          "id": 8832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1455:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 8831,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1455:7:27",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 8837,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1455:22:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1446:31:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 8839,
                    "nodeType": "ExpressionStatement",
                    "src": "1446:31:27"
                  }
                ]
              },
              "documentation": {
                "id": 8804,
                "nodeType": "StructuredDocumentation",
                "src": "1159:87:27",
                "text": "@notice Casts an SD21x18 number into uint256.\n @dev Requirements:\n - x ≥ 0"
              },
              "id": 8841,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint256",
              "nameLocation": "1255:11:27",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8808,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8807,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1275:1:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8841,
                    "src": "1267:9:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                      "typeString": "SD21x18"
                    },
                    "typeName": {
                      "id": 8806,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8805,
                        "name": "SD21x18",
                        "nameLocations": [
                          "1267:7:27"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9041,
                        "src": "1267:7:27"
                      },
                      "referencedDeclaration": 9041,
                      "src": "1267:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1266:11:27"
              },
              "returnParameters": {
                "id": 8811,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8810,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1300:6:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8841,
                    "src": "1292:14:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 8809,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1292:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1291:16:27"
              },
              "scope": 8949,
              "src": "1246:234:27",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8896,
                "nodeType": "Block",
                "src": "1651:296:27",
                "statements": [
                  {
                    "assignments": [
                      8851
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8851,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "1664:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 8896,
                        "src": "1657:11:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        },
                        "typeName": {
                          "id": 8850,
                          "name": "int128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1657:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 8856,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 8854,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8845,
                          "src": "1686:1:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                            "typeString": "SD21x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                            "typeString": "SD21x18"
                          }
                        ],
                        "expression": {
                          "id": 8852,
                          "name": "SD21x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9041,
                          "src": "1671:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD21x18_$9041_$",
                            "typeString": "type(SD21x18)"
                          }
                        },
                        "id": 8853,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1679:6:27",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "1671:14:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD21x18_$9041_$returns$_t_int128_$",
                          "typeString": "function (SD21x18) pure returns (int128)"
                        }
                      },
                      "id": 8855,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1671:17:27",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1657:31:27"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      },
                      "id": 8859,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8857,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8851,
                        "src": "1698:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 8858,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1705:1:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "1698:8:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8867,
                    "nodeType": "IfStatement",
                    "src": "1694:89:27",
                    "trueBody": {
                      "id": 8866,
                      "nodeType": "Block",
                      "src": "1708:75:27",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 8863,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8845,
                                "src": "1774:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                                  "typeString": "SD21x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                                  "typeString": "SD21x18"
                                }
                              ],
                              "expression": {
                                "id": 8860,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8699,
                                "src": "1725:13:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9037",
                                  "typeString": "module \"@prb/math/src/sd21x18/Errors.sol\""
                                }
                              },
                              "id": 8862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1739:34:27",
                              "memberName": "PRBMath_SD21x18_ToUint40_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9036,
                              "src": "1725:48:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD21x18_$9041_$returns$_t_error_$",
                                "typeString": "function (SD21x18) pure returns (error)"
                              }
                            },
                            "id": 8864,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1725:51:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 8865,
                          "nodeType": "RevertStatement",
                          "src": "1718:58:27"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      },
                      "id": 8877,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 8868,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8851,
                        "src": "1792:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 8873,
                                  "name": "Common",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8698,
                                  "src": "1814:6:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_module_8329",
                                    "typeString": "module \"@prb/math/src/Common.sol\""
                                  }
                                },
                                "id": 8874,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "1821:10:27",
                                "memberName": "MAX_UINT40",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6636,
                                "src": "1814:17:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              ],
                              "id": 8872,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1806:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 8871,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "1806:7:27",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8875,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1806:26:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          ],
                          "id": 8870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1799:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_int128_$",
                            "typeString": "type(int128)"
                          },
                          "typeName": {
                            "id": 8869,
                            "name": "int128",
                            "nodeType": "ElementaryTypeName",
                            "src": "1799:6:27",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 8876,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1799:34:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "src": "1792:41:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 8885,
                    "nodeType": "IfStatement",
                    "src": "1788:121:27",
                    "trueBody": {
                      "id": 8884,
                      "nodeType": "Block",
                      "src": "1835:74:27",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 8881,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8845,
                                "src": "1900:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                                  "typeString": "SD21x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                                  "typeString": "SD21x18"
                                }
                              ],
                              "expression": {
                                "id": 8878,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8699,
                                "src": "1852:13:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9037",
                                  "typeString": "module \"@prb/math/src/sd21x18/Errors.sol\""
                                }
                              },
                              "id": 8880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1866:33:27",
                              "memberName": "PRBMath_SD21x18_ToUint40_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9030,
                              "src": "1852:47:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD21x18_$9041_$returns$_t_error_$",
                                "typeString": "function (SD21x18) pure returns (error)"
                              }
                            },
                            "id": 8882,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1852:50:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 8883,
                          "nodeType": "RevertStatement",
                          "src": "1845:57:27"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 8894,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8886,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8848,
                        "src": "1914:6:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 8891,
                                "name": "xInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8851,
                                "src": "1938:4:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              ],
                              "id": 8890,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1930:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 8889,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "1930:7:27",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8892,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1930:13:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          ],
                          "id": 8888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1923:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint40_$",
                            "typeString": "type(uint40)"
                          },
                          "typeName": {
                            "id": 8887,
                            "name": "uint40",
                            "nodeType": "ElementaryTypeName",
                            "src": "1923:6:27",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 8893,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1923:21:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "src": "1914:30:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "id": 8895,
                    "nodeType": "ExpressionStatement",
                    "src": "1914:30:27"
                  }
                ]
              },
              "documentation": {
                "id": 8842,
                "nodeType": "StructuredDocumentation",
                "src": "1482:109:27",
                "text": "@notice Casts an SD21x18 number into uint40.\n @dev Requirements:\n - x ≥ 0\n - x ≤ MAX_UINT40"
              },
              "id": 8897,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint40",
              "nameLocation": "1600:10:27",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8846,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8845,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1619:1:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8897,
                    "src": "1611:9:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                      "typeString": "SD21x18"
                    },
                    "typeName": {
                      "id": 8844,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8843,
                        "name": "SD21x18",
                        "nameLocations": [
                          "1611:7:27"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9041,
                        "src": "1611:7:27"
                      },
                      "referencedDeclaration": 9041,
                      "src": "1611:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1610:11:27"
              },
              "returnParameters": {
                "id": 8849,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8848,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1643:6:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8897,
                    "src": "1636:13:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    },
                    "typeName": {
                      "id": 8847,
                      "name": "uint40",
                      "nodeType": "ElementaryTypeName",
                      "src": "1636:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1635:15:27"
              },
              "scope": 8949,
              "src": "1591:356:27",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8913,
                "nodeType": "Block",
                "src": "2036:33:27",
                "statements": [
                  {
                    "expression": {
                      "id": 8911,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8906,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8904,
                        "src": "2042:6:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                          "typeString": "SD21x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 8909,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8900,
                            "src": "2064:1:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          ],
                          "expression": {
                            "id": 8907,
                            "name": "SD21x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9041,
                            "src": "2051:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD21x18_$9041_$",
                              "typeString": "type(SD21x18)"
                            }
                          },
                          "id": 8908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2059:4:27",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "2051:12:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int128_$returns$_t_userDefinedValueType$_SD21x18_$9041_$",
                            "typeString": "function (int128) pure returns (SD21x18)"
                          }
                        },
                        "id": 8910,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2051:15:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                          "typeString": "SD21x18"
                        }
                      },
                      "src": "2042:24:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "id": 8912,
                    "nodeType": "ExpressionStatement",
                    "src": "2042:24:27"
                  }
                ]
              },
              "documentation": {
                "id": 8898,
                "nodeType": "StructuredDocumentation",
                "src": "1949:30:27",
                "text": "@notice Alias for {wrap}."
              },
              "id": 8914,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "sd21x18",
              "nameLocation": "1988:7:27",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8901,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8900,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2003:1:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8914,
                    "src": "1996:8:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    },
                    "typeName": {
                      "id": 8899,
                      "name": "int128",
                      "nodeType": "ElementaryTypeName",
                      "src": "1996:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1995:10:27"
              },
              "returnParameters": {
                "id": 8905,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8904,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2028:6:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8914,
                    "src": "2020:14:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                      "typeString": "SD21x18"
                    },
                    "typeName": {
                      "id": 8903,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8902,
                        "name": "SD21x18",
                        "nameLocations": [
                          "2020:7:27"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9041,
                        "src": "2020:7:27"
                      },
                      "referencedDeclaration": 9041,
                      "src": "2020:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2019:16:27"
              },
              "scope": 8949,
              "src": "1979:90:27",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8930,
                "nodeType": "Block",
                "src": "2178:35:27",
                "statements": [
                  {
                    "expression": {
                      "id": 8928,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8923,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8921,
                        "src": "2184:6:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 8926,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8918,
                            "src": "2208:1:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                              "typeString": "SD21x18"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                              "typeString": "SD21x18"
                            }
                          ],
                          "expression": {
                            "id": 8924,
                            "name": "SD21x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9041,
                            "src": "2193:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD21x18_$9041_$",
                              "typeString": "type(SD21x18)"
                            }
                          },
                          "id": 8925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2201:6:27",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "src": "2193:14:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD21x18_$9041_$returns$_t_int128_$",
                            "typeString": "function (SD21x18) pure returns (int128)"
                          }
                        },
                        "id": 8927,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2193:17:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "src": "2184:26:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    },
                    "id": 8929,
                    "nodeType": "ExpressionStatement",
                    "src": "2184:26:27"
                  }
                ]
              },
              "documentation": {
                "id": 8915,
                "nodeType": "StructuredDocumentation",
                "src": "2071:51:27",
                "text": "@notice Unwraps an SD21x18 number into int128."
              },
              "id": 8931,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "unwrap",
              "nameLocation": "2131:6:27",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8919,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8918,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2146:1:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8931,
                    "src": "2138:9:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                      "typeString": "SD21x18"
                    },
                    "typeName": {
                      "id": 8917,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8916,
                        "name": "SD21x18",
                        "nameLocations": [
                          "2138:7:27"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9041,
                        "src": "2138:7:27"
                      },
                      "referencedDeclaration": 9041,
                      "src": "2138:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2137:11:27"
              },
              "returnParameters": {
                "id": 8922,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8921,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2170:6:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8931,
                    "src": "2163:13:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    },
                    "typeName": {
                      "id": 8920,
                      "name": "int128",
                      "nodeType": "ElementaryTypeName",
                      "src": "2163:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2162:15:27"
              },
              "scope": 8949,
              "src": "2122:91:27",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 8947,
                "nodeType": "Block",
                "src": "2318:33:27",
                "statements": [
                  {
                    "expression": {
                      "id": 8945,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 8940,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8938,
                        "src": "2324:6:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                          "typeString": "SD21x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 8943,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8934,
                            "src": "2346:1:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          ],
                          "expression": {
                            "id": 8941,
                            "name": "SD21x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9041,
                            "src": "2333:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD21x18_$9041_$",
                              "typeString": "type(SD21x18)"
                            }
                          },
                          "id": 8942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2341:4:27",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "2333:12:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int128_$returns$_t_userDefinedValueType$_SD21x18_$9041_$",
                            "typeString": "function (int128) pure returns (SD21x18)"
                          }
                        },
                        "id": 8944,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2333:15:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                          "typeString": "SD21x18"
                        }
                      },
                      "src": "2324:24:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "id": 8946,
                    "nodeType": "ExpressionStatement",
                    "src": "2324:24:27"
                  }
                ]
              },
              "documentation": {
                "id": 8932,
                "nodeType": "StructuredDocumentation",
                "src": "2215:49:27",
                "text": "@notice Wraps an int128 number into SD21x18."
              },
              "id": 8948,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "wrap",
              "nameLocation": "2273:4:27",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 8935,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8934,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2285:1:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8948,
                    "src": "2278:8:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    },
                    "typeName": {
                      "id": 8933,
                      "name": "int128",
                      "nodeType": "ElementaryTypeName",
                      "src": "2278:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2277:10:27"
              },
              "returnParameters": {
                "id": 8939,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 8938,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2310:6:27",
                    "nodeType": "VariableDeclaration",
                    "scope": 8948,
                    "src": "2302:14:27",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                      "typeString": "SD21x18"
                    },
                    "typeName": {
                      "id": 8937,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 8936,
                        "name": "SD21x18",
                        "nameLocations": [
                          "2302:7:27"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9041,
                        "src": "2302:7:27"
                      },
                      "referencedDeclaration": 9041,
                      "src": "2302:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2301:16:27"
              },
              "scope": 8949,
              "src": "2264:87:27",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            }
          ],
          "src": "32:2320:27"
        },
        "id": 27
      },
      "@prb/math/src/sd21x18/Constants.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/sd21x18/Constants.sol",
          "exportedSymbols": {
            "E": [
              8960
            ],
            "MAX_SD21x18": [
              8971
            ],
            "MIN_SD21x18": [
              8983
            ],
            "PI": [
              8991
            ],
            "SD21x18": [
              9041
            ],
            "UNIT": [
              8999
            ],
            "uMAX_SD21x18": [
              8964
            ],
            "uMIN_SD21x18": [
              8976
            ],
            "uUNIT": [
              9002
            ]
          },
          "id": 9003,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8950,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:28"
            },
            {
              "absolutePath": "@prb/math/src/sd21x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 8952,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9003,
              "sourceUnit": 9051,
              "src": "59:42:28",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8951,
                    "name": "SD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9041,
                    "src": "68:7:28",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "constant": true,
              "id": 8960,
              "mutability": "constant",
              "name": "E",
              "nameLocation": "166:1:28",
              "nodeType": "VariableDeclaration",
              "scope": 9003,
              "src": "149:55:28",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                "typeString": "SD21x18"
              },
              "typeName": {
                "id": 8955,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 8954,
                  "name": "SD21x18",
                  "nameLocations": [
                    "149:7:28"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 9041,
                  "src": "149:7:28"
                },
                "referencedDeclaration": 9041,
                "src": "149:7:28",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                  "typeString": "SD21x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "325f373138323831383238343539303435323335",
                    "id": 8958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "183:20:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2718281828459045235_by_1",
                      "typeString": "int_const 2718281828459045235"
                    },
                    "value": "2_718281828459045235"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_2718281828459045235_by_1",
                      "typeString": "int_const 2718281828459045235"
                    }
                  ],
                  "expression": {
                    "id": 8956,
                    "name": "SD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9041,
                    "src": "170:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD21x18_$9041_$",
                      "typeString": "type(SD21x18)"
                    }
                  },
                  "id": 8957,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "178:4:28",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "170:12:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int128_$returns$_t_userDefinedValueType$_SD21x18_$9041_$",
                    "typeString": "function (int128) pure returns (SD21x18)"
                  }
                },
                "id": 8959,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "170:34:28",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                  "typeString": "SD21x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8964,
              "mutability": "constant",
              "name": "uMAX_SD21x18",
              "nameLocation": "278:12:28",
              "nodeType": "VariableDeclaration",
              "scope": 9003,
              "src": "262:71:28",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int128",
                "typeString": "int128"
              },
              "typeName": {
                "id": 8962,
                "name": "int128",
                "nodeType": "ElementaryTypeName",
                "src": "262:6:28",
                "typeDescriptions": {
                  "typeIdentifier": "t_int128",
                  "typeString": "int128"
                }
              },
              "value": {
                "hexValue": "3137303134313138333436303436393233313733315f363837333033373135383834313035373237",
                "id": 8963,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "293:40:28",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_170141183460469231731687303715884105727_by_1",
                  "typeString": "int_const 1701...(31 digits omitted)...5727"
                },
                "value": "170141183460469231731_687303715884105727"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8971,
              "mutability": "constant",
              "name": "MAX_SD21x18",
              "nameLocation": "352:11:28",
              "nodeType": "VariableDeclaration",
              "scope": 9003,
              "src": "335:57:28",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                "typeString": "SD21x18"
              },
              "typeName": {
                "id": 8966,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 8965,
                  "name": "SD21x18",
                  "nameLocations": [
                    "335:7:28"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 9041,
                  "src": "335:7:28"
                },
                "referencedDeclaration": 9041,
                "src": "335:7:28",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                  "typeString": "SD21x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 8969,
                    "name": "uMAX_SD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8964,
                    "src": "379:12:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  ],
                  "expression": {
                    "id": 8967,
                    "name": "SD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9041,
                    "src": "366:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD21x18_$9041_$",
                      "typeString": "type(SD21x18)"
                    }
                  },
                  "id": 8968,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "374:4:28",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "366:12:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int128_$returns$_t_userDefinedValueType$_SD21x18_$9041_$",
                    "typeString": "function (int128) pure returns (SD21x18)"
                  }
                },
                "id": 8970,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "366:26:28",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                  "typeString": "SD21x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8976,
              "mutability": "constant",
              "name": "uMIN_SD21x18",
              "nameLocation": "466:12:28",
              "nodeType": "VariableDeclaration",
              "scope": 9003,
              "src": "450:72:28",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int128",
                "typeString": "int128"
              },
              "typeName": {
                "id": 8973,
                "name": "int128",
                "nodeType": "ElementaryTypeName",
                "src": "450:6:28",
                "typeDescriptions": {
                  "typeIdentifier": "t_int128",
                  "typeString": "int128"
                }
              },
              "value": {
                "id": 8975,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "UnaryOperation",
                "operator": "-",
                "prefix": true,
                "src": "481:41:28",
                "subExpression": {
                  "hexValue": "3137303134313138333436303436393233313733315f363837333033373135383834313035373238",
                  "id": 8974,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "482:40:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_170141183460469231731687303715884105728_by_1",
                    "typeString": "int_const 1701...(31 digits omitted)...5728"
                  },
                  "value": "170141183460469231731_687303715884105728"
                },
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_minus_170141183460469231731687303715884105728_by_1",
                  "typeString": "int_const -170...(32 digits omitted)...5728"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8983,
              "mutability": "constant",
              "name": "MIN_SD21x18",
              "nameLocation": "541:11:28",
              "nodeType": "VariableDeclaration",
              "scope": 9003,
              "src": "524:57:28",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                "typeString": "SD21x18"
              },
              "typeName": {
                "id": 8978,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 8977,
                  "name": "SD21x18",
                  "nameLocations": [
                    "524:7:28"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 9041,
                  "src": "524:7:28"
                },
                "referencedDeclaration": 9041,
                "src": "524:7:28",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                  "typeString": "SD21x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 8981,
                    "name": "uMIN_SD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8976,
                    "src": "568:12:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  ],
                  "expression": {
                    "id": 8979,
                    "name": "SD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9041,
                    "src": "555:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD21x18_$9041_$",
                      "typeString": "type(SD21x18)"
                    }
                  },
                  "id": 8980,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "563:4:28",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "555:12:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int128_$returns$_t_userDefinedValueType$_SD21x18_$9041_$",
                    "typeString": "function (int128) pure returns (SD21x18)"
                  }
                },
                "id": 8982,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "555:26:28",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                  "typeString": "SD21x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8991,
              "mutability": "constant",
              "name": "PI",
              "nameLocation": "635:2:28",
              "nodeType": "VariableDeclaration",
              "scope": 9003,
              "src": "618:56:28",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                "typeString": "SD21x18"
              },
              "typeName": {
                "id": 8986,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 8985,
                  "name": "SD21x18",
                  "nameLocations": [
                    "618:7:28"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 9041,
                  "src": "618:7:28"
                },
                "referencedDeclaration": 9041,
                "src": "618:7:28",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                  "typeString": "SD21x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "335f313431353932363533353839373933323338",
                    "id": 8989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "653:20:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3141592653589793238_by_1",
                      "typeString": "int_const 3141592653589793238"
                    },
                    "value": "3_141592653589793238"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_3141592653589793238_by_1",
                      "typeString": "int_const 3141592653589793238"
                    }
                  ],
                  "expression": {
                    "id": 8987,
                    "name": "SD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9041,
                    "src": "640:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD21x18_$9041_$",
                      "typeString": "type(SD21x18)"
                    }
                  },
                  "id": 8988,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "648:4:28",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "640:12:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int128_$returns$_t_userDefinedValueType$_SD21x18_$9041_$",
                    "typeString": "function (int128) pure returns (SD21x18)"
                  }
                },
                "id": 8990,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "640:34:28",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                  "typeString": "SD21x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8999,
              "mutability": "constant",
              "name": "UNIT",
              "nameLocation": "766:4:28",
              "nodeType": "VariableDeclaration",
              "scope": 9003,
              "src": "749:42:28",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                "typeString": "SD21x18"
              },
              "typeName": {
                "id": 8994,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 8993,
                  "name": "SD21x18",
                  "nameLocations": [
                    "749:7:28"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 9041,
                  "src": "749:7:28"
                },
                "referencedDeclaration": 9041,
                "src": "749:7:28",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                  "typeString": "SD21x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "31653138",
                    "id": 8997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "786:4:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "value": "1e18"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    }
                  ],
                  "expression": {
                    "id": 8995,
                    "name": "SD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9041,
                    "src": "773:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD21x18_$9041_$",
                      "typeString": "type(SD21x18)"
                    }
                  },
                  "id": 8996,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "781:4:28",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "773:12:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int128_$returns$_t_userDefinedValueType$_SD21x18_$9041_$",
                    "typeString": "function (int128) pure returns (SD21x18)"
                  }
                },
                "id": 8998,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "773:18:28",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                  "typeString": "SD21x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9002,
              "mutability": "constant",
              "name": "uUNIT",
              "nameLocation": "809:5:28",
              "nodeType": "VariableDeclaration",
              "scope": 9003,
              "src": "793:28:28",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int128",
                "typeString": "int128"
              },
              "typeName": {
                "id": 9000,
                "name": "int128",
                "nodeType": "ElementaryTypeName",
                "src": "793:6:28",
                "typeDescriptions": {
                  "typeIdentifier": "t_int128",
                  "typeString": "int128"
                }
              },
              "value": {
                "hexValue": "31653138",
                "id": 9001,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "817:4:28",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                  "typeString": "int_const 1000000000000000000"
                },
                "value": "1e18"
              },
              "visibility": "internal"
            }
          ],
          "src": "32:791:28"
        },
        "id": 28
      },
      "@prb/math/src/sd21x18/Errors.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/sd21x18/Errors.sol",
          "exportedSymbols": {
            "PRBMath_SD21x18_ToUD60x18_Underflow": [
              9018
            ],
            "PRBMath_SD21x18_ToUint128_Underflow": [
              9012
            ],
            "PRBMath_SD21x18_ToUint256_Underflow": [
              9024
            ],
            "PRBMath_SD21x18_ToUint40_Overflow": [
              9030
            ],
            "PRBMath_SD21x18_ToUint40_Underflow": [
              9036
            ],
            "SD21x18": [
              9041
            ]
          },
          "id": 9037,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9004,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:29"
            },
            {
              "absolutePath": "@prb/math/src/sd21x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 9006,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9037,
              "sourceUnit": 9051,
              "src": "59:42:29",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9005,
                    "name": "SD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9041,
                    "src": "68:7:29",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "documentation": {
                "id": 9007,
                "nodeType": "StructuredDocumentation",
                "src": "103:86:29",
                "text": "@notice Thrown when trying to cast an SD21x18 number that doesn't fit in uint128."
              },
              "errorSelector": "184005cb",
              "id": 9012,
              "name": "PRBMath_SD21x18_ToUint128_Underflow",
              "nameLocation": "195:35:29",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9011,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9010,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "239:1:29",
                    "nodeType": "VariableDeclaration",
                    "scope": 9012,
                    "src": "231:9:29",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                      "typeString": "SD21x18"
                    },
                    "typeName": {
                      "id": 9009,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9008,
                        "name": "SD21x18",
                        "nameLocations": [
                          "231:7:29"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9041,
                        "src": "231:7:29"
                      },
                      "referencedDeclaration": 9041,
                      "src": "231:7:29",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "230:11:29"
              },
              "src": "189:53:29"
            },
            {
              "documentation": {
                "id": 9013,
                "nodeType": "StructuredDocumentation",
                "src": "244:86:29",
                "text": "@notice Thrown when trying to cast an SD21x18 number that doesn't fit in UD60x18."
              },
              "errorSelector": "06cd999d",
              "id": 9018,
              "name": "PRBMath_SD21x18_ToUD60x18_Underflow",
              "nameLocation": "336:35:29",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9017,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9016,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "380:1:29",
                    "nodeType": "VariableDeclaration",
                    "scope": 9018,
                    "src": "372:9:29",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                      "typeString": "SD21x18"
                    },
                    "typeName": {
                      "id": 9015,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9014,
                        "name": "SD21x18",
                        "nameLocations": [
                          "372:7:29"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9041,
                        "src": "372:7:29"
                      },
                      "referencedDeclaration": 9041,
                      "src": "372:7:29",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "371:11:29"
              },
              "src": "330:53:29"
            },
            {
              "documentation": {
                "id": 9019,
                "nodeType": "StructuredDocumentation",
                "src": "385:86:29",
                "text": "@notice Thrown when trying to cast an SD21x18 number that doesn't fit in uint256."
              },
              "errorSelector": "e7f2f1ad",
              "id": 9024,
              "name": "PRBMath_SD21x18_ToUint256_Underflow",
              "nameLocation": "477:35:29",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9023,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9022,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "521:1:29",
                    "nodeType": "VariableDeclaration",
                    "scope": 9024,
                    "src": "513:9:29",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                      "typeString": "SD21x18"
                    },
                    "typeName": {
                      "id": 9021,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9020,
                        "name": "SD21x18",
                        "nameLocations": [
                          "513:7:29"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9041,
                        "src": "513:7:29"
                      },
                      "referencedDeclaration": 9041,
                      "src": "513:7:29",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "512:11:29"
              },
              "src": "471:53:29"
            },
            {
              "documentation": {
                "id": 9025,
                "nodeType": "StructuredDocumentation",
                "src": "526:85:29",
                "text": "@notice Thrown when trying to cast an SD21x18 number that doesn't fit in uint40."
              },
              "errorSelector": "e514441a",
              "id": 9030,
              "name": "PRBMath_SD21x18_ToUint40_Overflow",
              "nameLocation": "617:33:29",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9029,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9028,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "659:1:29",
                    "nodeType": "VariableDeclaration",
                    "scope": 9030,
                    "src": "651:9:29",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                      "typeString": "SD21x18"
                    },
                    "typeName": {
                      "id": 9027,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9026,
                        "name": "SD21x18",
                        "nameLocations": [
                          "651:7:29"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9041,
                        "src": "651:7:29"
                      },
                      "referencedDeclaration": 9041,
                      "src": "651:7:29",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "650:11:29"
              },
              "src": "611:51:29"
            },
            {
              "documentation": {
                "id": 9031,
                "nodeType": "StructuredDocumentation",
                "src": "664:85:29",
                "text": "@notice Thrown when trying to cast an SD21x18 number that doesn't fit in uint40."
              },
              "errorSelector": "a039054c",
              "id": 9036,
              "name": "PRBMath_SD21x18_ToUint40_Underflow",
              "nameLocation": "755:34:29",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9035,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9034,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "798:1:29",
                    "nodeType": "VariableDeclaration",
                    "scope": 9036,
                    "src": "790:9:29",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                      "typeString": "SD21x18"
                    },
                    "typeName": {
                      "id": 9033,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9032,
                        "name": "SD21x18",
                        "nameLocations": [
                          "790:7:29"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9041,
                        "src": "790:7:29"
                      },
                      "referencedDeclaration": 9041,
                      "src": "790:7:29",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "789:11:29"
              },
              "src": "749:52:29"
            }
          ],
          "src": "32:770:29"
        },
        "id": 29
      },
      "@prb/math/src/sd21x18/ValueType.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/sd21x18/ValueType.sol",
          "exportedSymbols": {
            "Casting": [
              9039
            ],
            "SD21x18": [
              9041
            ]
          },
          "id": 9051,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9038,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:30"
            },
            {
              "absolutePath": "@prb/math/src/sd21x18/Casting.sol",
              "file": "./Casting.sol",
              "id": 9039,
              "nameLocation": "85:7:30",
              "nodeType": "ImportDirective",
              "scope": 9051,
              "sourceUnit": 8949,
              "src": "59:34:30",
              "symbolAliases": [],
              "unitAlias": "Casting"
            },
            {
              "canonicalName": "SD21x18",
              "id": 9041,
              "name": "SD21x18",
              "nameLocation": "471:7:30",
              "nodeType": "UserDefinedValueTypeDefinition",
              "src": "466:23:30",
              "underlyingType": {
                "id": 9040,
                "name": "int128",
                "nodeType": "ElementaryTypeName",
                "src": "482:6:30",
                "typeDescriptions": {
                  "typeIdentifier": "t_int128",
                  "typeString": "int128"
                }
              }
            },
            {
              "functionList": [
                {
                  "function": {
                    "id": 9042,
                    "name": "Casting.intoSD59x18",
                    "nameLocations": [
                      "702:7:30",
                      "710:11:30"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8729,
                    "src": "702:19:30"
                  }
                },
                {
                  "function": {
                    "id": 9043,
                    "name": "Casting.intoUD60x18",
                    "nameLocations": [
                      "727:7:30",
                      "735:11:30"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8768,
                    "src": "727:19:30"
                  }
                },
                {
                  "function": {
                    "id": 9044,
                    "name": "Casting.intoUint128",
                    "nameLocations": [
                      "752:7:30",
                      "760:11:30"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8803,
                    "src": "752:19:30"
                  }
                },
                {
                  "function": {
                    "id": 9045,
                    "name": "Casting.intoUint256",
                    "nameLocations": [
                      "777:7:30",
                      "785:11:30"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8841,
                    "src": "777:19:30"
                  }
                },
                {
                  "function": {
                    "id": 9046,
                    "name": "Casting.intoUint40",
                    "nameLocations": [
                      "802:7:30",
                      "810:10:30"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8897,
                    "src": "802:18:30"
                  }
                },
                {
                  "function": {
                    "id": 9047,
                    "name": "Casting.unwrap",
                    "nameLocations": [
                      "826:7:30",
                      "834:6:30"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8931,
                    "src": "826:14:30"
                  }
                }
              ],
              "global": true,
              "id": 9050,
              "nodeType": "UsingForDirective",
              "src": "690:172:30",
              "typeName": {
                "id": 9049,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9048,
                  "name": "SD21x18",
                  "nameLocations": [
                    "847:7:30"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 9041,
                  "src": "847:7:30"
                },
                "referencedDeclaration": 9041,
                "src": "847:7:30",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                  "typeString": "SD21x18"
                }
              }
            }
          ],
          "src": "32:831:30"
        },
        "id": 30
      },
      "@prb/math/src/sd59x18/Casting.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/sd59x18/Casting.sol",
          "exportedSymbols": {
            "CastingErrors": [
              9053
            ],
            "MAX_UINT128": [
              6628
            ],
            "MAX_UINT40": [
              6636
            ],
            "SD1x18": [
              8686
            ],
            "SD21x18": [
              9041
            ],
            "SD59x18": [
              11699
            ],
            "UD21x18": [
              12015
            ],
            "UD2x18": [
              12269
            ],
            "UD60x18": [
              14179
            ],
            "intoInt256": [
              9095
            ],
            "intoSD1x18": [
              9145
            ],
            "intoSD21x18": [
              9195
            ],
            "intoUD21x18": [
              9313
            ],
            "intoUD2x18": [
              9254
            ],
            "intoUD60x18": [
              9352
            ],
            "intoUint128": [
              9442
            ],
            "intoUint256": [
              9387
            ],
            "intoUint40": [
              9497
            ],
            "sd": [
              9514
            ],
            "sd59x18": [
              9531
            ],
            "uMAX_SD1x18": [
              8609
            ],
            "uMAX_SD21x18": [
              8964
            ],
            "uMAX_UD21x18": [
              11974
            ],
            "uMAX_UD2x18": [
              12228
            ],
            "uMIN_SD1x18": [
              8621
            ],
            "uMIN_SD21x18": [
              8976
            ],
            "unwrap": [
              9548
            ],
            "wrap": [
              9565
            ]
          },
          "id": 9566,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9052,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:31"
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/Errors.sol",
              "file": "./Errors.sol",
              "id": 9053,
              "nameLocation": "84:13:31",
              "nodeType": "ImportDirective",
              "scope": 9566,
              "sourceUnit": 9936,
              "src": "59:39:31",
              "symbolAliases": [],
              "unitAlias": "CastingErrors"
            },
            {
              "absolutePath": "@prb/math/src/Common.sol",
              "file": "../Common.sol",
              "id": 9056,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9566,
              "sourceUnit": 8329,
              "src": "99:56:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9054,
                    "name": "MAX_UINT128",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6628,
                    "src": "108:11:31",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 9055,
                    "name": "MAX_UINT40",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6636,
                    "src": "121:10:31",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd1x18/Constants.sol",
              "file": "../sd1x18/Constants.sol",
              "id": 9059,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9566,
              "sourceUnit": 8648,
              "src": "156:67:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9057,
                    "name": "uMAX_SD1x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8609,
                    "src": "165:11:31",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 9058,
                    "name": "uMIN_SD1x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8621,
                    "src": "178:11:31",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd1x18/ValueType.sol",
              "file": "../sd1x18/ValueType.sol",
              "id": 9061,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9566,
              "sourceUnit": 8696,
              "src": "224:49:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9060,
                    "name": "SD1x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8686,
                    "src": "233:6:31",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd21x18/Constants.sol",
              "file": "../sd21x18/Constants.sol",
              "id": 9064,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9566,
              "sourceUnit": 9003,
              "src": "274:70:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9062,
                    "name": "uMAX_SD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8964,
                    "src": "283:12:31",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 9063,
                    "name": "uMIN_SD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8976,
                    "src": "297:12:31",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd21x18/ValueType.sol",
              "file": "../sd21x18/ValueType.sol",
              "id": 9066,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9566,
              "sourceUnit": 9051,
              "src": "345:51:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9065,
                    "name": "SD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9041,
                    "src": "354:7:31",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud2x18/Constants.sol",
              "file": "../ud2x18/Constants.sol",
              "id": 9068,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9566,
              "sourceUnit": 12255,
              "src": "397:54:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9067,
                    "name": "uMAX_UD2x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12228,
                    "src": "406:11:31",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud2x18/ValueType.sol",
              "file": "../ud2x18/ValueType.sol",
              "id": 9070,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9566,
              "sourceUnit": 12279,
              "src": "452:49:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9069,
                    "name": "UD2x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12269,
                    "src": "461:6:31",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud21x18/Constants.sol",
              "file": "../ud21x18/Constants.sol",
              "id": 9072,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9566,
              "sourceUnit": 12001,
              "src": "502:56:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9071,
                    "name": "uMAX_UD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11974,
                    "src": "511:12:31",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud21x18/ValueType.sol",
              "file": "../ud21x18/ValueType.sol",
              "id": 9074,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9566,
              "sourceUnit": 12025,
              "src": "559:51:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9073,
                    "name": "UD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12015,
                    "src": "568:7:31",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/ValueType.sol",
              "file": "../ud60x18/ValueType.sol",
              "id": 9076,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9566,
              "sourceUnit": 14250,
              "src": "611:51:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9075,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "620:7:31",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 9078,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9566,
              "sourceUnit": 11774,
              "src": "663:42:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9077,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "672:7:31",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "body": {
                "id": 9094,
                "nodeType": "Block",
                "src": "876:35:31",
                "statements": [
                  {
                    "expression": {
                      "id": 9092,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 9087,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9085,
                        "src": "882:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 9090,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9082,
                            "src": "906:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          ],
                          "expression": {
                            "id": 9088,
                            "name": "SD59x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11699,
                            "src": "891:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "type(SD59x18)"
                            }
                          },
                          "id": 9089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "899:6:31",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "src": "891:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$",
                            "typeString": "function (SD59x18) pure returns (int256)"
                          }
                        },
                        "id": 9091,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "891:17:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "882:26:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "id": 9093,
                    "nodeType": "ExpressionStatement",
                    "src": "882:26:31"
                  }
                ]
              },
              "documentation": {
                "id": 9079,
                "nodeType": "StructuredDocumentation",
                "src": "707:109:31",
                "text": "@notice Casts an SD59x18 number into int256.\n @dev This is basically a functional alias for {unwrap}."
              },
              "id": 9095,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoInt256",
              "nameLocation": "825:10:31",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9083,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9082,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "844:1:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9095,
                    "src": "836:9:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9081,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9080,
                        "name": "SD59x18",
                        "nameLocations": [
                          "836:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "836:7:31"
                      },
                      "referencedDeclaration": 11699,
                      "src": "836:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "835:11:31"
              },
              "returnParameters": {
                "id": 9086,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9085,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "868:6:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9095,
                    "src": "861:13:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "typeName": {
                      "id": 9084,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "861:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "860:15:31"
              },
              "scope": 9566,
              "src": "816:95:31",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 9144,
                "nodeType": "Block",
                "src": "1093:290:31",
                "statements": [
                  {
                    "assignments": [
                      9106
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 9106,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "1106:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 9144,
                        "src": "1099:11:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9105,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1099:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 9111,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 9109,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9099,
                          "src": "1128:1:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        ],
                        "expression": {
                          "id": 9107,
                          "name": "SD59x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "1113:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "type(SD59x18)"
                          }
                        },
                        "id": 9108,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1121:6:31",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "1113:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 9110,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1113:17:31",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1099:31:31"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 9114,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 9112,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9106,
                        "src": "1140:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "id": 9113,
                        "name": "uMIN_SD1x18",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8621,
                        "src": "1147:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        }
                      },
                      "src": "1140:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 9122,
                    "nodeType": "IfStatement",
                    "src": "1136:101:31",
                    "trueBody": {
                      "id": 9121,
                      "nodeType": "Block",
                      "src": "1160:77:31",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 9118,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9099,
                                "src": "1228:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 9115,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9053,
                                "src": "1177:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 9117,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1191:36:31",
                              "memberName": "PRBMath_SD59x18_IntoSD1x18_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9825,
                              "src": "1177:50:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 9119,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1177:53:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 9120,
                          "nodeType": "RevertStatement",
                          "src": "1170:60:31"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 9125,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 9123,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9106,
                        "src": "1246:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 9124,
                        "name": "uMAX_SD1x18",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8609,
                        "src": "1253:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        }
                      },
                      "src": "1246:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 9133,
                    "nodeType": "IfStatement",
                    "src": "1242:100:31",
                    "trueBody": {
                      "id": 9132,
                      "nodeType": "Block",
                      "src": "1266:76:31",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 9129,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9099,
                                "src": "1333:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 9126,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9053,
                                "src": "1283:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 9128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1297:35:31",
                              "memberName": "PRBMath_SD59x18_IntoSD1x18_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9819,
                              "src": "1283:49:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 9130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1283:52:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 9131,
                          "nodeType": "RevertStatement",
                          "src": "1276:59:31"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 9142,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 9134,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9103,
                        "src": "1347:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                          "typeString": "SD1x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 9139,
                                "name": "xInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9106,
                                "src": "1374:4:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9138,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1368:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int64_$",
                                "typeString": "type(int64)"
                              },
                              "typeName": {
                                "id": 9137,
                                "name": "int64",
                                "nodeType": "ElementaryTypeName",
                                "src": "1368:5:31",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9140,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1368:11:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int64",
                              "typeString": "int64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int64",
                              "typeString": "int64"
                            }
                          ],
                          "expression": {
                            "id": 9135,
                            "name": "SD1x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8686,
                            "src": "1356:6:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD1x18_$8686_$",
                              "typeString": "type(SD1x18)"
                            }
                          },
                          "id": 9136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1363:4:31",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "1356:11:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int64_$returns$_t_userDefinedValueType$_SD1x18_$8686_$",
                            "typeString": "function (int64) pure returns (SD1x18)"
                          }
                        },
                        "id": 9141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1356:24:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                          "typeString": "SD1x18"
                        }
                      },
                      "src": "1347:33:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "id": 9143,
                    "nodeType": "ExpressionStatement",
                    "src": "1347:33:31"
                  }
                ]
              },
              "documentation": {
                "id": 9096,
                "nodeType": "StructuredDocumentation",
                "src": "913:120:31",
                "text": "@notice Casts an SD59x18 number into SD1x18.\n @dev Requirements:\n - x ≥ uMIN_SD1x18\n - x ≤ uMAX_SD1x18"
              },
              "id": 9145,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoSD1x18",
              "nameLocation": "1042:10:31",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9100,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9099,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1061:1:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9145,
                    "src": "1053:9:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9098,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9097,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1053:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1053:7:31"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1053:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1052:11:31"
              },
              "returnParameters": {
                "id": 9104,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9103,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1085:6:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9145,
                    "src": "1078:13:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                      "typeString": "SD1x18"
                    },
                    "typeName": {
                      "id": 9102,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9101,
                        "name": "SD1x18",
                        "nameLocations": [
                          "1078:6:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8686,
                        "src": "1078:6:31"
                      },
                      "referencedDeclaration": 8686,
                      "src": "1078:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1077:15:31"
              },
              "scope": 9566,
              "src": "1033:350:31",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 9194,
                "nodeType": "Block",
                "src": "1570:296:31",
                "statements": [
                  {
                    "assignments": [
                      9156
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 9156,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "1583:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 9194,
                        "src": "1576:11:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9155,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1576:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 9161,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 9159,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9149,
                          "src": "1605:1:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        ],
                        "expression": {
                          "id": 9157,
                          "name": "SD59x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "1590:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "type(SD59x18)"
                          }
                        },
                        "id": 9158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1598:6:31",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "1590:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 9160,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1590:17:31",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1576:31:31"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 9164,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 9162,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9156,
                        "src": "1617:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "id": 9163,
                        "name": "uMIN_SD21x18",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8976,
                        "src": "1624:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "src": "1617:19:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 9172,
                    "nodeType": "IfStatement",
                    "src": "1613:103:31",
                    "trueBody": {
                      "id": 9171,
                      "nodeType": "Block",
                      "src": "1638:78:31",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 9168,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9149,
                                "src": "1707:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 9165,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9053,
                                "src": "1655:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 9167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1669:37:31",
                              "memberName": "PRBMath_SD59x18_IntoSD21x18_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9837,
                              "src": "1655:51:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 9169,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1655:54:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 9170,
                          "nodeType": "RevertStatement",
                          "src": "1648:61:31"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 9175,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 9173,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9156,
                        "src": "1725:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 9174,
                        "name": "uMAX_SD21x18",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8964,
                        "src": "1732:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "src": "1725:19:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 9183,
                    "nodeType": "IfStatement",
                    "src": "1721:102:31",
                    "trueBody": {
                      "id": 9182,
                      "nodeType": "Block",
                      "src": "1746:77:31",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 9179,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9149,
                                "src": "1814:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 9176,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9053,
                                "src": "1763:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 9178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1777:36:31",
                              "memberName": "PRBMath_SD59x18_IntoSD21x18_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9831,
                              "src": "1763:50:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 9180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1763:53:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 9181,
                          "nodeType": "RevertStatement",
                          "src": "1756:60:31"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 9192,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 9184,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9153,
                        "src": "1828:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                          "typeString": "SD21x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 9189,
                                "name": "xInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9156,
                                "src": "1857:4:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1850:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int128_$",
                                "typeString": "type(int128)"
                              },
                              "typeName": {
                                "id": 9187,
                                "name": "int128",
                                "nodeType": "ElementaryTypeName",
                                "src": "1850:6:31",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9190,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1850:12:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          ],
                          "expression": {
                            "id": 9185,
                            "name": "SD21x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9041,
                            "src": "1837:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD21x18_$9041_$",
                              "typeString": "type(SD21x18)"
                            }
                          },
                          "id": 9186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1845:4:31",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "1837:12:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int128_$returns$_t_userDefinedValueType$_SD21x18_$9041_$",
                            "typeString": "function (int128) pure returns (SD21x18)"
                          }
                        },
                        "id": 9191,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1837:26:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                          "typeString": "SD21x18"
                        }
                      },
                      "src": "1828:35:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "id": 9193,
                    "nodeType": "ExpressionStatement",
                    "src": "1828:35:31"
                  }
                ]
              },
              "documentation": {
                "id": 9146,
                "nodeType": "StructuredDocumentation",
                "src": "1385:123:31",
                "text": "@notice Casts an SD59x18 number into SD21x18.\n @dev Requirements:\n - x ≥ uMIN_SD21x18\n - x ≤ uMAX_SD21x18"
              },
              "id": 9195,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoSD21x18",
              "nameLocation": "1517:11:31",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9150,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9149,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1537:1:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9195,
                    "src": "1529:9:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9148,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9147,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1529:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1529:7:31"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1529:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1528:11:31"
              },
              "returnParameters": {
                "id": 9154,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9153,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1562:6:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9195,
                    "src": "1554:14:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                      "typeString": "SD21x18"
                    },
                    "typeName": {
                      "id": 9152,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9151,
                        "name": "SD21x18",
                        "nameLocations": [
                          "1554:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9041,
                        "src": "1554:7:31"
                      },
                      "referencedDeclaration": 9041,
                      "src": "1554:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1553:16:31"
              },
              "scope": 9566,
              "src": "1508:358:31",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 9253,
                "nodeType": "Block",
                "src": "2038:307:31",
                "statements": [
                  {
                    "assignments": [
                      9206
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 9206,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "2051:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 9253,
                        "src": "2044:11:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9205,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2044:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 9211,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 9209,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9199,
                          "src": "2073:1:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        ],
                        "expression": {
                          "id": 9207,
                          "name": "SD59x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "2058:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "type(SD59x18)"
                          }
                        },
                        "id": 9208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "2066:6:31",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "2058:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 9210,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2058:17:31",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2044:31:31"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 9214,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 9212,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9206,
                        "src": "2085:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 9213,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2092:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "2085:8:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 9222,
                    "nodeType": "IfStatement",
                    "src": "2081:91:31",
                    "trueBody": {
                      "id": 9221,
                      "nodeType": "Block",
                      "src": "2095:77:31",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 9218,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9199,
                                "src": "2163:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 9215,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9053,
                                "src": "2112:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 9217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2126:36:31",
                              "memberName": "PRBMath_SD59x18_IntoUD2x18_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9849,
                              "src": "2112:50:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 9219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2112:53:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 9220,
                          "nodeType": "RevertStatement",
                          "src": "2105:60:31"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 9231,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 9223,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9206,
                        "src": "2181:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 9228,
                                "name": "uMAX_UD2x18",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12228,
                                "src": "2203:11:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "id": 9227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2195:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9226,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2195:7:31",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2195:20:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2188:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_int256_$",
                            "typeString": "type(int256)"
                          },
                          "typeName": {
                            "id": 9224,
                            "name": "int256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2188:6:31",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2188:28:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "2181:35:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 9239,
                    "nodeType": "IfStatement",
                    "src": "2177:117:31",
                    "trueBody": {
                      "id": 9238,
                      "nodeType": "Block",
                      "src": "2218:76:31",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 9235,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9199,
                                "src": "2285:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 9232,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9053,
                                "src": "2235:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 9234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2249:35:31",
                              "memberName": "PRBMath_SD59x18_IntoUD2x18_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9843,
                              "src": "2235:49:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 9236,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2235:52:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 9237,
                          "nodeType": "RevertStatement",
                          "src": "2228:59:31"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 9251,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 9240,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9203,
                        "src": "2299:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                          "typeString": "UD2x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 9247,
                                    "name": "xInt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9206,
                                    "src": "2335:4:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9246,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2327:7:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 9245,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2327:7:31",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9248,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2327:13:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 9244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2320:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 9243,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "2320:6:31",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2320:21:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "expression": {
                            "id": 9241,
                            "name": "UD2x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12269,
                            "src": "2308:6:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD2x18_$12269_$",
                              "typeString": "type(UD2x18)"
                            }
                          },
                          "id": 9242,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2315:4:31",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "2308:11:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint64_$returns$_t_userDefinedValueType$_UD2x18_$12269_$",
                            "typeString": "function (uint64) pure returns (UD2x18)"
                          }
                        },
                        "id": 9250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2308:34:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                          "typeString": "UD2x18"
                        }
                      },
                      "src": "2299:43:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                        "typeString": "UD2x18"
                      }
                    },
                    "id": 9252,
                    "nodeType": "ExpressionStatement",
                    "src": "2299:43:31"
                  }
                ]
              },
              "documentation": {
                "id": 9196,
                "nodeType": "StructuredDocumentation",
                "src": "1868:110:31",
                "text": "@notice Casts an SD59x18 number into UD2x18.\n @dev Requirements:\n - x ≥ 0\n - x ≤ uMAX_UD2x18"
              },
              "id": 9254,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUD2x18",
              "nameLocation": "1987:10:31",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9200,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9199,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2006:1:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9254,
                    "src": "1998:9:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9198,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9197,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1998:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1998:7:31"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1998:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1997:11:31"
              },
              "returnParameters": {
                "id": 9204,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9203,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2030:6:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9254,
                    "src": "2023:13:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                      "typeString": "UD2x18"
                    },
                    "typeName": {
                      "id": 9202,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9201,
                        "name": "UD2x18",
                        "nameLocations": [
                          "2023:6:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12269,
                        "src": "2023:6:31"
                      },
                      "referencedDeclaration": 12269,
                      "src": "2023:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                        "typeString": "UD2x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2022:15:31"
              },
              "scope": 9566,
              "src": "1978:367:31",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 9312,
                "nodeType": "Block",
                "src": "2521:312:31",
                "statements": [
                  {
                    "assignments": [
                      9265
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 9265,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "2534:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 9312,
                        "src": "2527:11:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9264,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2527:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 9270,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 9268,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9258,
                          "src": "2556:1:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        ],
                        "expression": {
                          "id": 9266,
                          "name": "SD59x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "2541:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "type(SD59x18)"
                          }
                        },
                        "id": 9267,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "2549:6:31",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "2541:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 9269,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2541:17:31",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2527:31:31"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 9273,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 9271,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9265,
                        "src": "2568:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 9272,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2575:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "2568:8:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 9281,
                    "nodeType": "IfStatement",
                    "src": "2564:92:31",
                    "trueBody": {
                      "id": 9280,
                      "nodeType": "Block",
                      "src": "2578:78:31",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 9277,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9258,
                                "src": "2647:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 9274,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9053,
                                "src": "2595:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 9276,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2609:37:31",
                              "memberName": "PRBMath_SD59x18_IntoUD21x18_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9861,
                              "src": "2595:51:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 9278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2595:54:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 9279,
                          "nodeType": "RevertStatement",
                          "src": "2588:61:31"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 9290,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 9282,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9265,
                        "src": "2665:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 9287,
                                "name": "uMAX_UD21x18",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11974,
                                "src": "2687:12:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "id": 9286,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2679:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9285,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2679:7:31",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9288,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2679:21:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2672:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_int256_$",
                            "typeString": "type(int256)"
                          },
                          "typeName": {
                            "id": 9283,
                            "name": "int256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2672:6:31",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9289,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2672:29:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "2665:36:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 9298,
                    "nodeType": "IfStatement",
                    "src": "2661:119:31",
                    "trueBody": {
                      "id": 9297,
                      "nodeType": "Block",
                      "src": "2703:77:31",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 9294,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9258,
                                "src": "2771:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 9291,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9053,
                                "src": "2720:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 9293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2734:36:31",
                              "memberName": "PRBMath_SD59x18_IntoUD21x18_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9855,
                              "src": "2720:50:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 9295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2720:53:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 9296,
                          "nodeType": "RevertStatement",
                          "src": "2713:60:31"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 9310,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 9299,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9262,
                        "src": "2785:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                          "typeString": "UD21x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 9306,
                                    "name": "xInt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9265,
                                    "src": "2823:4:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9305,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2815:7:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 9304,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2815:7:31",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9307,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2815:13:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 9303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2807:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 9302,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "2807:7:31",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9308,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2807:22:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          ],
                          "expression": {
                            "id": 9300,
                            "name": "UD21x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12015,
                            "src": "2794:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD21x18_$12015_$",
                              "typeString": "type(UD21x18)"
                            }
                          },
                          "id": 9301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2802:4:31",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "2794:12:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint128_$returns$_t_userDefinedValueType$_UD21x18_$12015_$",
                            "typeString": "function (uint128) pure returns (UD21x18)"
                          }
                        },
                        "id": 9309,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2794:36:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                          "typeString": "UD21x18"
                        }
                      },
                      "src": "2785:45:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                        "typeString": "UD21x18"
                      }
                    },
                    "id": 9311,
                    "nodeType": "ExpressionStatement",
                    "src": "2785:45:31"
                  }
                ]
              },
              "documentation": {
                "id": 9255,
                "nodeType": "StructuredDocumentation",
                "src": "2347:112:31",
                "text": "@notice Casts an SD59x18 number into UD21x18.\n @dev Requirements:\n - x ≥ 0\n - x ≤ uMAX_UD21x18"
              },
              "id": 9313,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUD21x18",
              "nameLocation": "2468:11:31",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9259,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9258,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2488:1:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9313,
                    "src": "2480:9:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9257,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9256,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2480:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2480:7:31"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2480:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2479:11:31"
              },
              "returnParameters": {
                "id": 9263,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9262,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2513:6:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9313,
                    "src": "2505:14:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                      "typeString": "UD21x18"
                    },
                    "typeName": {
                      "id": 9261,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9260,
                        "name": "UD21x18",
                        "nameLocations": [
                          "2505:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12015,
                        "src": "2505:7:31"
                      },
                      "referencedDeclaration": 12015,
                      "src": "2505:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                        "typeString": "UD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2504:16:31"
              },
              "scope": 9566,
              "src": "2459:374:31",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 9351,
                "nodeType": "Block",
                "src": "2984:179:31",
                "statements": [
                  {
                    "assignments": [
                      9324
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 9324,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "2997:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 9351,
                        "src": "2990:11:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9323,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2990:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 9329,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 9327,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9317,
                          "src": "3019:1:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        ],
                        "expression": {
                          "id": 9325,
                          "name": "SD59x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "3004:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "type(SD59x18)"
                          }
                        },
                        "id": 9326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "3012:6:31",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "3004:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 9328,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3004:17:31",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2990:31:31"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 9332,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 9330,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9324,
                        "src": "3031:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 9331,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3038:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "3031:8:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 9340,
                    "nodeType": "IfStatement",
                    "src": "3027:92:31",
                    "trueBody": {
                      "id": 9339,
                      "nodeType": "Block",
                      "src": "3041:78:31",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 9336,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9317,
                                "src": "3110:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 9333,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9053,
                                "src": "3058:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 9335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3072:37:31",
                              "memberName": "PRBMath_SD59x18_IntoUD60x18_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9867,
                              "src": "3058:51:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 9337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3058:54:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 9338,
                          "nodeType": "RevertStatement",
                          "src": "3051:61:31"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 9349,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 9341,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9321,
                        "src": "3124:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 9346,
                                "name": "xInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9324,
                                "src": "3154:4:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3146:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9344,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3146:7:31",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3146:13:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 9342,
                            "name": "UD60x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14179,
                            "src": "3133:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "type(UD60x18)"
                            }
                          },
                          "id": 9343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3141:4:31",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "3133:12:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 9348,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3133:27:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "3124:36:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 9350,
                    "nodeType": "ExpressionStatement",
                    "src": "3124:36:31"
                  }
                ]
              },
              "documentation": {
                "id": 9314,
                "nodeType": "StructuredDocumentation",
                "src": "2835:87:31",
                "text": "@notice Casts an SD59x18 number into UD60x18.\n @dev Requirements:\n - x ≥ 0"
              },
              "id": 9352,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUD60x18",
              "nameLocation": "2931:11:31",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9318,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9317,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2951:1:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9352,
                    "src": "2943:9:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9316,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9315,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2943:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2943:7:31"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2943:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2942:11:31"
              },
              "returnParameters": {
                "id": 9322,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9321,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2976:6:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9352,
                    "src": "2968:14:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 9320,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9319,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2968:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2968:7:31"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2968:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2967:16:31"
              },
              "scope": 9566,
              "src": "2922:241:31",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 9386,
                "nodeType": "Block",
                "src": "3314:165:31",
                "statements": [
                  {
                    "assignments": [
                      9362
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 9362,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "3327:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 9386,
                        "src": "3320:11:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9361,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3320:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 9367,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 9365,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9356,
                          "src": "3349:1:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        ],
                        "expression": {
                          "id": 9363,
                          "name": "SD59x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "3334:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "type(SD59x18)"
                          }
                        },
                        "id": 9364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "3342:6:31",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "3334:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 9366,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3334:17:31",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3320:31:31"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 9370,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 9368,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9362,
                        "src": "3361:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 9369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3368:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "3361:8:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 9378,
                    "nodeType": "IfStatement",
                    "src": "3357:92:31",
                    "trueBody": {
                      "id": 9377,
                      "nodeType": "Block",
                      "src": "3371:78:31",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 9374,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9356,
                                "src": "3440:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 9371,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9053,
                                "src": "3388:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 9373,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3402:37:31",
                              "memberName": "PRBMath_SD59x18_IntoUint256_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9885,
                              "src": "3388:51:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 9375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3388:54:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 9376,
                          "nodeType": "RevertStatement",
                          "src": "3381:61:31"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 9384,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 9379,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9359,
                        "src": "3454:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 9382,
                            "name": "xInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9362,
                            "src": "3471:4:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 9381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3463:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 9380,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3463:7:31",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9383,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3463:13:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3454:22:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9385,
                    "nodeType": "ExpressionStatement",
                    "src": "3454:22:31"
                  }
                ]
              },
              "documentation": {
                "id": 9353,
                "nodeType": "StructuredDocumentation",
                "src": "3165:87:31",
                "text": "@notice Casts an SD59x18 number into uint256.\n @dev Requirements:\n - x ≥ 0"
              },
              "id": 9387,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint256",
              "nameLocation": "3261:11:31",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9357,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9356,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3281:1:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9387,
                    "src": "3273:9:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9355,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9354,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3273:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3273:7:31"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3273:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3272:11:31"
              },
              "returnParameters": {
                "id": 9360,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9359,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3306:6:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9387,
                    "src": "3298:14:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 9358,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3298:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3297:16:31"
              },
              "scope": 9566,
              "src": "3252:227:31",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 9441,
                "nodeType": "Block",
                "src": "3655:297:31",
                "statements": [
                  {
                    "assignments": [
                      9397
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 9397,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "3668:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 9441,
                        "src": "3661:11:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9396,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3661:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 9402,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 9400,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9391,
                          "src": "3690:1:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        ],
                        "expression": {
                          "id": 9398,
                          "name": "SD59x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "3675:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "type(SD59x18)"
                          }
                        },
                        "id": 9399,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "3683:6:31",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "3675:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 9401,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3675:17:31",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3661:31:31"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 9405,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 9403,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9397,
                        "src": "3702:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 9404,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3709:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "3702:8:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 9413,
                    "nodeType": "IfStatement",
                    "src": "3698:92:31",
                    "trueBody": {
                      "id": 9412,
                      "nodeType": "Block",
                      "src": "3712:78:31",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 9409,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9391,
                                "src": "3781:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 9406,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9053,
                                "src": "3729:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 9408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3743:37:31",
                              "memberName": "PRBMath_SD59x18_IntoUint128_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9879,
                              "src": "3729:51:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 9410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3729:54:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 9411,
                          "nodeType": "RevertStatement",
                          "src": "3722:61:31"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 9422,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 9414,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9397,
                        "src": "3799:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 9419,
                                "name": "MAX_UINT128",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6628,
                                "src": "3821:11:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "id": 9418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3813:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9417,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3813:7:31",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9420,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3813:20:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3806:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_int256_$",
                            "typeString": "type(int256)"
                          },
                          "typeName": {
                            "id": 9415,
                            "name": "int256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3806:6:31",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9421,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3806:28:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "3799:35:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 9430,
                    "nodeType": "IfStatement",
                    "src": "3795:118:31",
                    "trueBody": {
                      "id": 9429,
                      "nodeType": "Block",
                      "src": "3836:77:31",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 9426,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9391,
                                "src": "3904:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 9423,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9053,
                                "src": "3853:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 9425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3867:36:31",
                              "memberName": "PRBMath_SD59x18_IntoUint128_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9873,
                              "src": "3853:50:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 9427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3853:53:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 9428,
                          "nodeType": "RevertStatement",
                          "src": "3846:60:31"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 9439,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 9431,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9394,
                        "src": "3918:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 9436,
                                "name": "xInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9397,
                                "src": "3943:4:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3935:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9434,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3935:7:31",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3935:13:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3927:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint128_$",
                            "typeString": "type(uint128)"
                          },
                          "typeName": {
                            "id": 9432,
                            "name": "uint128",
                            "nodeType": "ElementaryTypeName",
                            "src": "3927:7:31",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9438,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3927:22:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "3918:31:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "id": 9440,
                    "nodeType": "ExpressionStatement",
                    "src": "3918:31:31"
                  }
                ]
              },
              "documentation": {
                "id": 9388,
                "nodeType": "StructuredDocumentation",
                "src": "3481:112:31",
                "text": "@notice Casts an SD59x18 number into uint128.\n @dev Requirements:\n - x ≥ 0\n - x ≤ uMAX_UINT128"
              },
              "id": 9442,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint128",
              "nameLocation": "3602:11:31",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9392,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9391,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3622:1:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9442,
                    "src": "3614:9:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9390,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9389,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3614:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3614:7:31"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3614:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3613:11:31"
              },
              "returnParameters": {
                "id": 9395,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9394,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3647:6:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9442,
                    "src": "3639:14:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "typeName": {
                      "id": 9393,
                      "name": "uint128",
                      "nodeType": "ElementaryTypeName",
                      "src": "3639:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3638:16:31"
              },
              "scope": 9566,
              "src": "3593:359:31",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 9496,
                "nodeType": "Block",
                "src": "4123:293:31",
                "statements": [
                  {
                    "assignments": [
                      9452
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 9452,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "4136:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 9496,
                        "src": "4129:11:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9451,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4129:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 9457,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 9455,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9446,
                          "src": "4158:1:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        ],
                        "expression": {
                          "id": 9453,
                          "name": "SD59x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "4143:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "type(SD59x18)"
                          }
                        },
                        "id": 9454,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "4151:6:31",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "4143:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 9456,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4143:17:31",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4129:31:31"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 9460,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 9458,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9452,
                        "src": "4170:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 9459,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4177:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "4170:8:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 9468,
                    "nodeType": "IfStatement",
                    "src": "4166:91:31",
                    "trueBody": {
                      "id": 9467,
                      "nodeType": "Block",
                      "src": "4180:77:31",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 9464,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9446,
                                "src": "4248:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 9461,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9053,
                                "src": "4197:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 9463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4211:36:31",
                              "memberName": "PRBMath_SD59x18_IntoUint40_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9897,
                              "src": "4197:50:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 9465,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4197:53:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 9466,
                          "nodeType": "RevertStatement",
                          "src": "4190:60:31"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 9477,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 9469,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9452,
                        "src": "4266:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 9474,
                                "name": "MAX_UINT40",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6636,
                                "src": "4288:10:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              ],
                              "id": 9473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4280:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9472,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4280:7:31",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4280:19:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4273:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_int256_$",
                            "typeString": "type(int256)"
                          },
                          "typeName": {
                            "id": 9470,
                            "name": "int256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4273:6:31",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4273:27:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "4266:34:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 9485,
                    "nodeType": "IfStatement",
                    "src": "4262:116:31",
                    "trueBody": {
                      "id": 9484,
                      "nodeType": "Block",
                      "src": "4302:76:31",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 9481,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9446,
                                "src": "4369:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 9478,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9053,
                                "src": "4319:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 9480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4333:35:31",
                              "memberName": "PRBMath_SD59x18_IntoUint40_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9891,
                              "src": "4319:49:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 9482,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4319:52:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 9483,
                          "nodeType": "RevertStatement",
                          "src": "4312:59:31"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 9494,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 9486,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9449,
                        "src": "4383:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 9491,
                                "name": "xInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9452,
                                "src": "4407:4:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4399:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9489,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4399:7:31",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9492,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4399:13:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4392:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint40_$",
                            "typeString": "type(uint40)"
                          },
                          "typeName": {
                            "id": 9487,
                            "name": "uint40",
                            "nodeType": "ElementaryTypeName",
                            "src": "4392:6:31",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9493,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4392:21:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "src": "4383:30:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "id": 9495,
                    "nodeType": "ExpressionStatement",
                    "src": "4383:30:31"
                  }
                ]
              },
              "documentation": {
                "id": 9443,
                "nodeType": "StructuredDocumentation",
                "src": "3954:109:31",
                "text": "@notice Casts an SD59x18 number into uint40.\n @dev Requirements:\n - x ≥ 0\n - x ≤ MAX_UINT40"
              },
              "id": 9497,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint40",
              "nameLocation": "4072:10:31",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9447,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9446,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "4091:1:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9497,
                    "src": "4083:9:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9445,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9444,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4083:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4083:7:31"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4083:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4082:11:31"
              },
              "returnParameters": {
                "id": 9450,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9449,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "4115:6:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9497,
                    "src": "4108:13:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    },
                    "typeName": {
                      "id": 9448,
                      "name": "uint40",
                      "nodeType": "ElementaryTypeName",
                      "src": "4108:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4107:15:31"
              },
              "scope": 9566,
              "src": "4063:353:31",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 9513,
                "nodeType": "Block",
                "src": "4500:33:31",
                "statements": [
                  {
                    "expression": {
                      "id": 9511,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 9506,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9504,
                        "src": "4506:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 9509,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9500,
                            "src": "4528:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "expression": {
                            "id": 9507,
                            "name": "SD59x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11699,
                            "src": "4515:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "type(SD59x18)"
                            }
                          },
                          "id": 9508,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4523:4:31",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "4515:12:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 9510,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4515:15:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "4506:24:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 9512,
                    "nodeType": "ExpressionStatement",
                    "src": "4506:24:31"
                  }
                ]
              },
              "documentation": {
                "id": 9498,
                "nodeType": "StructuredDocumentation",
                "src": "4418:30:31",
                "text": "@notice Alias for {wrap}."
              },
              "id": 9514,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "sd",
              "nameLocation": "4457:2:31",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9501,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9500,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "4467:1:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9514,
                    "src": "4460:8:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "typeName": {
                      "id": 9499,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4460:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4459:10:31"
              },
              "returnParameters": {
                "id": 9505,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9504,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "4492:6:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9514,
                    "src": "4484:14:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9503,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9502,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4484:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4484:7:31"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4484:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4483:16:31"
              },
              "scope": 9566,
              "src": "4448:85:31",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 9530,
                "nodeType": "Block",
                "src": "4622:33:31",
                "statements": [
                  {
                    "expression": {
                      "id": 9528,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 9523,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9521,
                        "src": "4628:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 9526,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9517,
                            "src": "4650:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "expression": {
                            "id": 9524,
                            "name": "SD59x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11699,
                            "src": "4637:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "type(SD59x18)"
                            }
                          },
                          "id": 9525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4645:4:31",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "4637:12:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 9527,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4637:15:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "4628:24:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 9529,
                    "nodeType": "ExpressionStatement",
                    "src": "4628:24:31"
                  }
                ]
              },
              "documentation": {
                "id": 9515,
                "nodeType": "StructuredDocumentation",
                "src": "4535:30:31",
                "text": "@notice Alias for {wrap}."
              },
              "id": 9531,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "sd59x18",
              "nameLocation": "4574:7:31",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9518,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9517,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "4589:1:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9531,
                    "src": "4582:8:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "typeName": {
                      "id": 9516,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4582:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4581:10:31"
              },
              "returnParameters": {
                "id": 9522,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9521,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "4614:6:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9531,
                    "src": "4606:14:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9520,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9519,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4606:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4606:7:31"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4606:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4605:16:31"
              },
              "scope": 9566,
              "src": "4565:90:31",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 9547,
                "nodeType": "Block",
                "src": "4764:35:31",
                "statements": [
                  {
                    "expression": {
                      "id": 9545,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 9540,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9538,
                        "src": "4770:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 9543,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9535,
                            "src": "4794:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          ],
                          "expression": {
                            "id": 9541,
                            "name": "SD59x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11699,
                            "src": "4779:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "type(SD59x18)"
                            }
                          },
                          "id": 9542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4787:6:31",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "src": "4779:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$",
                            "typeString": "function (SD59x18) pure returns (int256)"
                          }
                        },
                        "id": 9544,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4779:17:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "4770:26:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "id": 9546,
                    "nodeType": "ExpressionStatement",
                    "src": "4770:26:31"
                  }
                ]
              },
              "documentation": {
                "id": 9532,
                "nodeType": "StructuredDocumentation",
                "src": "4657:51:31",
                "text": "@notice Unwraps an SD59x18 number into int256."
              },
              "id": 9548,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "unwrap",
              "nameLocation": "4717:6:31",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9536,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9535,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "4732:1:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9548,
                    "src": "4724:9:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9534,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9533,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4724:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4724:7:31"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4724:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4723:11:31"
              },
              "returnParameters": {
                "id": 9539,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9538,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "4756:6:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9548,
                    "src": "4749:13:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "typeName": {
                      "id": 9537,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4749:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4748:15:31"
              },
              "scope": 9566,
              "src": "4708:91:31",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 9564,
                "nodeType": "Block",
                "src": "4904:33:31",
                "statements": [
                  {
                    "expression": {
                      "id": 9562,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 9557,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9555,
                        "src": "4910:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 9560,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9551,
                            "src": "4932:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "expression": {
                            "id": 9558,
                            "name": "SD59x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11699,
                            "src": "4919:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "type(SD59x18)"
                            }
                          },
                          "id": 9559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4927:4:31",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "4919:12:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 9561,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4919:15:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "4910:24:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 9563,
                    "nodeType": "ExpressionStatement",
                    "src": "4910:24:31"
                  }
                ]
              },
              "documentation": {
                "id": 9549,
                "nodeType": "StructuredDocumentation",
                "src": "4801:49:31",
                "text": "@notice Wraps an int256 number into SD59x18."
              },
              "id": 9565,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "wrap",
              "nameLocation": "4859:4:31",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9552,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9551,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "4871:1:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9565,
                    "src": "4864:8:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "typeName": {
                      "id": 9550,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4864:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4863:10:31"
              },
              "returnParameters": {
                "id": 9556,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9555,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "4896:6:31",
                    "nodeType": "VariableDeclaration",
                    "scope": 9565,
                    "src": "4888:14:31",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9554,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9553,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4888:7:31"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4888:7:31"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4888:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4887:16:31"
              },
              "scope": 9566,
              "src": "4850:87:31",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            }
          ],
          "src": "32:4906:31"
        },
        "id": 31
      },
      "@prb/math/src/sd59x18/Constants.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/sd59x18/Constants.sol",
          "exportedSymbols": {
            "E": [
              9577
            ],
            "EXP2_MAX_INPUT": [
              9613
            ],
            "EXP2_MIN_THRESHOLD": [
              9625
            ],
            "EXP_MAX_INPUT": [
              9588
            ],
            "EXP_MIN_THRESHOLD": [
              9600
            ],
            "HALF_UNIT": [
              9636
            ],
            "LOG2_10": [
              9647
            ],
            "LOG2_E": [
              9658
            ],
            "MAX_SD59x18": [
              9669
            ],
            "MAX_WHOLE_SD59x18": [
              9680
            ],
            "MIN_SD59x18": [
              9692
            ],
            "MIN_WHOLE_SD59x18": [
              9704
            ],
            "PI": [
              9712
            ],
            "SD59x18": [
              11699
            ],
            "UNIT": [
              9723
            ],
            "UNIT_SQUARED": [
              9734
            ],
            "ZERO": [
              9742
            ],
            "uEXP2_MAX_INPUT": [
              9606
            ],
            "uEXP2_MIN_THRESHOLD": [
              9618
            ],
            "uEXP_MAX_INPUT": [
              9581
            ],
            "uEXP_MIN_THRESHOLD": [
              9593
            ],
            "uHALF_UNIT": [
              9629
            ],
            "uLOG2_10": [
              9640
            ],
            "uLOG2_E": [
              9651
            ],
            "uMAX_SD59x18": [
              9662
            ],
            "uMAX_WHOLE_SD59x18": [
              9673
            ],
            "uMIN_SD59x18": [
              9685
            ],
            "uMIN_WHOLE_SD59x18": [
              9697
            ],
            "uUNIT": [
              9716
            ],
            "uUNIT_SQUARED": [
              9727
            ]
          },
          "id": 9743,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9567,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:32"
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 9569,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9743,
              "sourceUnit": 11774,
              "src": "59:42:32",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9568,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "68:7:32",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "constant": true,
              "id": 9577,
              "mutability": "constant",
              "name": "E",
              "nameLocation": "217:1:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "200:55:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9572,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9571,
                  "name": "SD59x18",
                  "nameLocations": [
                    "200:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "200:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "200:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "325f373138323831383238343539303435323335",
                    "id": 9575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "234:20:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2718281828459045235_by_1",
                      "typeString": "int_const 2718281828459045235"
                    },
                    "value": "2_718281828459045235"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_2718281828459045235_by_1",
                      "typeString": "int_const 2718281828459045235"
                    }
                  ],
                  "expression": {
                    "id": 9573,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "221:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9574,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "229:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "221:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9576,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "221:34:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9581,
              "mutability": "constant",
              "name": "uEXP_MAX_INPUT",
              "nameLocation": "321:14:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "305:55:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              },
              "typeName": {
                "id": 9579,
                "name": "int256",
                "nodeType": "ElementaryTypeName",
                "src": "305:6:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              },
              "value": {
                "hexValue": "3133335f303834323538363637353039343939343430",
                "id": 9580,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "338:22:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_133084258667509499440_by_1",
                  "typeString": "int_const 133084258667509499440"
                },
                "value": "133_084258667509499440"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9588,
              "mutability": "constant",
              "name": "EXP_MAX_INPUT",
              "nameLocation": "379:13:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "362:61:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9583,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9582,
                  "name": "SD59x18",
                  "nameLocations": [
                    "362:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "362:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "362:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 9586,
                    "name": "uEXP_MAX_INPUT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9581,
                    "src": "408:14:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  ],
                  "expression": {
                    "id": 9584,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "395:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9585,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "403:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "395:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9587,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "395:28:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9593,
              "mutability": "constant",
              "name": "uEXP_MIN_THRESHOLD",
              "nameLocation": "496:18:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "480:59:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              },
              "typeName": {
                "id": 9590,
                "name": "int256",
                "nodeType": "ElementaryTypeName",
                "src": "480:6:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              },
              "value": {
                "id": 9592,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "UnaryOperation",
                "operator": "-",
                "prefix": true,
                "src": "517:22:32",
                "subExpression": {
                  "hexValue": "34315f343436353331363733383932383232333232",
                  "id": 9591,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "518:21:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_41446531673892822322_by_1",
                    "typeString": "int_const 41446531673892822322"
                  },
                  "value": "41_446531673892822322"
                },
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_minus_41446531673892822322_by_1",
                  "typeString": "int_const -41446531673892822322"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9600,
              "mutability": "constant",
              "name": "EXP_MIN_THRESHOLD",
              "nameLocation": "558:17:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "541:69:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9595,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9594,
                  "name": "SD59x18",
                  "nameLocations": [
                    "541:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "541:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "541:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 9598,
                    "name": "uEXP_MIN_THRESHOLD",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9593,
                    "src": "591:18:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  ],
                  "expression": {
                    "id": 9596,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "578:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9597,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "586:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "578:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9599,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "578:32:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9606,
              "mutability": "constant",
              "name": "uEXP2_MAX_INPUT",
              "nameLocation": "677:15:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "661:44:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              },
              "typeName": {
                "id": 9602,
                "name": "int256",
                "nodeType": "ElementaryTypeName",
                "src": "661:6:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              },
              "value": {
                "commonType": {
                  "typeIdentifier": "t_rational_191999999999999999999_by_1",
                  "typeString": "int_const 191999999999999999999"
                },
                "id": 9605,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "leftExpression": {
                  "hexValue": "313932653138",
                  "id": 9603,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "695:6:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_192000000000000000000_by_1",
                    "typeString": "int_const 192000000000000000000"
                  },
                  "value": "192e18"
                },
                "nodeType": "BinaryOperation",
                "operator": "-",
                "rightExpression": {
                  "hexValue": "31",
                  "id": 9604,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "704:1:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_1_by_1",
                    "typeString": "int_const 1"
                  },
                  "value": "1"
                },
                "src": "695:10:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_191999999999999999999_by_1",
                  "typeString": "int_const 191999999999999999999"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9613,
              "mutability": "constant",
              "name": "EXP2_MAX_INPUT",
              "nameLocation": "724:14:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "707:63:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9608,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9607,
                  "name": "SD59x18",
                  "nameLocations": [
                    "707:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "707:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "707:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 9611,
                    "name": "uEXP2_MAX_INPUT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9606,
                    "src": "754:15:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  ],
                  "expression": {
                    "id": 9609,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "741:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9610,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "749:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "741:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9612,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "741:29:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9618,
              "mutability": "constant",
              "name": "uEXP2_MIN_THRESHOLD",
              "nameLocation": "844:19:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "828:60:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              },
              "typeName": {
                "id": 9615,
                "name": "int256",
                "nodeType": "ElementaryTypeName",
                "src": "828:6:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              },
              "value": {
                "id": 9617,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "UnaryOperation",
                "operator": "-",
                "prefix": true,
                "src": "866:22:32",
                "subExpression": {
                  "hexValue": "35395f373934373035373037393732353232323631",
                  "id": 9616,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "867:21:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_59794705707972522261_by_1",
                    "typeString": "int_const 59794705707972522261"
                  },
                  "value": "59_794705707972522261"
                },
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_minus_59794705707972522261_by_1",
                  "typeString": "int_const -59794705707972522261"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9625,
              "mutability": "constant",
              "name": "EXP2_MIN_THRESHOLD",
              "nameLocation": "907:18:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "890:71:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9620,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9619,
                  "name": "SD59x18",
                  "nameLocations": [
                    "890:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "890:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "890:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 9623,
                    "name": "uEXP2_MIN_THRESHOLD",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9618,
                    "src": "941:19:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  ],
                  "expression": {
                    "id": 9621,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "928:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9622,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "936:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "928:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9624,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "928:33:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9629,
              "mutability": "constant",
              "name": "uHALF_UNIT",
              "nameLocation": "1011:10:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "995:35:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              },
              "typeName": {
                "id": 9627,
                "name": "int256",
                "nodeType": "ElementaryTypeName",
                "src": "995:6:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              },
              "value": {
                "hexValue": "302e35653138",
                "id": 9628,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1024:6:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_500000000000000000_by_1",
                  "typeString": "int_const 500000000000000000"
                },
                "value": "0.5e18"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9636,
              "mutability": "constant",
              "name": "HALF_UNIT",
              "nameLocation": "1049:9:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "1032:53:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9631,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9630,
                  "name": "SD59x18",
                  "nameLocations": [
                    "1032:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "1032:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "1032:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 9634,
                    "name": "uHALF_UNIT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9629,
                    "src": "1074:10:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  ],
                  "expression": {
                    "id": 9632,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "1061:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9633,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "1069:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "1061:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9635,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "1061:24:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9640,
              "mutability": "constant",
              "name": "uLOG2_10",
              "nameLocation": "1147:8:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "1131:47:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              },
              "typeName": {
                "id": 9638,
                "name": "int256",
                "nodeType": "ElementaryTypeName",
                "src": "1131:6:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              },
              "value": {
                "hexValue": "335f333231393238303934383837333632333437",
                "id": 9639,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1158:20:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_3321928094887362347_by_1",
                  "typeString": "int_const 3321928094887362347"
                },
                "value": "3_321928094887362347"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9647,
              "mutability": "constant",
              "name": "LOG2_10",
              "nameLocation": "1197:7:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "1180:49:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9642,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9641,
                  "name": "SD59x18",
                  "nameLocations": [
                    "1180:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "1180:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "1180:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 9645,
                    "name": "uLOG2_10",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9640,
                    "src": "1220:8:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  ],
                  "expression": {
                    "id": 9643,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "1207:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9644,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "1215:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "1207:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9646,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "1207:22:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9651,
              "mutability": "constant",
              "name": "uLOG2_E",
              "nameLocation": "1290:7:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "1274:46:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              },
              "typeName": {
                "id": 9649,
                "name": "int256",
                "nodeType": "ElementaryTypeName",
                "src": "1274:6:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              },
              "value": {
                "hexValue": "315f343432363935303430383838393633343037",
                "id": 9650,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1300:20:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1442695040888963407_by_1",
                  "typeString": "int_const 1442695040888963407"
                },
                "value": "1_442695040888963407"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9658,
              "mutability": "constant",
              "name": "LOG2_E",
              "nameLocation": "1339:6:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "1322:47:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9653,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9652,
                  "name": "SD59x18",
                  "nameLocations": [
                    "1322:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "1322:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "1322:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 9656,
                    "name": "uLOG2_E",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9651,
                    "src": "1361:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  ],
                  "expression": {
                    "id": 9654,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "1348:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9655,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "1356:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "1348:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9657,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "1348:21:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9662,
              "mutability": "constant",
              "name": "uMAX_SD59x18",
              "nameLocation": "1443:12:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "1427:109:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              },
              "typeName": {
                "id": 9660,
                "name": "int256",
                "nodeType": "ElementaryTypeName",
                "src": "1427:6:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              },
              "value": {
                "hexValue": "35373839363034343631383635383039373731313738353439323530343334333935333932363633343939323333323832303238323031393732385f373932303033393536353634383139393637",
                "id": 9661,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1458:78:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1",
                  "typeString": "int_const 5789...(69 digits omitted)...9967"
                },
                "value": "57896044618658097711785492504343953926634992332820282019728_792003956564819967"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9669,
              "mutability": "constant",
              "name": "MAX_SD59x18",
              "nameLocation": "1555:11:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "1538:57:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9664,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9663,
                  "name": "SD59x18",
                  "nameLocations": [
                    "1538:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "1538:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "1538:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 9667,
                    "name": "uMAX_SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9662,
                    "src": "1582:12:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  ],
                  "expression": {
                    "id": 9665,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "1569:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9666,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "1577:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "1569:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9668,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "1569:26:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9673,
              "mutability": "constant",
              "name": "uMAX_WHOLE_SD59x18",
              "nameLocation": "1675:18:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "1659:115:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              },
              "typeName": {
                "id": 9671,
                "name": "int256",
                "nodeType": "ElementaryTypeName",
                "src": "1659:6:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              },
              "value": {
                "hexValue": "35373839363034343631383635383039373731313738353439323530343334333935333932363633343939323333323832303238323031393732385f303030303030303030303030303030303030",
                "id": 9672,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1696:78:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728000000000000000000_by_1",
                  "typeString": "int_const 5789...(69 digits omitted)...0000"
                },
                "value": "57896044618658097711785492504343953926634992332820282019728_000000000000000000"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9680,
              "mutability": "constant",
              "name": "MAX_WHOLE_SD59x18",
              "nameLocation": "1793:17:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "1776:69:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9675,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9674,
                  "name": "SD59x18",
                  "nameLocations": [
                    "1776:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "1776:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "1776:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 9678,
                    "name": "uMAX_WHOLE_SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9673,
                    "src": "1826:18:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  ],
                  "expression": {
                    "id": 9676,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "1813:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9677,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "1821:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "1813:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9679,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "1813:32:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9685,
              "mutability": "constant",
              "name": "uMIN_SD59x18",
              "nameLocation": "1919:12:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "1903:110:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              },
              "typeName": {
                "id": 9682,
                "name": "int256",
                "nodeType": "ElementaryTypeName",
                "src": "1903:6:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              },
              "value": {
                "id": 9684,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "UnaryOperation",
                "operator": "-",
                "prefix": true,
                "src": "1934:79:32",
                "subExpression": {
                  "hexValue": "35373839363034343631383635383039373731313738353439323530343334333935333932363633343939323333323832303238323031393732385f373932303033393536353634383139393638",
                  "id": 9683,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1935:78:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                    "typeString": "int_const 5789...(69 digits omitted)...9968"
                  },
                  "value": "57896044618658097711785492504343953926634992332820282019728_792003956564819968"
                },
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                  "typeString": "int_const -578...(70 digits omitted)...9968"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9692,
              "mutability": "constant",
              "name": "MIN_SD59x18",
              "nameLocation": "2032:11:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "2015:57:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9687,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9686,
                  "name": "SD59x18",
                  "nameLocations": [
                    "2015:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "2015:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "2015:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 9690,
                    "name": "uMIN_SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9685,
                    "src": "2059:12:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  ],
                  "expression": {
                    "id": 9688,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "2046:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9689,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "2054:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "2046:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9691,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "2046:26:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9697,
              "mutability": "constant",
              "name": "uMIN_WHOLE_SD59x18",
              "nameLocation": "2152:18:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "2136:116:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              },
              "typeName": {
                "id": 9694,
                "name": "int256",
                "nodeType": "ElementaryTypeName",
                "src": "2136:6:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              },
              "value": {
                "id": 9696,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "UnaryOperation",
                "operator": "-",
                "prefix": true,
                "src": "2173:79:32",
                "subExpression": {
                  "hexValue": "35373839363034343631383635383039373731313738353439323530343334333935333932363633343939323333323832303238323031393732385f303030303030303030303030303030303030",
                  "id": 9695,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "2174:78:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728000000000000000000_by_1",
                    "typeString": "int_const 5789...(69 digits omitted)...0000"
                  },
                  "value": "57896044618658097711785492504343953926634992332820282019728_000000000000000000"
                },
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728000000000000000000_by_1",
                  "typeString": "int_const -578...(70 digits omitted)...0000"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9704,
              "mutability": "constant",
              "name": "MIN_WHOLE_SD59x18",
              "nameLocation": "2271:17:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "2254:69:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9699,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9698,
                  "name": "SD59x18",
                  "nameLocations": [
                    "2254:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "2254:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "2254:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 9702,
                    "name": "uMIN_WHOLE_SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9697,
                    "src": "2304:18:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  ],
                  "expression": {
                    "id": 9700,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "2291:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9701,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "2299:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "2291:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9703,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "2291:32:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9712,
              "mutability": "constant",
              "name": "PI",
              "nameLocation": "2377:2:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "2360:56:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9707,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9706,
                  "name": "SD59x18",
                  "nameLocations": [
                    "2360:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "2360:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "2360:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "335f313431353932363533353839373933323338",
                    "id": 9710,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2395:20:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3141592653589793238_by_1",
                      "typeString": "int_const 3141592653589793238"
                    },
                    "value": "3_141592653589793238"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_3141592653589793238_by_1",
                      "typeString": "int_const 3141592653589793238"
                    }
                  ],
                  "expression": {
                    "id": 9708,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "2382:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9709,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "2390:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "2382:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9711,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "2382:34:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9716,
              "mutability": "constant",
              "name": "uUNIT",
              "nameLocation": "2507:5:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "2491:28:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              },
              "typeName": {
                "id": 9714,
                "name": "int256",
                "nodeType": "ElementaryTypeName",
                "src": "2491:6:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              },
              "value": {
                "hexValue": "31653138",
                "id": 9715,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2515:4:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                  "typeString": "int_const 1000000000000000000"
                },
                "value": "1e18"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9723,
              "mutability": "constant",
              "name": "UNIT",
              "nameLocation": "2538:4:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "2521:42:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9718,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9717,
                  "name": "SD59x18",
                  "nameLocations": [
                    "2521:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "2521:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "2521:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "31653138",
                    "id": 9721,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2558:4:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "value": "1e18"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    }
                  ],
                  "expression": {
                    "id": 9719,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "2545:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9720,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "2553:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "2545:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9722,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "2545:18:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9727,
              "mutability": "constant",
              "name": "uUNIT_SQUARED",
              "nameLocation": "2616:13:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "2600:36:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              },
              "typeName": {
                "id": 9725,
                "name": "int256",
                "nodeType": "ElementaryTypeName",
                "src": "2600:6:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              },
              "value": {
                "hexValue": "31653336",
                "id": 9726,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2632:4:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1000000000000000000000000000000000000_by_1",
                  "typeString": "int_const 1000...(29 digits omitted)...0000"
                },
                "value": "1e36"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9734,
              "mutability": "constant",
              "name": "UNIT_SQUARED",
              "nameLocation": "2655:12:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "2638:59:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9729,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9728,
                  "name": "SD59x18",
                  "nameLocations": [
                    "2638:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "2638:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "2638:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 9732,
                    "name": "uUNIT_SQUARED",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9727,
                    "src": "2683:13:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  ],
                  "expression": {
                    "id": 9730,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "2670:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9731,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "2678:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "2670:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9733,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "2670:27:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 9742,
              "mutability": "constant",
              "name": "ZERO",
              "nameLocation": "2753:4:32",
              "nodeType": "VariableDeclaration",
              "scope": 9743,
              "src": "2736:39:32",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                "typeString": "SD59x18"
              },
              "typeName": {
                "id": 9737,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 9736,
                  "name": "SD59x18",
                  "nameLocations": [
                    "2736:7:32"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "2736:7:32"
                },
                "referencedDeclaration": 11699,
                "src": "2736:7:32",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "30",
                    "id": 9740,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2773:1:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    }
                  ],
                  "expression": {
                    "id": 9738,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "2760:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                      "typeString": "type(SD59x18)"
                    }
                  },
                  "id": 9739,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "2768:4:32",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "2760:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                    "typeString": "function (int256) pure returns (SD59x18)"
                  }
                },
                "id": 9741,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "2760:15:32",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "32:2745:32"
        },
        "id": 32
      },
      "@prb/math/src/sd59x18/Errors.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/sd59x18/Errors.sol",
          "exportedSymbols": {
            "PRBMath_SD59x18_Abs_MinSD59x18": [
              9749
            ],
            "PRBMath_SD59x18_Ceil_Overflow": [
              9755
            ],
            "PRBMath_SD59x18_Convert_Overflow": [
              9760
            ],
            "PRBMath_SD59x18_Convert_Underflow": [
              9765
            ],
            "PRBMath_SD59x18_Div_InputTooSmall": [
              9768
            ],
            "PRBMath_SD59x18_Div_Overflow": [
              9777
            ],
            "PRBMath_SD59x18_Exp2_InputTooBig": [
              9789
            ],
            "PRBMath_SD59x18_Exp_InputTooBig": [
              9783
            ],
            "PRBMath_SD59x18_Floor_Underflow": [
              9795
            ],
            "PRBMath_SD59x18_Gm_NegativeProduct": [
              9804
            ],
            "PRBMath_SD59x18_Gm_Overflow": [
              9813
            ],
            "PRBMath_SD59x18_IntoSD1x18_Overflow": [
              9819
            ],
            "PRBMath_SD59x18_IntoSD1x18_Underflow": [
              9825
            ],
            "PRBMath_SD59x18_IntoSD21x18_Overflow": [
              9831
            ],
            "PRBMath_SD59x18_IntoSD21x18_Underflow": [
              9837
            ],
            "PRBMath_SD59x18_IntoUD21x18_Overflow": [
              9855
            ],
            "PRBMath_SD59x18_IntoUD21x18_Underflow": [
              9861
            ],
            "PRBMath_SD59x18_IntoUD2x18_Overflow": [
              9843
            ],
            "PRBMath_SD59x18_IntoUD2x18_Underflow": [
              9849
            ],
            "PRBMath_SD59x18_IntoUD60x18_Underflow": [
              9867
            ],
            "PRBMath_SD59x18_IntoUint128_Overflow": [
              9873
            ],
            "PRBMath_SD59x18_IntoUint128_Underflow": [
              9879
            ],
            "PRBMath_SD59x18_IntoUint256_Underflow": [
              9885
            ],
            "PRBMath_SD59x18_IntoUint40_Overflow": [
              9891
            ],
            "PRBMath_SD59x18_IntoUint40_Underflow": [
              9897
            ],
            "PRBMath_SD59x18_Log_InputTooSmall": [
              9903
            ],
            "PRBMath_SD59x18_Mul_InputTooSmall": [
              9906
            ],
            "PRBMath_SD59x18_Mul_Overflow": [
              9915
            ],
            "PRBMath_SD59x18_Powu_Overflow": [
              9923
            ],
            "PRBMath_SD59x18_Sqrt_NegativeInput": [
              9929
            ],
            "PRBMath_SD59x18_Sqrt_Overflow": [
              9935
            ],
            "SD59x18": [
              11699
            ]
          },
          "id": 9936,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9744,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:33"
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 9746,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9936,
              "sourceUnit": 11774,
              "src": "59:42:33",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9745,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "68:7:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "documentation": {
                "id": 9747,
                "nodeType": "StructuredDocumentation",
                "src": "103:68:33",
                "text": "@notice Thrown when taking the absolute value of `MIN_SD59x18`."
              },
              "errorSelector": "ec2b9e67",
              "id": 9749,
              "name": "PRBMath_SD59x18_Abs_MinSD59x18",
              "nameLocation": "177:30:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9748,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "207:2:33"
              },
              "src": "171:39:33"
            },
            {
              "documentation": {
                "id": 9750,
                "nodeType": "StructuredDocumentation",
                "src": "212:60:33",
                "text": "@notice Thrown when ceiling a number overflows SD59x18."
              },
              "errorSelector": "742fb98c",
              "id": 9755,
              "name": "PRBMath_SD59x18_Ceil_Overflow",
              "nameLocation": "278:29:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9754,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9753,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "316:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9755,
                    "src": "308:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9752,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9751,
                        "name": "SD59x18",
                        "nameLocations": [
                          "308:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "308:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "308:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "307:11:33"
              },
              "src": "272:47:33"
            },
            {
              "documentation": {
                "id": 9756,
                "nodeType": "StructuredDocumentation",
                "src": "321:96:33",
                "text": "@notice Thrown when converting a basic integer to the fixed-point format overflows SD59x18."
              },
              "errorSelector": "9d581091",
              "id": 9760,
              "name": "PRBMath_SD59x18_Convert_Overflow",
              "nameLocation": "423:32:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9759,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9758,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "463:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9760,
                    "src": "456:8:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "typeName": {
                      "id": 9757,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "456:6:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "455:10:33"
              },
              "src": "417:49:33"
            },
            {
              "documentation": {
                "id": 9761,
                "nodeType": "StructuredDocumentation",
                "src": "468:97:33",
                "text": "@notice Thrown when converting a basic integer to the fixed-point format underflows SD59x18."
              },
              "errorSelector": "99474eeb",
              "id": 9765,
              "name": "PRBMath_SD59x18_Convert_Underflow",
              "nameLocation": "571:33:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9764,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9763,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "612:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9765,
                    "src": "605:8:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "typeName": {
                      "id": 9762,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "605:6:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "604:10:33"
              },
              "src": "565:50:33"
            },
            {
              "documentation": {
                "id": 9766,
                "nodeType": "StructuredDocumentation",
                "src": "617:79:33",
                "text": "@notice Thrown when dividing two numbers and one of them is `MIN_SD59x18`."
              },
              "errorSelector": "9fe2b450",
              "id": 9768,
              "name": "PRBMath_SD59x18_Div_InputTooSmall",
              "nameLocation": "702:33:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9767,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "735:2:33"
              },
              "src": "696:42:33"
            },
            {
              "documentation": {
                "id": 9769,
                "nodeType": "StructuredDocumentation",
                "src": "740:109:33",
                "text": "@notice Thrown when dividing two numbers and one of the intermediary unsigned results overflows SD59x18."
              },
              "errorSelector": "d49c26b3",
              "id": 9777,
              "name": "PRBMath_SD59x18_Div_Overflow",
              "nameLocation": "855:28:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9776,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9772,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "892:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9777,
                    "src": "884:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9771,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9770,
                        "name": "SD59x18",
                        "nameLocations": [
                          "884:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "884:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "884:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 9775,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "903:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9777,
                    "src": "895:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9774,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9773,
                        "name": "SD59x18",
                        "nameLocations": [
                          "895:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "895:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "895:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "883:22:33"
              },
              "src": "849:57:33"
            },
            {
              "documentation": {
                "id": 9778,
                "nodeType": "StructuredDocumentation",
                "src": "908:99:33",
                "text": "@notice Thrown when taking the natural exponent of a base greater than 133_084258667509499441."
              },
              "errorSelector": "ca7ec0c5",
              "id": 9783,
              "name": "PRBMath_SD59x18_Exp_InputTooBig",
              "nameLocation": "1013:31:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9782,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9781,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1053:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9783,
                    "src": "1045:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9780,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9779,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1045:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1045:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1045:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1044:11:33"
              },
              "src": "1007:49:33"
            },
            {
              "documentation": {
                "id": 9784,
                "nodeType": "StructuredDocumentation",
                "src": "1058:82:33",
                "text": "@notice Thrown when taking the binary exponent of a base greater than 192e18."
              },
              "errorSelector": "0360d028",
              "id": 9789,
              "name": "PRBMath_SD59x18_Exp2_InputTooBig",
              "nameLocation": "1146:32:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9788,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9787,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1187:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9789,
                    "src": "1179:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9786,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9785,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1179:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1179:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1179:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1178:11:33"
              },
              "src": "1140:50:33"
            },
            {
              "documentation": {
                "id": 9790,
                "nodeType": "StructuredDocumentation",
                "src": "1192:62:33",
                "text": "@notice Thrown when flooring a number underflows SD59x18."
              },
              "errorSelector": "27064054",
              "id": 9795,
              "name": "PRBMath_SD59x18_Floor_Underflow",
              "nameLocation": "1260:31:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9794,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9793,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1300:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9795,
                    "src": "1292:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9792,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9791,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1292:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1292:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1292:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1291:11:33"
              },
              "src": "1254:49:33"
            },
            {
              "documentation": {
                "id": 9796,
                "nodeType": "StructuredDocumentation",
                "src": "1305:96:33",
                "text": "@notice Thrown when taking the geometric mean of two numbers and their product is negative."
              },
              "errorSelector": "01223166",
              "id": 9804,
              "name": "PRBMath_SD59x18_Gm_NegativeProduct",
              "nameLocation": "1407:34:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9803,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9799,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1450:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9804,
                    "src": "1442:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9798,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9797,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1442:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1442:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1442:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 9802,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "1461:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9804,
                    "src": "1453:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9801,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9800,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1453:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1453:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1453:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1441:22:33"
              },
              "src": "1401:63:33"
            },
            {
              "documentation": {
                "id": 9805,
                "nodeType": "StructuredDocumentation",
                "src": "1466:105:33",
                "text": "@notice Thrown when taking the geometric mean of two numbers and multiplying them overflows SD59x18."
              },
              "errorSelector": "300e6e5f",
              "id": 9813,
              "name": "PRBMath_SD59x18_Gm_Overflow",
              "nameLocation": "1577:27:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9812,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9808,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1613:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9813,
                    "src": "1605:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9807,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9806,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1605:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1605:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1605:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 9811,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "1624:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9813,
                    "src": "1616:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9810,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9809,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1616:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1616:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1616:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1604:22:33"
              },
              "src": "1571:56:33"
            },
            {
              "documentation": {
                "id": 9814,
                "nodeType": "StructuredDocumentation",
                "src": "1629:85:33",
                "text": "@notice Thrown when trying to cast an SD59x18 number that doesn't fit in SD1x18."
              },
              "errorSelector": "ec3e7df1",
              "id": 9819,
              "name": "PRBMath_SD59x18_IntoSD1x18_Overflow",
              "nameLocation": "1720:35:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9818,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9817,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1764:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9819,
                    "src": "1756:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9816,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9815,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1756:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1756:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1756:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1755:11:33"
              },
              "src": "1714:53:33"
            },
            {
              "documentation": {
                "id": 9820,
                "nodeType": "StructuredDocumentation",
                "src": "1769:85:33",
                "text": "@notice Thrown when trying to cast an SD59x18 number that doesn't fit in SD1x18."
              },
              "errorSelector": "0355eaa9",
              "id": 9825,
              "name": "PRBMath_SD59x18_IntoSD1x18_Underflow",
              "nameLocation": "1860:36:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9824,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9823,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1905:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9825,
                    "src": "1897:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9822,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9821,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1897:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1897:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1897:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1896:11:33"
              },
              "src": "1854:54:33"
            },
            {
              "documentation": {
                "id": 9826,
                "nodeType": "StructuredDocumentation",
                "src": "1910:86:33",
                "text": "@notice Thrown when trying to cast an SD59x18 number that doesn't fit in SD21x18."
              },
              "errorSelector": "ca797439",
              "id": 9831,
              "name": "PRBMath_SD59x18_IntoSD21x18_Overflow",
              "nameLocation": "2002:36:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9830,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9829,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2047:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9831,
                    "src": "2039:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9828,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9827,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2039:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2039:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2039:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2038:11:33"
              },
              "src": "1996:54:33"
            },
            {
              "documentation": {
                "id": 9832,
                "nodeType": "StructuredDocumentation",
                "src": "2052:86:33",
                "text": "@notice Thrown when trying to cast an SD59x18 number that doesn't fit in SD21x18."
              },
              "errorSelector": "ceeb1da7",
              "id": 9837,
              "name": "PRBMath_SD59x18_IntoSD21x18_Underflow",
              "nameLocation": "2144:37:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9836,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9835,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2190:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9837,
                    "src": "2182:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9834,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9833,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2182:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2182:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2182:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2181:11:33"
              },
              "src": "2138:55:33"
            },
            {
              "documentation": {
                "id": 9838,
                "nodeType": "StructuredDocumentation",
                "src": "2195:85:33",
                "text": "@notice Thrown when trying to cast an SD59x18 number that doesn't fit in UD2x18."
              },
              "errorSelector": "be5c1d47",
              "id": 9843,
              "name": "PRBMath_SD59x18_IntoUD2x18_Overflow",
              "nameLocation": "2286:35:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9842,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9841,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2330:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9843,
                    "src": "2322:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9840,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9839,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2322:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2322:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2322:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2321:11:33"
              },
              "src": "2280:53:33"
            },
            {
              "documentation": {
                "id": 9844,
                "nodeType": "StructuredDocumentation",
                "src": "2335:85:33",
                "text": "@notice Thrown when trying to cast an SD59x18 number that doesn't fit in UD2x18."
              },
              "errorSelector": "a0d4f736",
              "id": 9849,
              "name": "PRBMath_SD59x18_IntoUD2x18_Underflow",
              "nameLocation": "2426:36:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9848,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9847,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2471:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9849,
                    "src": "2463:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9846,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9845,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2463:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2463:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2463:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2462:11:33"
              },
              "src": "2420:54:33"
            },
            {
              "documentation": {
                "id": 9850,
                "nodeType": "StructuredDocumentation",
                "src": "2476:86:33",
                "text": "@notice Thrown when trying to cast an SD59x18 number that doesn't fit in UD21x18."
              },
              "errorSelector": "830077c0",
              "id": 9855,
              "name": "PRBMath_SD59x18_IntoUD21x18_Overflow",
              "nameLocation": "2568:36:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9854,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9853,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2613:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9855,
                    "src": "2605:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9852,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9851,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2605:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2605:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2605:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2604:11:33"
              },
              "src": "2562:54:33"
            },
            {
              "documentation": {
                "id": 9856,
                "nodeType": "StructuredDocumentation",
                "src": "2618:86:33",
                "text": "@notice Thrown when trying to cast an SD59x18 number that doesn't fit in UD21x18."
              },
              "errorSelector": "cc6f0e0d",
              "id": 9861,
              "name": "PRBMath_SD59x18_IntoUD21x18_Underflow",
              "nameLocation": "2710:37:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9860,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9859,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2756:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9861,
                    "src": "2748:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9858,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9857,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2748:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2748:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2748:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2747:11:33"
              },
              "src": "2704:55:33"
            },
            {
              "documentation": {
                "id": 9862,
                "nodeType": "StructuredDocumentation",
                "src": "2761:86:33",
                "text": "@notice Thrown when trying to cast an SD59x18 number that doesn't fit in UD60x18."
              },
              "errorSelector": "bba41a15",
              "id": 9867,
              "name": "PRBMath_SD59x18_IntoUD60x18_Underflow",
              "nameLocation": "2853:37:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9866,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9865,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2899:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9867,
                    "src": "2891:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9864,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9863,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2891:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2891:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2891:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2890:11:33"
              },
              "src": "2847:55:33"
            },
            {
              "documentation": {
                "id": 9868,
                "nodeType": "StructuredDocumentation",
                "src": "2904:86:33",
                "text": "@notice Thrown when trying to cast an SD59x18 number that doesn't fit in uint128."
              },
              "errorSelector": "90d8f655",
              "id": 9873,
              "name": "PRBMath_SD59x18_IntoUint128_Overflow",
              "nameLocation": "2996:36:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9872,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9871,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3041:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9873,
                    "src": "3033:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9870,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9869,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3033:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3033:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3033:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3032:11:33"
              },
              "src": "2990:54:33"
            },
            {
              "documentation": {
                "id": 9874,
                "nodeType": "StructuredDocumentation",
                "src": "3046:86:33",
                "text": "@notice Thrown when trying to cast an SD59x18 number that doesn't fit in uint128."
              },
              "errorSelector": "34b150df",
              "id": 9879,
              "name": "PRBMath_SD59x18_IntoUint128_Underflow",
              "nameLocation": "3138:37:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9878,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9877,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3184:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9879,
                    "src": "3176:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9876,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9875,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3176:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3176:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3176:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3175:11:33"
              },
              "src": "3132:55:33"
            },
            {
              "documentation": {
                "id": 9880,
                "nodeType": "StructuredDocumentation",
                "src": "3189:86:33",
                "text": "@notice Thrown when trying to cast an SD59x18 number that doesn't fit in uint256."
              },
              "errorSelector": "2463f3d5",
              "id": 9885,
              "name": "PRBMath_SD59x18_IntoUint256_Underflow",
              "nameLocation": "3281:37:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9884,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9883,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3327:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9885,
                    "src": "3319:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9882,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9881,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3319:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3319:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3319:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3318:11:33"
              },
              "src": "3275:55:33"
            },
            {
              "documentation": {
                "id": 9886,
                "nodeType": "StructuredDocumentation",
                "src": "3332:85:33",
                "text": "@notice Thrown when trying to cast an SD59x18 number that doesn't fit in uint40."
              },
              "errorSelector": "eef072ba",
              "id": 9891,
              "name": "PRBMath_SD59x18_IntoUint40_Overflow",
              "nameLocation": "3423:35:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9890,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9889,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3467:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9891,
                    "src": "3459:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9888,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9887,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3459:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3459:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3459:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3458:11:33"
              },
              "src": "3417:53:33"
            },
            {
              "documentation": {
                "id": 9892,
                "nodeType": "StructuredDocumentation",
                "src": "3472:85:33",
                "text": "@notice Thrown when trying to cast an SD59x18 number that doesn't fit in uint40."
              },
              "errorSelector": "bee292d1",
              "id": 9897,
              "name": "PRBMath_SD59x18_IntoUint40_Underflow",
              "nameLocation": "3563:36:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9896,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9895,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3608:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9897,
                    "src": "3600:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9894,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9893,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3600:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3600:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3600:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3599:11:33"
              },
              "src": "3557:54:33"
            },
            {
              "documentation": {
                "id": 9898,
                "nodeType": "StructuredDocumentation",
                "src": "3613:85:33",
                "text": "@notice Thrown when taking the logarithm of a number less than or equal to zero."
              },
              "errorSelector": "059b101b",
              "id": 9903,
              "name": "PRBMath_SD59x18_Log_InputTooSmall",
              "nameLocation": "3704:33:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9902,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9901,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3746:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9903,
                    "src": "3738:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9900,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9899,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3738:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3738:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3738:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3737:11:33"
              },
              "src": "3698:51:33"
            },
            {
              "documentation": {
                "id": 9904,
                "nodeType": "StructuredDocumentation",
                "src": "3751:88:33",
                "text": "@notice Thrown when multiplying two numbers and one of the inputs is `MIN_SD59x18`."
              },
              "errorSelector": "a6070c25",
              "id": 9906,
              "name": "PRBMath_SD59x18_Mul_InputTooSmall",
              "nameLocation": "3845:33:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9905,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "3878:2:33"
              },
              "src": "3839:42:33"
            },
            {
              "documentation": {
                "id": 9907,
                "nodeType": "StructuredDocumentation",
                "src": "3883:104:33",
                "text": "@notice Thrown when multiplying two numbers and the intermediary absolute result overflows SD59x18."
              },
              "errorSelector": "120b5b43",
              "id": 9915,
              "name": "PRBMath_SD59x18_Mul_Overflow",
              "nameLocation": "3993:28:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9914,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9910,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "4030:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9915,
                    "src": "4022:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9909,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9908,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4022:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4022:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4022:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 9913,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "4041:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9915,
                    "src": "4033:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9912,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9911,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4033:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4033:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4033:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4021:22:33"
              },
              "src": "3987:57:33"
            },
            {
              "documentation": {
                "id": 9916,
                "nodeType": "StructuredDocumentation",
                "src": "4046:108:33",
                "text": "@notice Thrown when raising a number to a power and the intermediary absolute result overflows SD59x18."
              },
              "errorSelector": "8f053ff6",
              "id": 9923,
              "name": "PRBMath_SD59x18_Powu_Overflow",
              "nameLocation": "4160:29:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9922,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9919,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "4198:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9923,
                    "src": "4190:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9918,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9917,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4190:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4190:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4190:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 9921,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "4209:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9923,
                    "src": "4201:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 9920,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4201:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4189:22:33"
              },
              "src": "4154:58:33"
            },
            {
              "documentation": {
                "id": 9924,
                "nodeType": "StructuredDocumentation",
                "src": "4214:69:33",
                "text": "@notice Thrown when taking the square root of a negative number."
              },
              "errorSelector": "b9b0f49b",
              "id": 9929,
              "name": "PRBMath_SD59x18_Sqrt_NegativeInput",
              "nameLocation": "4289:34:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9928,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9927,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "4332:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9929,
                    "src": "4324:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9926,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9925,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4324:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4324:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4324:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4323:11:33"
              },
              "src": "4283:52:33"
            },
            {
              "documentation": {
                "id": 9930,
                "nodeType": "StructuredDocumentation",
                "src": "4337:75:33",
                "text": "@notice Thrown when the calculating the square root overflows SD59x18."
              },
              "errorSelector": "063103bf",
              "id": 9935,
              "name": "PRBMath_SD59x18_Sqrt_Overflow",
              "nameLocation": "4418:29:33",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 9934,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9933,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "4456:1:33",
                    "nodeType": "VariableDeclaration",
                    "scope": 9935,
                    "src": "4448:9:33",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9932,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9931,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4448:7:33"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4448:7:33"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4448:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4447:11:33"
              },
              "src": "4412:47:33"
            }
          ],
          "src": "32:4428:33"
        },
        "id": 33
      },
      "@prb/math/src/sd59x18/Helpers.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/sd59x18/Helpers.sol",
          "exportedSymbols": {
            "SD59x18": [
              11699
            ],
            "add": [
              9965
            ],
            "and": [
              9986
            ],
            "and2": [
              10010
            ],
            "eq": [
              10033
            ],
            "gt": [
              10056
            ],
            "gte": [
              10079
            ],
            "isZero": [
              10097
            ],
            "lshift": [
              10120
            ],
            "lt": [
              10143
            ],
            "lte": [
              10166
            ],
            "mod": [
              10192
            ],
            "neq": [
              10215
            ],
            "not": [
              10235
            ],
            "or": [
              10261
            ],
            "rshift": [
              10284
            ],
            "sub": [
              10310
            ],
            "unary": [
              10330
            ],
            "uncheckedAdd": [
              10357
            ],
            "uncheckedSub": [
              10384
            ],
            "uncheckedUnary": [
              10405
            ],
            "wrap": [
              9565
            ],
            "xor": [
              10431
            ]
          },
          "id": 10432,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9937,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:34"
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/Casting.sol",
              "file": "./Casting.sol",
              "id": 9939,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10432,
              "sourceUnit": 9566,
              "src": "59:37:34",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9938,
                    "name": "wrap",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9565,
                    "src": "68:4:34",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 9941,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10432,
              "sourceUnit": 11774,
              "src": "97:42:34",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9940,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "106:7:34",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "body": {
                "id": 9964,
                "nodeType": "Block",
                "src": "285:45:34",
                "statements": [
                  {
                    "expression": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 9955,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9945,
                                "src": "303:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              "id": 9956,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "305:6:34",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9548,
                              "src": "303:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (SD59x18) pure returns (int256)"
                              }
                            },
                            "id": 9957,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "303:10:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 9958,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9948,
                                "src": "316:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              "id": 9959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "318:6:34",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9548,
                              "src": "316:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (SD59x18) pure returns (int256)"
                              }
                            },
                            "id": 9960,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "316:10:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "303:23:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 9954,
                        "name": "wrap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9565,
                        "src": "298:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (int256) pure returns (SD59x18)"
                        }
                      },
                      "id": 9962,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "298:29:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "functionReturnParameters": 9953,
                    "id": 9963,
                    "nodeType": "Return",
                    "src": "291:36:34"
                  }
                ]
              },
              "documentation": {
                "id": 9942,
                "nodeType": "StructuredDocumentation",
                "src": "141:79:34",
                "text": "@notice Implements the checked addition operation (+) in the SD59x18 type."
              },
              "id": 9965,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "add",
              "nameLocation": "229:3:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9949,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9945,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "241:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 9965,
                    "src": "233:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9944,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9943,
                        "name": "SD59x18",
                        "nameLocations": [
                          "233:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "233:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "233:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 9948,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "252:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 9965,
                    "src": "244:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9947,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9946,
                        "name": "SD59x18",
                        "nameLocations": [
                          "244:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "244:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "244:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "232:22:34"
              },
              "returnParameters": {
                "id": 9953,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9952,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "277:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 9965,
                    "src": "269:14:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9951,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9950,
                        "name": "SD59x18",
                        "nameLocations": [
                          "269:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "269:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "269:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "268:16:34"
              },
              "scope": 10432,
              "src": "220:110:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 9985,
                "nodeType": "Block",
                "src": "473:39:34",
                "statements": [
                  {
                    "expression": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 9978,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9969,
                                "src": "491:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              "id": 9979,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "493:6:34",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9548,
                              "src": "491:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (SD59x18) pure returns (int256)"
                              }
                            },
                            "id": 9980,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "491:10:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "id": 9981,
                            "name": "bits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9971,
                            "src": "504:4:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "491:17:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 9977,
                        "name": "wrap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9565,
                        "src": "486:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (int256) pure returns (SD59x18)"
                        }
                      },
                      "id": 9983,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "486:23:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "functionReturnParameters": 9976,
                    "id": 9984,
                    "nodeType": "Return",
                    "src": "479:30:34"
                  }
                ]
              },
              "documentation": {
                "id": 9966,
                "nodeType": "StructuredDocumentation",
                "src": "332:74:34",
                "text": "@notice Implements the AND (&) bitwise operation in the SD59x18 type."
              },
              "id": 9986,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "and",
              "nameLocation": "415:3:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9972,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9969,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "427:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 9986,
                    "src": "419:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9968,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9967,
                        "name": "SD59x18",
                        "nameLocations": [
                          "419:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "419:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "419:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 9971,
                    "mutability": "mutable",
                    "name": "bits",
                    "nameLocation": "437:4:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 9986,
                    "src": "430:11:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "typeName": {
                      "id": 9970,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "430:6:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "418:24:34"
              },
              "returnParameters": {
                "id": 9976,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9975,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "465:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 9986,
                    "src": "457:14:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9974,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9973,
                        "name": "SD59x18",
                        "nameLocations": [
                          "457:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "457:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "457:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "456:16:34"
              },
              "scope": 10432,
              "src": "406:106:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10009,
                "nodeType": "Block",
                "src": "654:45:34",
                "statements": [
                  {
                    "expression": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 10006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 10000,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9990,
                                "src": "672:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              "id": 10001,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "674:6:34",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9548,
                              "src": "672:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (SD59x18) pure returns (int256)"
                              }
                            },
                            "id": 10002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "672:10:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 10003,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9993,
                                "src": "685:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              "id": 10004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "687:6:34",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9548,
                              "src": "685:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (SD59x18) pure returns (int256)"
                              }
                            },
                            "id": 10005,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "685:10:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "672:23:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 9999,
                        "name": "wrap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9565,
                        "src": "667:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (int256) pure returns (SD59x18)"
                        }
                      },
                      "id": 10007,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "667:29:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "functionReturnParameters": 9998,
                    "id": 10008,
                    "nodeType": "Return",
                    "src": "660:36:34"
                  }
                ]
              },
              "documentation": {
                "id": 9987,
                "nodeType": "StructuredDocumentation",
                "src": "514:74:34",
                "text": "@notice Implements the AND (&) bitwise operation in the SD59x18 type."
              },
              "id": 10010,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "and2",
              "nameLocation": "597:4:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 9994,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9990,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "610:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10010,
                    "src": "602:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9989,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9988,
                        "name": "SD59x18",
                        "nameLocations": [
                          "602:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "602:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "602:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 9993,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "621:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10010,
                    "src": "613:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9992,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9991,
                        "name": "SD59x18",
                        "nameLocations": [
                          "613:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "613:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "613:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "601:22:34"
              },
              "returnParameters": {
                "id": 9998,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 9997,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "646:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10010,
                    "src": "638:14:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 9996,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9995,
                        "name": "SD59x18",
                        "nameLocations": [
                          "638:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "638:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "638:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "637:16:34"
              },
              "scope": 10432,
              "src": "588:111:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10032,
                "nodeType": "Block",
                "src": "830:42:34",
                "statements": [
                  {
                    "expression": {
                      "id": 10030,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10022,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10020,
                        "src": "836:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 10029,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10023,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10014,
                              "src": "845:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "id": 10024,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "847:6:34",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9548,
                            "src": "845:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "function (SD59x18) pure returns (int256)"
                            }
                          },
                          "id": 10025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "845:10:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10026,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10017,
                              "src": "859:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "id": 10027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "861:6:34",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9548,
                            "src": "859:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "function (SD59x18) pure returns (int256)"
                            }
                          },
                          "id": 10028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "859:10:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "845:24:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "836:33:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 10031,
                    "nodeType": "ExpressionStatement",
                    "src": "836:33:34"
                  }
                ]
              },
              "documentation": {
                "id": 10011,
                "nodeType": "StructuredDocumentation",
                "src": "701:68:34",
                "text": "@notice Implements the equal (=) operation in the SD59x18 type."
              },
              "id": 10033,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "eq",
              "nameLocation": "778:2:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10018,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10014,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "789:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10033,
                    "src": "781:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10013,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10012,
                        "name": "SD59x18",
                        "nameLocations": [
                          "781:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "781:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "781:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10017,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "800:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10033,
                    "src": "792:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10016,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10015,
                        "name": "SD59x18",
                        "nameLocations": [
                          "792:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "792:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "792:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "780:22:34"
              },
              "returnParameters": {
                "id": 10021,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10020,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "822:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10033,
                    "src": "817:11:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 10019,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "817:4:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "816:13:34"
              },
              "scope": 10432,
              "src": "769:103:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10055,
                "nodeType": "Block",
                "src": "1010:41:34",
                "statements": [
                  {
                    "expression": {
                      "id": 10053,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10045,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10043,
                        "src": "1016:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 10052,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10046,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10037,
                              "src": "1025:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "id": 10047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1027:6:34",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9548,
                            "src": "1025:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "function (SD59x18) pure returns (int256)"
                            }
                          },
                          "id": 10048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1025:10:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10049,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10040,
                              "src": "1038:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "id": 10050,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1040:6:34",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9548,
                            "src": "1038:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "function (SD59x18) pure returns (int256)"
                            }
                          },
                          "id": 10051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1038:10:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "1025:23:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1016:32:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 10054,
                    "nodeType": "ExpressionStatement",
                    "src": "1016:32:34"
                  }
                ]
              },
              "documentation": {
                "id": 10034,
                "nodeType": "StructuredDocumentation",
                "src": "874:75:34",
                "text": "@notice Implements the greater than operation (>) in the SD59x18 type."
              },
              "id": 10056,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "gt",
              "nameLocation": "958:2:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10041,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10037,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "969:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10056,
                    "src": "961:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10036,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10035,
                        "name": "SD59x18",
                        "nameLocations": [
                          "961:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "961:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "961:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10040,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "980:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10056,
                    "src": "972:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10039,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10038,
                        "name": "SD59x18",
                        "nameLocations": [
                          "972:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "972:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "972:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "960:22:34"
              },
              "returnParameters": {
                "id": 10044,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10043,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1002:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10056,
                    "src": "997:11:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 10042,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "997:4:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "996:13:34"
              },
              "scope": 10432,
              "src": "949:102:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10078,
                "nodeType": "Block",
                "src": "1203:42:34",
                "statements": [
                  {
                    "expression": {
                      "id": 10076,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10068,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10066,
                        "src": "1209:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 10075,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10069,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10060,
                              "src": "1218:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "id": 10070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1220:6:34",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9548,
                            "src": "1218:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "function (SD59x18) pure returns (int256)"
                            }
                          },
                          "id": 10071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1218:10:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10072,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10063,
                              "src": "1232:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "id": 10073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1234:6:34",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9548,
                            "src": "1232:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "function (SD59x18) pure returns (int256)"
                            }
                          },
                          "id": 10074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1232:10:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "1218:24:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1209:33:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 10077,
                    "nodeType": "ExpressionStatement",
                    "src": "1209:33:34"
                  }
                ]
              },
              "documentation": {
                "id": 10057,
                "nodeType": "StructuredDocumentation",
                "src": "1053:88:34",
                "text": "@notice Implements the greater than or equal to operation (>=) in the SD59x18 type."
              },
              "id": 10079,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "gte",
              "nameLocation": "1150:3:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10064,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10060,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1162:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10079,
                    "src": "1154:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10059,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10058,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1154:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1154:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1154:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10063,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "1173:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10079,
                    "src": "1165:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10062,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10061,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1165:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1165:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1165:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1153:22:34"
              },
              "returnParameters": {
                "id": 10067,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10066,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1195:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10079,
                    "src": "1190:11:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 10065,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1190:4:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1189:13:34"
              },
              "scope": 10432,
              "src": "1141:104:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10096,
                "nodeType": "Block",
                "src": "1378:33:34",
                "statements": [
                  {
                    "expression": {
                      "id": 10094,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10088,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10086,
                        "src": "1384:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 10093,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10089,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10083,
                              "src": "1393:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "id": 10090,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1395:6:34",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9548,
                            "src": "1393:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "function (SD59x18) pure returns (int256)"
                            }
                          },
                          "id": 10091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1393:10:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 10092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1407:1:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1393:15:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1384:24:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 10095,
                    "nodeType": "ExpressionStatement",
                    "src": "1384:24:34"
                  }
                ]
              },
              "documentation": {
                "id": 10080,
                "nodeType": "StructuredDocumentation",
                "src": "1247:77:34",
                "text": "@notice Implements a zero comparison check function in the SD59x18 type."
              },
              "id": 10097,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "isZero",
              "nameLocation": "1333:6:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10084,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10083,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1348:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10097,
                    "src": "1340:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10082,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10081,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1340:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1340:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1340:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1339:11:34"
              },
              "returnParameters": {
                "id": 10087,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10086,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1370:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10097,
                    "src": "1365:11:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 10085,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1365:4:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1364:13:34"
              },
              "scope": 10432,
              "src": "1324:87:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10119,
                "nodeType": "Block",
                "src": "1558:42:34",
                "statements": [
                  {
                    "expression": {
                      "id": 10117,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10109,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10107,
                        "src": "1564:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 10115,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 10111,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10101,
                                  "src": "1578:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "id": 10112,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1580:6:34",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9548,
                                "src": "1578:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (int256)"
                                }
                              },
                              "id": 10113,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1578:10:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "id": 10114,
                              "name": "bits",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10103,
                              "src": "1592:4:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1578:18:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 10110,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9565,
                          "src": "1573:4:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 10116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1573:24:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "1564:33:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 10118,
                    "nodeType": "ExpressionStatement",
                    "src": "1564:33:34"
                  }
                ]
              },
              "documentation": {
                "id": 10098,
                "nodeType": "StructuredDocumentation",
                "src": "1413:74:34",
                "text": "@notice Implements the left shift operation (<<) in the SD59x18 type."
              },
              "id": 10120,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "lshift",
              "nameLocation": "1496:6:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10104,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10101,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1511:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10120,
                    "src": "1503:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10100,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10099,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1503:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1503:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1503:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10103,
                    "mutability": "mutable",
                    "name": "bits",
                    "nameLocation": "1522:4:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10120,
                    "src": "1514:12:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 10102,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1514:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1502:25:34"
              },
              "returnParameters": {
                "id": 10108,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10107,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1550:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10120,
                    "src": "1542:14:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10106,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10105,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1542:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1542:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1542:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1541:16:34"
              },
              "scope": 10432,
              "src": "1487:113:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10142,
                "nodeType": "Block",
                "src": "1736:41:34",
                "statements": [
                  {
                    "expression": {
                      "id": 10140,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10132,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10130,
                        "src": "1742:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 10139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10133,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10124,
                              "src": "1751:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "id": 10134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1753:6:34",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9548,
                            "src": "1751:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "function (SD59x18) pure returns (int256)"
                            }
                          },
                          "id": 10135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1751:10:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10136,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10127,
                              "src": "1764:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "id": 10137,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1766:6:34",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9548,
                            "src": "1764:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "function (SD59x18) pure returns (int256)"
                            }
                          },
                          "id": 10138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1764:10:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "1751:23:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1742:32:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 10141,
                    "nodeType": "ExpressionStatement",
                    "src": "1742:32:34"
                  }
                ]
              },
              "documentation": {
                "id": 10121,
                "nodeType": "StructuredDocumentation",
                "src": "1602:73:34",
                "text": "@notice Implements the lower than operation (<) in the SD59x18 type."
              },
              "id": 10143,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "lt",
              "nameLocation": "1684:2:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10128,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10124,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1695:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10143,
                    "src": "1687:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10123,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10122,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1687:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1687:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1687:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10127,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "1706:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10143,
                    "src": "1698:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10126,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10125,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1698:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1698:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1698:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1686:22:34"
              },
              "returnParameters": {
                "id": 10131,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10130,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1728:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10143,
                    "src": "1723:11:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 10129,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1723:4:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1722:13:34"
              },
              "scope": 10432,
              "src": "1675:102:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10165,
                "nodeType": "Block",
                "src": "1927:42:34",
                "statements": [
                  {
                    "expression": {
                      "id": 10163,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10155,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10153,
                        "src": "1933:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 10162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10156,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10147,
                              "src": "1942:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "id": 10157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1944:6:34",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9548,
                            "src": "1942:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "function (SD59x18) pure returns (int256)"
                            }
                          },
                          "id": 10158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1942:10:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10159,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10150,
                              "src": "1956:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "id": 10160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1958:6:34",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9548,
                            "src": "1956:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "function (SD59x18) pure returns (int256)"
                            }
                          },
                          "id": 10161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1956:10:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "1942:24:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1933:33:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 10164,
                    "nodeType": "ExpressionStatement",
                    "src": "1933:33:34"
                  }
                ]
              },
              "documentation": {
                "id": 10144,
                "nodeType": "StructuredDocumentation",
                "src": "1779:86:34",
                "text": "@notice Implements the lower than or equal to operation (<=) in the SD59x18 type."
              },
              "id": 10166,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "lte",
              "nameLocation": "1874:3:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10151,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10147,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1886:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10166,
                    "src": "1878:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10146,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10145,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1878:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1878:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1878:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10150,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "1897:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10166,
                    "src": "1889:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10149,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10148,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1889:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1889:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1889:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1877:22:34"
              },
              "returnParameters": {
                "id": 10154,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10153,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1919:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10166,
                    "src": "1914:11:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 10152,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1914:4:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1913:13:34"
              },
              "scope": 10432,
              "src": "1865:104:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10191,
                "nodeType": "Block",
                "src": "2115:47:34",
                "statements": [
                  {
                    "expression": {
                      "id": 10189,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10179,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10177,
                        "src": "2121:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 10187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 10181,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10170,
                                  "src": "2135:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "id": 10182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2137:6:34",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9548,
                                "src": "2135:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (int256)"
                                }
                              },
                              "id": 10183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2135:10:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 10184,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10173,
                                  "src": "2148:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "id": 10185,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2150:6:34",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9548,
                                "src": "2148:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (int256)"
                                }
                              },
                              "id": 10186,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2148:10:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "2135:23:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 10180,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9565,
                          "src": "2130:4:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 10188,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2130:29:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "2121:38:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 10190,
                    "nodeType": "ExpressionStatement",
                    "src": "2121:38:34"
                  }
                ]
              },
              "documentation": {
                "id": 10167,
                "nodeType": "StructuredDocumentation",
                "src": "1971:79:34",
                "text": "@notice Implements the unchecked modulo operation (%) in the SD59x18 type."
              },
              "id": 10192,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "mod",
              "nameLocation": "2059:3:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10174,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10170,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2071:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10192,
                    "src": "2063:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10169,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10168,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2063:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2063:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2063:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10173,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "2082:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10192,
                    "src": "2074:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10172,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10171,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2074:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2074:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2074:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2062:22:34"
              },
              "returnParameters": {
                "id": 10178,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10177,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2107:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10192,
                    "src": "2099:14:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10176,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10175,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2099:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2099:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2099:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2098:16:34"
              },
              "scope": 10432,
              "src": "2050:112:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10214,
                "nodeType": "Block",
                "src": "2299:42:34",
                "statements": [
                  {
                    "expression": {
                      "id": 10212,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10204,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10202,
                        "src": "2305:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 10211,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10205,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10196,
                              "src": "2314:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "id": 10206,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2316:6:34",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9548,
                            "src": "2314:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "function (SD59x18) pure returns (int256)"
                            }
                          },
                          "id": 10207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2314:10:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10208,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10199,
                              "src": "2328:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "id": 10209,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2330:6:34",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9548,
                            "src": "2328:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "function (SD59x18) pure returns (int256)"
                            }
                          },
                          "id": 10210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2328:10:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "2314:24:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "2305:33:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 10213,
                    "nodeType": "ExpressionStatement",
                    "src": "2305:33:34"
                  }
                ]
              },
              "documentation": {
                "id": 10193,
                "nodeType": "StructuredDocumentation",
                "src": "2164:73:34",
                "text": "@notice Implements the not equal operation (!=) in the SD59x18 type."
              },
              "id": 10215,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "neq",
              "nameLocation": "2246:3:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10200,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10196,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2258:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10215,
                    "src": "2250:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10195,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10194,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2250:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2250:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2250:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10199,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "2269:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10215,
                    "src": "2261:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10198,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10197,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2261:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2261:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2261:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2249:22:34"
              },
              "returnParameters": {
                "id": 10203,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10202,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2291:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10215,
                    "src": "2286:11:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 10201,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2286:4:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2285:13:34"
              },
              "scope": 10432,
              "src": "2237:104:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10234,
                "nodeType": "Block",
                "src": "2471:35:34",
                "statements": [
                  {
                    "expression": {
                      "id": 10232,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10225,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10223,
                        "src": "2477:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 10230,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "~",
                            "prefix": true,
                            "src": "2491:11:34",
                            "subExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 10227,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10219,
                                  "src": "2492:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "id": 10228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2494:6:34",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9548,
                                "src": "2492:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (int256)"
                                }
                              },
                              "id": 10229,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2492:10:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 10226,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9565,
                          "src": "2486:4:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 10231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2486:17:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "2477:26:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 10233,
                    "nodeType": "ExpressionStatement",
                    "src": "2477:26:34"
                  }
                ]
              },
              "documentation": {
                "id": 10216,
                "nodeType": "StructuredDocumentation",
                "src": "2343:74:34",
                "text": "@notice Implements the NOT (~) bitwise operation in the SD59x18 type."
              },
              "id": 10235,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "not",
              "nameLocation": "2426:3:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10220,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10219,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2438:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10235,
                    "src": "2430:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10218,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10217,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2430:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2430:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2430:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2429:11:34"
              },
              "returnParameters": {
                "id": 10224,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10223,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2463:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10235,
                    "src": "2455:14:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10222,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10221,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2455:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2455:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2455:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2454:16:34"
              },
              "scope": 10432,
              "src": "2417:89:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10260,
                "nodeType": "Block",
                "src": "2645:47:34",
                "statements": [
                  {
                    "expression": {
                      "id": 10258,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10248,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10246,
                        "src": "2651:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 10256,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 10250,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10239,
                                  "src": "2665:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "id": 10251,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2667:6:34",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9548,
                                "src": "2665:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (int256)"
                                }
                              },
                              "id": 10252,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2665:10:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 10253,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10242,
                                  "src": "2678:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "id": 10254,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2680:6:34",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9548,
                                "src": "2678:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (int256)"
                                }
                              },
                              "id": 10255,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2678:10:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "2665:23:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 10249,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9565,
                          "src": "2660:4:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 10257,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2660:29:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "2651:38:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 10259,
                    "nodeType": "ExpressionStatement",
                    "src": "2651:38:34"
                  }
                ]
              },
              "documentation": {
                "id": 10236,
                "nodeType": "StructuredDocumentation",
                "src": "2508:73:34",
                "text": "@notice Implements the OR (|) bitwise operation in the SD59x18 type."
              },
              "id": 10261,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "or",
              "nameLocation": "2590:2:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10243,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10239,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2601:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10261,
                    "src": "2593:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10238,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10237,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2593:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2593:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2593:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10242,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "2612:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10261,
                    "src": "2604:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10241,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10240,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2604:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2604:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2604:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2592:22:34"
              },
              "returnParameters": {
                "id": 10247,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10246,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2637:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10261,
                    "src": "2629:14:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10245,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10244,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2629:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2629:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2629:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2628:16:34"
              },
              "scope": 10432,
              "src": "2581:111:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10283,
                "nodeType": "Block",
                "src": "2840:42:34",
                "statements": [
                  {
                    "expression": {
                      "id": 10281,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10273,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10271,
                        "src": "2846:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 10279,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 10275,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10265,
                                  "src": "2860:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "id": 10276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2862:6:34",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9548,
                                "src": "2860:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (int256)"
                                }
                              },
                              "id": 10277,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2860:10:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "id": 10278,
                              "name": "bits",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10267,
                              "src": "2874:4:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2860:18:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 10274,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9565,
                          "src": "2855:4:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 10280,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2855:24:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "2846:33:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 10282,
                    "nodeType": "ExpressionStatement",
                    "src": "2846:33:34"
                  }
                ]
              },
              "documentation": {
                "id": 10262,
                "nodeType": "StructuredDocumentation",
                "src": "2694:75:34",
                "text": "@notice Implements the right shift operation (>>) in the SD59x18 type."
              },
              "id": 10284,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "rshift",
              "nameLocation": "2778:6:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10268,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10265,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2793:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10284,
                    "src": "2785:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10264,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10263,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2785:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2785:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2785:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10267,
                    "mutability": "mutable",
                    "name": "bits",
                    "nameLocation": "2804:4:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10284,
                    "src": "2796:12:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 10266,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2796:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2784:25:34"
              },
              "returnParameters": {
                "id": 10272,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10271,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2832:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10284,
                    "src": "2824:14:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10270,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10269,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2824:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2824:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2824:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2823:16:34"
              },
              "scope": 10432,
              "src": "2769:113:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10309,
                "nodeType": "Block",
                "src": "3031:47:34",
                "statements": [
                  {
                    "expression": {
                      "id": 10307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10297,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10295,
                        "src": "3037:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 10305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 10299,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10288,
                                  "src": "3051:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "id": 10300,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3053:6:34",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9548,
                                "src": "3051:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (int256)"
                                }
                              },
                              "id": 10301,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3051:10:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 10302,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10291,
                                  "src": "3064:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "id": 10303,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3066:6:34",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9548,
                                "src": "3064:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (int256)"
                                }
                              },
                              "id": 10304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3064:10:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "3051:23:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 10298,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9565,
                          "src": "3046:4:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 10306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3046:29:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "3037:38:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 10308,
                    "nodeType": "ExpressionStatement",
                    "src": "3037:38:34"
                  }
                ]
              },
              "documentation": {
                "id": 10285,
                "nodeType": "StructuredDocumentation",
                "src": "2884:82:34",
                "text": "@notice Implements the checked subtraction operation (-) in the SD59x18 type."
              },
              "id": 10310,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "sub",
              "nameLocation": "2975:3:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10292,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10288,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2987:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10310,
                    "src": "2979:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10287,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10286,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2979:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2979:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2979:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10291,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "2998:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10310,
                    "src": "2990:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10290,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10289,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2990:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2990:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2990:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2978:22:34"
              },
              "returnParameters": {
                "id": 10296,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10295,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3023:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10310,
                    "src": "3015:14:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10294,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10293,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3015:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3015:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3015:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3014:16:34"
              },
              "scope": 10432,
              "src": "2966:112:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10329,
                "nodeType": "Block",
                "src": "3218:35:34",
                "statements": [
                  {
                    "expression": {
                      "id": 10327,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10320,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10318,
                        "src": "3224:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 10325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "3238:11:34",
                            "subExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 10322,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10314,
                                  "src": "3239:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "id": 10323,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3241:6:34",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9548,
                                "src": "3239:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (int256)"
                                }
                              },
                              "id": 10324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3239:10:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 10321,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9565,
                          "src": "3233:4:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 10326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3233:17:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "3224:26:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 10328,
                    "nodeType": "ExpressionStatement",
                    "src": "3224:26:34"
                  }
                ]
              },
              "documentation": {
                "id": 10311,
                "nodeType": "StructuredDocumentation",
                "src": "3080:82:34",
                "text": "@notice Implements the checked unary minus operation (-) in the SD59x18 type."
              },
              "id": 10330,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "unary",
              "nameLocation": "3171:5:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10315,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10314,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3185:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10330,
                    "src": "3177:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10313,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10312,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3177:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3177:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3177:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3176:11:34"
              },
              "returnParameters": {
                "id": 10319,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10318,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3210:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10330,
                    "src": "3202:14:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10317,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10316,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3202:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3202:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3202:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3201:16:34"
              },
              "scope": 10432,
              "src": "3162:91:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10356,
                "nodeType": "Block",
                "src": "3410:73:34",
                "statements": [
                  {
                    "id": 10355,
                    "nodeType": "UncheckedBlock",
                    "src": "3416:65:34",
                    "statements": [
                      {
                        "expression": {
                          "id": 10353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10343,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10341,
                            "src": "3436:6:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 10351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 10345,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10334,
                                      "src": "3450:1:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                        "typeString": "SD59x18"
                                      }
                                    },
                                    "id": 10346,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3452:6:34",
                                    "memberName": "unwrap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9548,
                                    "src": "3450:8:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                      "typeString": "function (SD59x18) pure returns (int256)"
                                    }
                                  },
                                  "id": 10347,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3450:10:34",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 10348,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10337,
                                      "src": "3463:1:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                        "typeString": "SD59x18"
                                      }
                                    },
                                    "id": 10349,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3465:6:34",
                                    "memberName": "unwrap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9548,
                                    "src": "3463:8:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                      "typeString": "function (SD59x18) pure returns (int256)"
                                    }
                                  },
                                  "id": 10350,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3463:10:34",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "3450:23:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 10344,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9565,
                              "src": "3445:4:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (int256) pure returns (SD59x18)"
                              }
                            },
                            "id": 10352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3445:29:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "src": "3436:38:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10354,
                        "nodeType": "ExpressionStatement",
                        "src": "3436:38:34"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 10331,
                "nodeType": "StructuredDocumentation",
                "src": "3255:81:34",
                "text": "@notice Implements the unchecked addition operation (+) in the SD59x18 type."
              },
              "id": 10357,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "uncheckedAdd",
              "nameLocation": "3345:12:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10338,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10334,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3366:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10357,
                    "src": "3358:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10333,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10332,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3358:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3358:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3358:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10337,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "3377:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10357,
                    "src": "3369:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10336,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10335,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3369:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3369:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3369:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3357:22:34"
              },
              "returnParameters": {
                "id": 10342,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10341,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3402:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10357,
                    "src": "3394:14:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10340,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10339,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3394:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3394:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3394:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3393:16:34"
              },
              "scope": 10432,
              "src": "3336:147:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10383,
                "nodeType": "Block",
                "src": "3643:73:34",
                "statements": [
                  {
                    "id": 10382,
                    "nodeType": "UncheckedBlock",
                    "src": "3649:65:34",
                    "statements": [
                      {
                        "expression": {
                          "id": 10380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10370,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10368,
                            "src": "3669:6:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 10378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 10372,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10361,
                                      "src": "3683:1:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                        "typeString": "SD59x18"
                                      }
                                    },
                                    "id": 10373,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3685:6:34",
                                    "memberName": "unwrap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9548,
                                    "src": "3683:8:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                      "typeString": "function (SD59x18) pure returns (int256)"
                                    }
                                  },
                                  "id": 10374,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3683:10:34",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 10375,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10364,
                                      "src": "3696:1:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                        "typeString": "SD59x18"
                                      }
                                    },
                                    "id": 10376,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3698:6:34",
                                    "memberName": "unwrap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9548,
                                    "src": "3696:8:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                      "typeString": "function (SD59x18) pure returns (int256)"
                                    }
                                  },
                                  "id": 10377,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3696:10:34",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "3683:23:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 10371,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9565,
                              "src": "3678:4:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (int256) pure returns (SD59x18)"
                              }
                            },
                            "id": 10379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3678:29:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "src": "3669:38:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10381,
                        "nodeType": "ExpressionStatement",
                        "src": "3669:38:34"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 10358,
                "nodeType": "StructuredDocumentation",
                "src": "3485:84:34",
                "text": "@notice Implements the unchecked subtraction operation (-) in the SD59x18 type."
              },
              "id": 10384,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "uncheckedSub",
              "nameLocation": "3578:12:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10365,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10361,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3599:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10384,
                    "src": "3591:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10360,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10359,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3591:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3591:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3591:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10364,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "3610:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10384,
                    "src": "3602:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10363,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10362,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3602:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3602:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3602:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3590:22:34"
              },
              "returnParameters": {
                "id": 10369,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10368,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3635:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10384,
                    "src": "3627:14:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10367,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10366,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3627:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3627:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3627:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3626:16:34"
              },
              "scope": 10432,
              "src": "3569:147:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10404,
                "nodeType": "Block",
                "src": "3867:61:34",
                "statements": [
                  {
                    "id": 10403,
                    "nodeType": "UncheckedBlock",
                    "src": "3873:53:34",
                    "statements": [
                      {
                        "expression": {
                          "id": 10401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10394,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10392,
                            "src": "3893:6:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 10399,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "3907:11:34",
                                "subExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 10396,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10388,
                                      "src": "3908:1:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                        "typeString": "SD59x18"
                                      }
                                    },
                                    "id": 10397,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3910:6:34",
                                    "memberName": "unwrap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9548,
                                    "src": "3908:8:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                      "typeString": "function (SD59x18) pure returns (int256)"
                                    }
                                  },
                                  "id": 10398,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3908:10:34",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 10395,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9565,
                              "src": "3902:4:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (int256) pure returns (SD59x18)"
                              }
                            },
                            "id": 10400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3902:17:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "src": "3893:26:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10402,
                        "nodeType": "ExpressionStatement",
                        "src": "3893:26:34"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 10385,
                "nodeType": "StructuredDocumentation",
                "src": "3718:84:34",
                "text": "@notice Implements the unchecked unary minus operation (-) in the SD59x18 type."
              },
              "id": 10405,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "uncheckedUnary",
              "nameLocation": "3811:14:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10389,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10388,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3834:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10405,
                    "src": "3826:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10387,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10386,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3826:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3826:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3826:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3825:11:34"
              },
              "returnParameters": {
                "id": 10393,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10392,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3859:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10405,
                    "src": "3851:14:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10391,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10390,
                        "name": "SD59x18",
                        "nameLocations": [
                          "3851:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "3851:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "3851:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3850:16:34"
              },
              "scope": 10432,
              "src": "3802:126:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10430,
                "nodeType": "Block",
                "src": "4069:47:34",
                "statements": [
                  {
                    "expression": {
                      "id": 10428,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10418,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10416,
                        "src": "4075:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 10426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 10420,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10409,
                                  "src": "4089:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "id": 10421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4091:6:34",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9548,
                                "src": "4089:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (int256)"
                                }
                              },
                              "id": 10422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4089:10:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "^",
                            "rightExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 10423,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10412,
                                  "src": "4102:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "id": 10424,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4104:6:34",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9548,
                                "src": "4102:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (int256)"
                                }
                              },
                              "id": 10425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4102:10:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "4089:23:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 10419,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9565,
                          "src": "4084:4:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 10427,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4084:29:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "4075:38:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 10429,
                    "nodeType": "ExpressionStatement",
                    "src": "4075:38:34"
                  }
                ]
              },
              "documentation": {
                "id": 10406,
                "nodeType": "StructuredDocumentation",
                "src": "3930:74:34",
                "text": "@notice Implements the XOR (^) bitwise operation in the SD59x18 type."
              },
              "id": 10431,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "xor",
              "nameLocation": "4013:3:34",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10413,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10409,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "4025:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10431,
                    "src": "4017:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10408,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10407,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4017:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4017:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4017:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10412,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "4036:1:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10431,
                    "src": "4028:9:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10411,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10410,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4028:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4028:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4028:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4016:22:34"
              },
              "returnParameters": {
                "id": 10417,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10416,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "4061:6:34",
                    "nodeType": "VariableDeclaration",
                    "scope": 10431,
                    "src": "4053:14:34",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10415,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10414,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4053:7:34"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4053:7:34"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4053:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4052:16:34"
              },
              "scope": 10432,
              "src": "4004:112:34",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            }
          ],
          "src": "32:4085:34"
        },
        "id": 34
      },
      "@prb/math/src/sd59x18/Math.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/sd59x18/Math.sol",
          "exportedSymbols": {
            "Common": [
              10434
            ],
            "Errors": [
              10435
            ],
            "SD59x18": [
              11699
            ],
            "UNIT": [
              9723
            ],
            "ZERO": [
              9742
            ],
            "abs": [
              10494
            ],
            "avg": [
              10553
            ],
            "ceil": [
              10619
            ],
            "div": [
              10752
            ],
            "exp": [
              10804
            ],
            "exp2": [
              10886
            ],
            "floor": [
              10952
            ],
            "frac": [
              10973
            ],
            "gm": [
              11062
            ],
            "inv": [
              11083
            ],
            "ln": [
              11108
            ],
            "log10": [
              11159
            ],
            "log2": [
              11301
            ],
            "mul": [
              11430
            ],
            "pow": [
              11500
            ],
            "powu": [
              11629
            ],
            "sqrt": [
              11692
            ],
            "uEXP2_MAX_INPUT": [
              9606
            ],
            "uEXP2_MIN_THRESHOLD": [
              9618
            ],
            "uEXP_MAX_INPUT": [
              9581
            ],
            "uEXP_MIN_THRESHOLD": [
              9593
            ],
            "uHALF_UNIT": [
              9629
            ],
            "uLOG2_10": [
              9640
            ],
            "uLOG2_E": [
              9651
            ],
            "uMAX_SD59x18": [
              9662
            ],
            "uMAX_WHOLE_SD59x18": [
              9673
            ],
            "uMIN_SD59x18": [
              9685
            ],
            "uMIN_WHOLE_SD59x18": [
              9697
            ],
            "uUNIT": [
              9716
            ],
            "uUNIT_SQUARED": [
              9727
            ],
            "wrap": [
              9565
            ]
          },
          "id": 11693,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10433,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:35"
            },
            {
              "absolutePath": "@prb/math/src/Common.sol",
              "file": "../Common.sol",
              "id": 10434,
              "nameLocation": "85:6:35",
              "nodeType": "ImportDirective",
              "scope": 11693,
              "sourceUnit": 8329,
              "src": "59:33:35",
              "symbolAliases": [],
              "unitAlias": "Common"
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/Errors.sol",
              "file": "./Errors.sol",
              "id": 10435,
              "nameLocation": "118:6:35",
              "nodeType": "ImportDirective",
              "scope": 11693,
              "sourceUnit": 9936,
              "src": "93:32:35",
              "symbolAliases": [],
              "unitAlias": "Errors"
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/Constants.sol",
              "file": "./Constants.sol",
              "id": 10451,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11693,
              "sourceUnit": 9743,
              "src": "126:300:35",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10436,
                    "name": "uEXP_MAX_INPUT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9581,
                    "src": "139:14:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 10437,
                    "name": "uEXP2_MAX_INPUT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9606,
                    "src": "159:15:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 10438,
                    "name": "uEXP_MIN_THRESHOLD",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9593,
                    "src": "180:18:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 10439,
                    "name": "uEXP2_MIN_THRESHOLD",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9618,
                    "src": "204:19:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 10440,
                    "name": "uHALF_UNIT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9629,
                    "src": "229:10:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 10441,
                    "name": "uLOG2_10",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9640,
                    "src": "245:8:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 10442,
                    "name": "uLOG2_E",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9651,
                    "src": "259:7:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 10443,
                    "name": "uMAX_SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9662,
                    "src": "272:12:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 10444,
                    "name": "uMAX_WHOLE_SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9673,
                    "src": "290:18:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 10445,
                    "name": "uMIN_SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9685,
                    "src": "314:12:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 10446,
                    "name": "uMIN_WHOLE_SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9697,
                    "src": "332:18:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 10447,
                    "name": "UNIT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9723,
                    "src": "356:4:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 10448,
                    "name": "uUNIT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9716,
                    "src": "366:5:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 10449,
                    "name": "uUNIT_SQUARED",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9727,
                    "src": "377:13:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 10450,
                    "name": "ZERO",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9742,
                    "src": "396:4:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/Helpers.sol",
              "file": "./Helpers.sol",
              "id": 10453,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11693,
              "sourceUnit": 10432,
              "src": "427:37:35",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10452,
                    "name": "wrap",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9565,
                    "src": "436:4:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 10455,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11693,
              "sourceUnit": 11774,
              "src": "465:42:35",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 10454,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "474:7:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "body": {
                "id": 10493,
                "nodeType": "Block",
                "src": "853:168:35",
                "statements": [
                  {
                    "assignments": [
                      10466
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10466,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "866:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 10493,
                        "src": "859:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 10465,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "859:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10470,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 10467,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10459,
                          "src": "873:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10468,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "875:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "873:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 10469,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "873:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "859:24:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 10473,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 10471,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10466,
                        "src": "893:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "id": 10472,
                        "name": "uMIN_SD59x18",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9685,
                        "src": "901:12:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "893:20:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 10480,
                    "nodeType": "IfStatement",
                    "src": "889:89:35",
                    "trueBody": {
                      "id": 10479,
                      "nodeType": "Block",
                      "src": "915:63:35",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 10474,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10435,
                                "src": "932:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 10476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "939:30:35",
                              "memberName": "PRBMath_SD59x18_Abs_MinSD59x18",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9749,
                              "src": "932:37:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 10477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "932:39:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 10478,
                          "nodeType": "RevertStatement",
                          "src": "925:46:35"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 10491,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10481,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10463,
                        "src": "983:6:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 10484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10482,
                            "name": "xInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10466,
                            "src": "992:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 10483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "999:1:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "992:8:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "id": 10489,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10459,
                          "src": "1017:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10490,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "992:26:35",
                        "trueExpression": {
                          "arguments": [
                            {
                              "id": 10487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "1008:5:35",
                              "subExpression": {
                                "id": 10486,
                                "name": "xInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10466,
                                "src": "1009:4:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 10485,
                            "name": "wrap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9565,
                            "src": "1003:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "function (int256) pure returns (SD59x18)"
                            }
                          },
                          "id": 10488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1003:11:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "983:35:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 10492,
                    "nodeType": "ExpressionStatement",
                    "src": "983:35:35"
                  }
                ]
              },
              "documentation": {
                "id": 10456,
                "nodeType": "StructuredDocumentation",
                "src": "509:290:35",
                "text": "@notice Calculates the absolute value of x.\n @dev Requirements:\n - x > MIN_SD59x18.\n @param x The SD59x18 number for which to calculate the absolute value.\n @return result The absolute value of x as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 10494,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "abs",
              "nameLocation": "808:3:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10460,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10459,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "820:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10494,
                    "src": "812:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10458,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10457,
                        "name": "SD59x18",
                        "nameLocations": [
                          "812:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "812:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "812:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "811:11:35"
              },
              "returnParameters": {
                "id": 10464,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10463,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "845:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10494,
                    "src": "837:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10462,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10461,
                        "name": "SD59x18",
                        "nameLocations": [
                          "837:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "837:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "837:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "836:16:35"
              },
              "scope": 11693,
              "src": "799:222:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10552,
                "nodeType": "Block",
                "src": "1430:782:35",
                "statements": [
                  {
                    "assignments": [
                      10508
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10508,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "1443:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 10552,
                        "src": "1436:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 10507,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1436:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10512,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 10509,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10498,
                          "src": "1450:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10510,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1452:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "1450:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 10511,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1450:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1436:24:35"
                  },
                  {
                    "assignments": [
                      10514
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10514,
                        "mutability": "mutable",
                        "name": "yInt",
                        "nameLocation": "1473:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 10552,
                        "src": "1466:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 10513,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1466:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10518,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 10515,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10501,
                          "src": "1480:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10516,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1482:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "1480:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 10517,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1480:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1466:24:35"
                  },
                  {
                    "id": 10551,
                    "nodeType": "UncheckedBlock",
                    "src": "1497:713:35",
                    "statements": [
                      {
                        "assignments": [
                          10520
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10520,
                            "mutability": "mutable",
                            "name": "sum",
                            "nameLocation": "1612:3:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 10551,
                            "src": "1605:10:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 10519,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1605:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10530,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 10529,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 10523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 10521,
                                  "name": "xInt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10508,
                                  "src": "1619:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 10522,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1627:1:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "1619:9:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 10524,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1618:11:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 10527,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 10525,
                                  "name": "yInt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10514,
                                  "src": "1633:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 10526,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1641:1:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "1633:9:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 10528,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1632:11:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "1618:25:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1605:38:35"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 10533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10531,
                            "name": "sum",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10520,
                            "src": "1658:3:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 10532,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1664:1:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1658:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 10549,
                          "nodeType": "Block",
                          "src": "2030:174:35",
                          "statements": [
                            {
                              "expression": {
                                "id": 10547,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10536,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10505,
                                  "src": "2155:6:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 10545,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 10538,
                                        "name": "sum",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10520,
                                        "src": "2169:3:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            },
                                            "id": 10543,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              },
                                              "id": 10541,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 10539,
                                                "name": "xInt",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10508,
                                                "src": "2176:4:35",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "&",
                                              "rightExpression": {
                                                "id": 10540,
                                                "name": "yInt",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10514,
                                                "src": "2183:4:35",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              },
                                              "src": "2176:11:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "hexValue": "31",
                                              "id": 10542,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "2190:1:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "2176:15:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          }
                                        ],
                                        "id": 10544,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "2175:17:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2169:23:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "id": 10537,
                                    "name": "wrap",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9565,
                                    "src": "2164:4:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                      "typeString": "function (int256) pure returns (SD59x18)"
                                    }
                                  },
                                  "id": 10546,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2164:29:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "src": "2155:38:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              "id": 10548,
                              "nodeType": "ExpressionStatement",
                              "src": "2155:38:35"
                            }
                          ]
                        },
                        "id": 10550,
                        "nodeType": "IfStatement",
                        "src": "1654:550:35",
                        "trueBody": {
                          "id": 10535,
                          "nodeType": "Block",
                          "src": "1667:357:35",
                          "statements": [
                            {
                              "AST": {
                                "nativeSrc": "1940:74:35",
                                "nodeType": "YulBlock",
                                "src": "1940:74:35",
                                "statements": [
                                  {
                                    "nativeSrc": "1958:42:35",
                                    "nodeType": "YulAssignment",
                                    "src": "1958:42:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "sum",
                                          "nativeSrc": "1972:3:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "1972:3:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "xInt",
                                                  "nativeSrc": "1984:4:35",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1984:4:35"
                                                },
                                                {
                                                  "name": "yInt",
                                                  "nativeSrc": "1990:4:35",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1990:4:35"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "or",
                                                "nativeSrc": "1981:2:35",
                                                "nodeType": "YulIdentifier",
                                                "src": "1981:2:35"
                                              },
                                              "nativeSrc": "1981:14:35",
                                              "nodeType": "YulFunctionCall",
                                              "src": "1981:14:35"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "1997:1:35",
                                              "nodeType": "YulLiteral",
                                              "src": "1997:1:35",
                                              "type": "",
                                              "value": "1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nativeSrc": "1977:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "1977:3:35"
                                          },
                                          "nativeSrc": "1977:22:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "1977:22:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nativeSrc": "1968:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "1968:3:35"
                                      },
                                      "nativeSrc": "1968:32:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "1968:32:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "1958:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "1958:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "evmVersion": "paris",
                              "externalReferences": [
                                {
                                  "declaration": 10505,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "1958:6:35",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 10520,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "1972:3:35",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 10508,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "1984:4:35",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 10514,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "1990:4:35",
                                  "valueSize": 1
                                }
                              ],
                              "flags": [
                                "memory-safe"
                              ],
                              "id": 10534,
                              "nodeType": "InlineAssembly",
                              "src": "1915:99:35"
                            }
                          ]
                        }
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 10495,
                "nodeType": "StructuredDocumentation",
                "src": "1023:342:35",
                "text": "@notice Calculates the arithmetic average of x and y.\n @dev Notes:\n - The result is rounded toward zero.\n @param x The first operand as an SD59x18 number.\n @param y The second operand as an SD59x18 number.\n @return result The arithmetic average as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 10553,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "avg",
              "nameLocation": "1374:3:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10502,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10498,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1386:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10553,
                    "src": "1378:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10497,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10496,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1378:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1378:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1378:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10501,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "1397:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10553,
                    "src": "1389:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10500,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10499,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1389:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1389:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1389:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1377:22:35"
              },
              "returnParameters": {
                "id": 10506,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10505,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1422:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10553,
                    "src": "1414:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10504,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10503,
                        "name": "SD59x18",
                        "nameLocations": [
                          "1414:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "1414:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "1414:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1413:16:35"
              },
              "scope": 11693,
              "src": "1365:847:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10618,
                "nodeType": "Block",
                "src": "2767:522:35",
                "statements": [
                  {
                    "assignments": [
                      10564
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10564,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "2780:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 10618,
                        "src": "2773:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 10563,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2773:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10568,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 10565,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10557,
                          "src": "2787:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10566,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2789:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "2787:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 10567,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2787:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2773:24:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 10571,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 10569,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10564,
                        "src": "2807:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 10570,
                        "name": "uMAX_WHOLE_SD59x18",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9673,
                        "src": "2814:18:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "2807:25:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 10579,
                    "nodeType": "IfStatement",
                    "src": "2803:94:35",
                    "trueBody": {
                      "id": 10578,
                      "nodeType": "Block",
                      "src": "2834:63:35",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 10575,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10557,
                                "src": "2888:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 10572,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10435,
                                "src": "2851:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 10574,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2858:29:35",
                              "memberName": "PRBMath_SD59x18_Ceil_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9755,
                              "src": "2851:36:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 10576,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2851:39:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 10577,
                          "nodeType": "RevertStatement",
                          "src": "2844:46:35"
                        }
                      ]
                    }
                  },
                  {
                    "assignments": [
                      10581
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10581,
                        "mutability": "mutable",
                        "name": "remainder",
                        "nameLocation": "2910:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 10618,
                        "src": "2903:16:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 10580,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2903:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10585,
                    "initialValue": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 10584,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 10582,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10564,
                        "src": "2922:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "%",
                      "rightExpression": {
                        "id": 10583,
                        "name": "uUNIT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9716,
                        "src": "2929:5:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "2922:12:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2903:31:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 10588,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 10586,
                        "name": "remainder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10581,
                        "src": "2944:9:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 10587,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2957:1:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "2944:14:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 10616,
                      "nodeType": "Block",
                      "src": "2993:294:35",
                      "statements": [
                        {
                          "id": 10615,
                          "nodeType": "UncheckedBlock",
                          "src": "3003:278:35",
                          "statements": [
                            {
                              "assignments": [
                                10595
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10595,
                                  "mutability": "mutable",
                                  "name": "resultInt",
                                  "nameLocation": "3126:9:35",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 10615,
                                  "src": "3119:16:35",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "typeName": {
                                    "id": 10594,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3119:6:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 10599,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 10598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 10596,
                                  "name": "xInt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10564,
                                  "src": "3138:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 10597,
                                  "name": "remainder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10581,
                                  "src": "3145:9:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "3138:16:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3119:35:35"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 10602,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 10600,
                                  "name": "xInt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10564,
                                  "src": "3172:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 10601,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3179:1:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3172:8:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 10608,
                              "nodeType": "IfStatement",
                              "src": "3168:65:35",
                              "trueBody": {
                                "id": 10607,
                                "nodeType": "Block",
                                "src": "3182:51:35",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 10605,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 10603,
                                        "name": "resultInt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10595,
                                        "src": "3200:9:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "id": 10604,
                                        "name": "uUNIT",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9716,
                                        "src": "3213:5:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "3200:18:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "id": 10606,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3200:18:35"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 10613,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10609,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10561,
                                  "src": "3246:6:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 10611,
                                      "name": "resultInt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10595,
                                      "src": "3260:9:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "id": 10610,
                                    "name": "wrap",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9565,
                                    "src": "3255:4:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                      "typeString": "function (int256) pure returns (SD59x18)"
                                    }
                                  },
                                  "id": 10612,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3255:15:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "src": "3246:24:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              "id": 10614,
                              "nodeType": "ExpressionStatement",
                              "src": "3246:24:35"
                            }
                          ]
                        }
                      ]
                    },
                    "id": 10617,
                    "nodeType": "IfStatement",
                    "src": "2940:347:35",
                    "trueBody": {
                      "id": 10593,
                      "nodeType": "Block",
                      "src": "2960:27:35",
                      "statements": [
                        {
                          "expression": {
                            "id": 10591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 10589,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10561,
                              "src": "2970:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "id": 10590,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10557,
                              "src": "2979:1:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "src": "2970:10:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "id": 10592,
                          "nodeType": "ExpressionStatement",
                          "src": "2970:10:35"
                        }
                      ]
                    }
                  }
                ]
              },
              "documentation": {
                "id": 10554,
                "nodeType": "StructuredDocumentation",
                "src": "2214:498:35",
                "text": "@notice Yields the smallest whole number greater than or equal to x.\n @dev Optimized for fractional value inputs, because every whole value has (1e18 - 1) fractional counterparts.\n See https://en.wikipedia.org/wiki/Floor_and_ceiling_functions.\n Requirements:\n - x ≤ MAX_WHOLE_SD59x18\n @param x The SD59x18 number to ceil.\n @return result The smallest whole number greater than or equal to x, as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 10619,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "ceil",
              "nameLocation": "2721:4:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10558,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10557,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2734:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10619,
                    "src": "2726:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10556,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10555,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2726:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2726:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2726:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2725:11:35"
              },
              "returnParameters": {
                "id": 10562,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10561,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2759:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10619,
                    "src": "2751:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10560,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10559,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2751:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2751:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2751:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2750:16:35"
              },
              "scope": 11693,
              "src": "2712:577:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10751,
                "nodeType": "Block",
                "src": "4083:1088:35",
                "statements": [
                  {
                    "assignments": [
                      10633
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10633,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "4096:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 10751,
                        "src": "4089:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 10632,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4089:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10637,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 10634,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10623,
                          "src": "4103:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4105:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "4103:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 10636,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4103:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4089:24:35"
                  },
                  {
                    "assignments": [
                      10639
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10639,
                        "mutability": "mutable",
                        "name": "yInt",
                        "nameLocation": "4126:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 10751,
                        "src": "4119:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 10638,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4119:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10643,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 10640,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10626,
                          "src": "4133:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10641,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4135:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "4133:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 10642,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4133:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4119:24:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 10650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 10646,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 10644,
                          "name": "xInt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10633,
                          "src": "4153:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 10645,
                          "name": "uMIN_SD59x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9685,
                          "src": "4161:12:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "4153:20:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 10649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 10647,
                          "name": "yInt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10639,
                          "src": "4177:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 10648,
                          "name": "uMIN_SD59x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9685,
                          "src": "4185:12:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "4177:20:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "4153:44:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 10657,
                    "nodeType": "IfStatement",
                    "src": "4149:116:35",
                    "trueBody": {
                      "id": 10656,
                      "nodeType": "Block",
                      "src": "4199:66:35",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 10651,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10435,
                                "src": "4216:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 10653,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4223:33:35",
                              "memberName": "PRBMath_SD59x18_Div_InputTooSmall",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9768,
                              "src": "4216:40:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 10654,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4216:42:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 10655,
                          "nodeType": "RevertStatement",
                          "src": "4209:49:35"
                        }
                      ]
                    }
                  },
                  {
                    "assignments": [
                      10659
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10659,
                        "mutability": "mutable",
                        "name": "xAbs",
                        "nameLocation": "4330:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 10751,
                        "src": "4322:12:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10658,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4322:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10660,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4322:12:35"
                  },
                  {
                    "assignments": [
                      10662
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10662,
                        "mutability": "mutable",
                        "name": "yAbs",
                        "nameLocation": "4348:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 10751,
                        "src": "4340:12:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10661,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4340:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10663,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4340:12:35"
                  },
                  {
                    "id": 10696,
                    "nodeType": "UncheckedBlock",
                    "src": "4358:133:35",
                    "statements": [
                      {
                        "expression": {
                          "id": 10678,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10664,
                            "name": "xAbs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10659,
                            "src": "4378:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 10667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10665,
                                "name": "xInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10633,
                                "src": "4385:4:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 10666,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4392:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4385:8:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "arguments": [
                                {
                                  "id": 10675,
                                  "name": "xInt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10633,
                                  "src": "4421:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 10674,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4413:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 10673,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4413:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10676,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4413:13:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10677,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "4385:41:35",
                            "trueExpression": {
                              "arguments": [
                                {
                                  "id": 10671,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "4404:5:35",
                                  "subExpression": {
                                    "id": 10670,
                                    "name": "xInt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10633,
                                    "src": "4405:4:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 10669,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4396:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 10668,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4396:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10672,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4396:14:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4378:48:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10679,
                        "nodeType": "ExpressionStatement",
                        "src": "4378:48:35"
                      },
                      {
                        "expression": {
                          "id": 10694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10680,
                            "name": "yAbs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10662,
                            "src": "4436:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 10683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10681,
                                "name": "yInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10639,
                                "src": "4443:4:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 10682,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4450:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4443:8:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "arguments": [
                                {
                                  "id": 10691,
                                  "name": "yInt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10639,
                                  "src": "4479:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 10690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4471:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 10689,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4471:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10692,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4471:13:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10693,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "4443:41:35",
                            "trueExpression": {
                              "arguments": [
                                {
                                  "id": 10687,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "4462:5:35",
                                  "subExpression": {
                                    "id": 10686,
                                    "name": "yInt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10639,
                                    "src": "4463:4:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 10685,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4454:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 10684,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4454:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10688,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4454:14:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4436:48:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10695,
                        "nodeType": "ExpressionStatement",
                        "src": "4436:48:35"
                      }
                    ]
                  },
                  {
                    "assignments": [
                      10698
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10698,
                        "mutability": "mutable",
                        "name": "resultAbs",
                        "nameLocation": "4593:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 10751,
                        "src": "4585:17:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10697,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4585:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10708,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 10701,
                          "name": "xAbs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10659,
                          "src": "4619:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "id": 10704,
                              "name": "uUNIT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9716,
                              "src": "4633:5:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 10703,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4625:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 10702,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4625:7:35",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 10705,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4625:14:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 10706,
                          "name": "yAbs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10662,
                          "src": "4641:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 10699,
                          "name": "Common",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10434,
                          "src": "4605:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_module_8329",
                            "typeString": "module \"@prb/math/src/Common.sol\""
                          }
                        },
                        "id": 10700,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "4612:6:35",
                        "memberName": "mulDiv",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7910,
                        "src": "4605:13:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 10707,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4605:41:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4585:61:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 10714,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 10709,
                        "name": "resultAbs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10698,
                        "src": "4656:9:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "arguments": [
                          {
                            "id": 10712,
                            "name": "uMAX_SD59x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9662,
                            "src": "4676:12:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 10711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4668:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 10710,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4668:7:35",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 10713,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4668:21:35",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4656:33:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 10723,
                    "nodeType": "IfStatement",
                    "src": "4652:104:35",
                    "trueBody": {
                      "id": 10722,
                      "nodeType": "Block",
                      "src": "4691:65:35",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 10718,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10623,
                                "src": "4744:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              {
                                "id": 10719,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10626,
                                "src": "4747:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                },
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 10715,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10435,
                                "src": "4708:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 10717,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4715:28:35",
                              "memberName": "PRBMath_SD59x18_Div_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9777,
                              "src": "4708:35:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18,SD59x18) pure returns (error)"
                              }
                            },
                            "id": 10720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4708:41:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 10721,
                          "nodeType": "RevertStatement",
                          "src": "4701:48:35"
                        }
                      ]
                    }
                  },
                  {
                    "assignments": [
                      10725
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10725,
                        "mutability": "mutable",
                        "name": "sameSign",
                        "nameLocation": "4936:8:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 10751,
                        "src": "4931:13:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10724,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4931:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10733,
                    "initialValue": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 10732,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 10728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10726,
                              "name": "xInt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10633,
                              "src": "4948:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "^",
                            "rightExpression": {
                              "id": 10727,
                              "name": "yInt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10639,
                              "src": "4955:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "4948:11:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "id": 10729,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4947:13:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 10731,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "-",
                        "prefix": true,
                        "src": "4963:2:35",
                        "subExpression": {
                          "hexValue": "31",
                          "id": 10730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4964:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_minus_1_by_1",
                          "typeString": "int_const -1"
                        }
                      },
                      "src": "4947:18:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4931:34:35"
                  },
                  {
                    "id": 10750,
                    "nodeType": "UncheckedBlock",
                    "src": "5078:91:35",
                    "statements": [
                      {
                        "expression": {
                          "id": 10748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10734,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10630,
                            "src": "5098:6:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "condition": {
                                  "id": 10736,
                                  "name": "sameSign",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10725,
                                  "src": "5112:8:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "id": 10745,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "5143:18:35",
                                  "subExpression": {
                                    "arguments": [
                                      {
                                        "id": 10743,
                                        "name": "resultAbs",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10698,
                                        "src": "5151:9:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 10742,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5144:6:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": {
                                        "id": 10741,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5144:6:35",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 10744,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5144:17:35",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 10746,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "5112:49:35",
                                "trueExpression": {
                                  "arguments": [
                                    {
                                      "id": 10739,
                                      "name": "resultAbs",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10698,
                                      "src": "5130:9:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 10738,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5123:6:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_int256_$",
                                      "typeString": "type(int256)"
                                    },
                                    "typeName": {
                                      "id": 10737,
                                      "name": "int256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5123:6:35",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 10740,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5123:17:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 10735,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9565,
                              "src": "5107:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (int256) pure returns (SD59x18)"
                              }
                            },
                            "id": 10747,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5107:55:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "src": "5098:64:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10749,
                        "nodeType": "ExpressionStatement",
                        "src": "5098:64:35"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 10620,
                "nodeType": "StructuredDocumentation",
                "src": "3291:727:35",
                "text": "@notice Divides two SD59x18 numbers, returning a new SD59x18 number.\n @dev This is an extension of {Common.mulDiv} for signed numbers, which works by computing the signs and the absolute\n values separately.\n Notes:\n - Refer to the notes in {Common.mulDiv}.\n - The result is rounded toward zero.\n Requirements:\n - Refer to the requirements in {Common.mulDiv}.\n - None of the inputs can be `MIN_SD59x18`.\n - The denominator must not be zero.\n - The result must fit in SD59x18.\n @param x The numerator as an SD59x18 number.\n @param y The denominator as an SD59x18 number.\n @return result The quotient as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 10752,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "div",
              "nameLocation": "4027:3:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10627,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10623,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "4039:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10752,
                    "src": "4031:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10622,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10621,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4031:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4031:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4031:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10626,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "4050:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10752,
                    "src": "4042:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10625,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10624,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4042:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4042:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4042:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4030:22:35"
              },
              "returnParameters": {
                "id": 10631,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10630,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "4075:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10752,
                    "src": "4067:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10629,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10628,
                        "name": "SD59x18",
                        "nameLocations": [
                          "4067:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "4067:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "4067:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4066:16:35"
              },
              "scope": 11693,
              "src": "4018:1153:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10803,
                "nodeType": "Block",
                "src": "5657:594:35",
                "statements": [
                  {
                    "assignments": [
                      10763
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10763,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "5670:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 10803,
                        "src": "5663:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 10762,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5663:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10767,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 10764,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10756,
                          "src": "5677:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10765,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5679:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "5677:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 10766,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5677:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5663:24:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 10770,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 10768,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10763,
                        "src": "5821:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "id": 10769,
                        "name": "uEXP_MIN_THRESHOLD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9593,
                        "src": "5828:18:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "5821:25:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 10774,
                    "nodeType": "IfStatement",
                    "src": "5817:59:35",
                    "trueBody": {
                      "id": 10773,
                      "nodeType": "Block",
                      "src": "5848:28:35",
                      "statements": [
                        {
                          "expression": {
                            "id": 10771,
                            "name": "ZERO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9742,
                            "src": "5865:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "functionReturnParameters": 10761,
                          "id": 10772,
                          "nodeType": "Return",
                          "src": "5858:11:35"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 10777,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 10775,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10763,
                        "src": "5969:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 10776,
                        "name": "uEXP_MAX_INPUT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9581,
                        "src": "5976:14:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "5969:21:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 10785,
                    "nodeType": "IfStatement",
                    "src": "5965:92:35",
                    "trueBody": {
                      "id": 10784,
                      "nodeType": "Block",
                      "src": "5992:65:35",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 10781,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10756,
                                "src": "6048:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 10778,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10435,
                                "src": "6009:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 10780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "6016:31:35",
                              "memberName": "PRBMath_SD59x18_Exp_InputTooBig",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9783,
                              "src": "6009:38:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 10782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6009:41:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 10783,
                          "nodeType": "RevertStatement",
                          "src": "6002:48:35"
                        }
                      ]
                    }
                  },
                  {
                    "id": 10802,
                    "nodeType": "UncheckedBlock",
                    "src": "6063:186:35",
                    "statements": [
                      {
                        "assignments": [
                          10787
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10787,
                            "mutability": "mutable",
                            "name": "doubleUnitProduct",
                            "nameLocation": "6152:17:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 10802,
                            "src": "6145:24:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 10786,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6145:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10791,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 10790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10788,
                            "name": "xInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10763,
                            "src": "6172:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 10789,
                            "name": "uLOG2_E",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9651,
                            "src": "6179:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "6172:14:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6145:41:35"
                      },
                      {
                        "expression": {
                          "id": 10800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10792,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10760,
                            "src": "6196:6:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 10797,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 10795,
                                      "name": "doubleUnitProduct",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10787,
                                      "src": "6215:17:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 10796,
                                      "name": "uUNIT",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9716,
                                      "src": "6235:5:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "src": "6215:25:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 10794,
                                  "name": "wrap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9565,
                                  "src": "6210:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                    "typeString": "function (int256) pure returns (SD59x18)"
                                  }
                                },
                                "id": 10798,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6210:31:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "id": 10793,
                              "name": "exp2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10886,
                              "src": "6205:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (SD59x18) pure returns (SD59x18)"
                              }
                            },
                            "id": 10799,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6205:37:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "src": "6196:46:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10801,
                        "nodeType": "ExpressionStatement",
                        "src": "6196:46:35"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 10753,
                "nodeType": "StructuredDocumentation",
                "src": "5173:430:35",
                "text": "@notice Calculates the natural exponent of x using the following formula:\n $$\n e^x = 2^{x * log_2{e}}\n $$\n @dev Notes:\n - Refer to the notes in {exp2}.\n Requirements:\n - Refer to the requirements in {exp2}.\n - x < 133_084258667509499441.\n @param x The exponent as an SD59x18 number.\n @return result The result as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 10804,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "exp",
              "nameLocation": "5612:3:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10757,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10756,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "5624:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10804,
                    "src": "5616:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10755,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10754,
                        "name": "SD59x18",
                        "nameLocations": [
                          "5616:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "5616:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "5616:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "5615:11:35"
              },
              "returnParameters": {
                "id": 10761,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10760,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "5649:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10804,
                    "src": "5641:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10759,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10758,
                        "name": "SD59x18",
                        "nameLocations": [
                          "5641:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "5641:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "5641:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "5640:16:35"
              },
              "scope": 11693,
              "src": "5603:648:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10885,
                "nodeType": "Block",
                "src": "6832:888:35",
                "statements": [
                  {
                    "assignments": [
                      10815
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10815,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "6845:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 10885,
                        "src": "6838:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 10814,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6838:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10819,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 10816,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10808,
                          "src": "6852:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "6854:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "6852:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 10818,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6852:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6838:24:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 10822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 10820,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10815,
                        "src": "6872:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 10821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6879:1:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "6872:8:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 10883,
                      "nodeType": "Block",
                      "src": "7218:500:35",
                      "statements": [
                        {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 10849,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10847,
                              "name": "xInt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10815,
                              "src": "7319:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "id": 10848,
                              "name": "uEXP2_MAX_INPUT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9606,
                              "src": "7326:15:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "7319:22:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 10857,
                          "nodeType": "IfStatement",
                          "src": "7315:102:35",
                          "trueBody": {
                            "id": 10856,
                            "nodeType": "Block",
                            "src": "7343:74:35",
                            "statements": [
                              {
                                "errorCall": {
                                  "arguments": [
                                    {
                                      "id": 10853,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10808,
                                      "src": "7404:1:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                        "typeString": "SD59x18"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                        "typeString": "SD59x18"
                                      }
                                    ],
                                    "expression": {
                                      "id": 10850,
                                      "name": "Errors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10435,
                                      "src": "7364:6:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_module_9936",
                                        "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                      }
                                    },
                                    "id": 10852,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "7371:32:35",
                                    "memberName": "PRBMath_SD59x18_Exp2_InputTooBig",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9789,
                                    "src": "7364:39:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                      "typeString": "function (SD59x18) pure returns (error)"
                                    }
                                  },
                                  "id": 10854,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7364:42:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_error",
                                    "typeString": "error"
                                  }
                                },
                                "id": 10855,
                                "nodeType": "RevertStatement",
                                "src": "7357:49:35"
                              }
                            ]
                          }
                        },
                        {
                          "id": 10882,
                          "nodeType": "UncheckedBlock",
                          "src": "7427:285:35",
                          "statements": [
                            {
                              "assignments": [
                                10859
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10859,
                                  "mutability": "mutable",
                                  "name": "x_192x64",
                                  "nameLocation": "7522:8:35",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 10882,
                                  "src": "7514:16:35",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 10858,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7514:7:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 10869,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 10867,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          },
                                          "id": 10864,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 10862,
                                            "name": "xInt",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10815,
                                            "src": "7542:4:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "hexValue": "3634",
                                            "id": 10863,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7550:2:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_64_by_1",
                                              "typeString": "int_const 64"
                                            },
                                            "value": "64"
                                          },
                                          "src": "7542:10:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        }
                                      ],
                                      "id": 10865,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "7541:12:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 10866,
                                      "name": "uUNIT",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9716,
                                      "src": "7556:5:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "src": "7541:20:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 10861,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7533:7:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 10860,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7533:7:35",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10868,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7533:29:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7514:48:35"
                            },
                            {
                              "expression": {
                                "id": 10880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10870,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10812,
                                  "src": "7657:6:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 10876,
                                              "name": "x_192x64",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10859,
                                              "src": "7690:8:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "id": 10874,
                                              "name": "Common",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10434,
                                              "src": "7678:6:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_module_8329",
                                                "typeString": "module \"@prb/math/src/Common.sol\""
                                              }
                                            },
                                            "id": 10875,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "7685:4:35",
                                            "memberName": "exp2",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 7764,
                                            "src": "7678:11:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                              "typeString": "function (uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 10877,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "7678:21:35",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 10873,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "7671:6:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_int256_$",
                                          "typeString": "type(int256)"
                                        },
                                        "typeName": {
                                          "id": 10872,
                                          "name": "int256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "7671:6:35",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 10878,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7671:29:35",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "id": 10871,
                                    "name": "wrap",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9565,
                                    "src": "7666:4:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                      "typeString": "function (int256) pure returns (SD59x18)"
                                    }
                                  },
                                  "id": 10879,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7666:35:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "src": "7657:44:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              "id": 10881,
                              "nodeType": "ExpressionStatement",
                              "src": "7657:44:35"
                            }
                          ]
                        }
                      ]
                    },
                    "id": 10884,
                    "nodeType": "IfStatement",
                    "src": "6868:850:35",
                    "trueBody": {
                      "id": 10846,
                      "nodeType": "Block",
                      "src": "6882:330:35",
                      "statements": [
                        {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 10825,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10823,
                              "name": "xInt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10815,
                              "src": "6979:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "id": 10824,
                              "name": "uEXP2_MIN_THRESHOLD",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9618,
                              "src": "6986:19:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "6979:26:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 10829,
                          "nodeType": "IfStatement",
                          "src": "6975:68:35",
                          "trueBody": {
                            "id": 10828,
                            "nodeType": "Block",
                            "src": "7007:36:35",
                            "statements": [
                              {
                                "expression": {
                                  "id": 10826,
                                  "name": "ZERO",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9742,
                                  "src": "7028:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "functionReturnParameters": 10813,
                                "id": 10827,
                                "nodeType": "Return",
                                "src": "7021:11:35"
                              }
                            ]
                          }
                        },
                        {
                          "id": 10845,
                          "nodeType": "UncheckedBlock",
                          "src": "7053:153:35",
                          "statements": [
                            {
                              "expression": {
                                "id": 10843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10830,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10812,
                                  "src": "7138:6:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 10841,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 10832,
                                        "name": "uUNIT_SQUARED",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9727,
                                        "src": "7152:13:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 10836,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "-",
                                                    "prefix": true,
                                                    "src": "7178:5:35",
                                                    "subExpression": {
                                                      "id": 10835,
                                                      "name": "xInt",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 10815,
                                                      "src": "7179:4:35",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                      }
                                                    },
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  ],
                                                  "id": 10834,
                                                  "name": "wrap",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 9565,
                                                  "src": "7173:4:35",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                                    "typeString": "function (int256) pure returns (SD59x18)"
                                                  }
                                                },
                                                "id": 10837,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7173:11:35",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                                  "typeString": "SD59x18"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                                  "typeString": "SD59x18"
                                                }
                                              ],
                                              "id": 10833,
                                              "name": "exp2",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10886,
                                              "src": "7168:4:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                                "typeString": "function (SD59x18) pure returns (SD59x18)"
                                              }
                                            },
                                            "id": 10838,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7168:17:35",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                              "typeString": "SD59x18"
                                            }
                                          },
                                          "id": 10839,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "7186:6:35",
                                          "memberName": "unwrap",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 9548,
                                          "src": "7168:24:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                            "typeString": "function (SD59x18) pure returns (int256)"
                                          }
                                        },
                                        "id": 10840,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7168:26:35",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "7152:42:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "id": 10831,
                                    "name": "wrap",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9565,
                                    "src": "7147:4:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                      "typeString": "function (int256) pure returns (SD59x18)"
                                    }
                                  },
                                  "id": 10842,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7147:48:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "src": "7138:57:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              "id": 10844,
                              "nodeType": "ExpressionStatement",
                              "src": "7138:57:35"
                            }
                          ]
                        }
                      ]
                    }
                  }
                ]
              },
              "documentation": {
                "id": 10805,
                "nodeType": "StructuredDocumentation",
                "src": "6253:524:35",
                "text": "@notice Calculates the binary exponent of x using the binary fraction method using the following formula:\n $$\n 2^{-x} = \\frac{1}{2^x}\n $$\n @dev See https://ethereum.stackexchange.com/q/79903/24693.\n Notes:\n - If x < -59_794705707972522261, the result is zero.\n Requirements:\n - x < 192e18.\n - The result must fit in SD59x18.\n @param x The exponent as an SD59x18 number.\n @return result The result as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 10886,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "exp2",
              "nameLocation": "6786:4:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10809,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10808,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "6799:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10886,
                    "src": "6791:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10807,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10806,
                        "name": "SD59x18",
                        "nameLocations": [
                          "6791:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "6791:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "6791:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "6790:11:35"
              },
              "returnParameters": {
                "id": 10813,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10812,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "6824:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10886,
                    "src": "6816:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10811,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10810,
                        "name": "SD59x18",
                        "nameLocations": [
                          "6816:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "6816:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "6816:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "6815:16:35"
              },
              "scope": 11693,
              "src": "6777:943:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10951,
                "nodeType": "Block",
                "src": "8281:524:35",
                "statements": [
                  {
                    "assignments": [
                      10897
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10897,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "8294:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 10951,
                        "src": "8287:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 10896,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8287:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10901,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 10898,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10890,
                          "src": "8301:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10899,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "8303:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "8301:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 10900,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8301:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8287:24:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 10904,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 10902,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10897,
                        "src": "8321:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "id": 10903,
                        "name": "uMIN_WHOLE_SD59x18",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9697,
                        "src": "8328:18:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "8321:25:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 10912,
                    "nodeType": "IfStatement",
                    "src": "8317:96:35",
                    "trueBody": {
                      "id": 10911,
                      "nodeType": "Block",
                      "src": "8348:65:35",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 10908,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10890,
                                "src": "8404:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 10905,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10435,
                                "src": "8365:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 10907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "8372:31:35",
                              "memberName": "PRBMath_SD59x18_Floor_Underflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9795,
                              "src": "8365:38:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 10909,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8365:41:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 10910,
                          "nodeType": "RevertStatement",
                          "src": "8358:48:35"
                        }
                      ]
                    }
                  },
                  {
                    "assignments": [
                      10914
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10914,
                        "mutability": "mutable",
                        "name": "remainder",
                        "nameLocation": "8426:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 10951,
                        "src": "8419:16:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 10913,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8419:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10918,
                    "initialValue": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 10917,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 10915,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10897,
                        "src": "8438:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "%",
                      "rightExpression": {
                        "id": 10916,
                        "name": "uUNIT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9716,
                        "src": "8445:5:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "8438:12:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8419:31:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 10921,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 10919,
                        "name": "remainder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10914,
                        "src": "8460:9:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 10920,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8473:1:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "8460:14:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 10949,
                      "nodeType": "Block",
                      "src": "8509:294:35",
                      "statements": [
                        {
                          "id": 10948,
                          "nodeType": "UncheckedBlock",
                          "src": "8519:278:35",
                          "statements": [
                            {
                              "assignments": [
                                10928
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10928,
                                  "mutability": "mutable",
                                  "name": "resultInt",
                                  "nameLocation": "8642:9:35",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 10948,
                                  "src": "8635:16:35",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "typeName": {
                                    "id": 10927,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8635:6:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 10932,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 10931,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 10929,
                                  "name": "xInt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10897,
                                  "src": "8654:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 10930,
                                  "name": "remainder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10914,
                                  "src": "8661:9:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "8654:16:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8635:35:35"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 10935,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 10933,
                                  "name": "xInt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10897,
                                  "src": "8688:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 10934,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8695:1:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8688:8:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 10941,
                              "nodeType": "IfStatement",
                              "src": "8684:65:35",
                              "trueBody": {
                                "id": 10940,
                                "nodeType": "Block",
                                "src": "8698:51:35",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 10938,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 10936,
                                        "name": "resultInt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10928,
                                        "src": "8716:9:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "-=",
                                      "rightHandSide": {
                                        "id": 10937,
                                        "name": "uUNIT",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9716,
                                        "src": "8729:5:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "8716:18:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "id": 10939,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8716:18:35"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 10946,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10942,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10894,
                                  "src": "8762:6:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 10944,
                                      "name": "resultInt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10928,
                                      "src": "8776:9:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "id": 10943,
                                    "name": "wrap",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9565,
                                    "src": "8771:4:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                      "typeString": "function (int256) pure returns (SD59x18)"
                                    }
                                  },
                                  "id": 10945,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8771:15:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "src": "8762:24:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              "id": 10947,
                              "nodeType": "ExpressionStatement",
                              "src": "8762:24:35"
                            }
                          ]
                        }
                      ]
                    },
                    "id": 10950,
                    "nodeType": "IfStatement",
                    "src": "8456:347:35",
                    "trueBody": {
                      "id": 10926,
                      "nodeType": "Block",
                      "src": "8476:27:35",
                      "statements": [
                        {
                          "expression": {
                            "id": 10924,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 10922,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10894,
                              "src": "8486:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "id": 10923,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10890,
                              "src": "8495:1:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "src": "8486:10:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "id": 10925,
                          "nodeType": "ExpressionStatement",
                          "src": "8486:10:35"
                        }
                      ]
                    }
                  }
                ]
              },
              "documentation": {
                "id": 10887,
                "nodeType": "StructuredDocumentation",
                "src": "7722:503:35",
                "text": "@notice Yields the greatest whole number less than or equal to x.\n @dev Optimized for fractional value inputs, because for every whole value there are (1e18 - 1) fractional\n counterparts. See https://en.wikipedia.org/wiki/Floor_and_ceiling_functions.\n Requirements:\n - x ≥ MIN_WHOLE_SD59x18\n @param x The SD59x18 number to floor.\n @return result The greatest whole number less than or equal to x, as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 10952,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "floor",
              "nameLocation": "8234:5:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10891,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10890,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "8248:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10952,
                    "src": "8240:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10889,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10888,
                        "name": "SD59x18",
                        "nameLocations": [
                          "8240:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "8240:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "8240:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "8239:11:35"
              },
              "returnParameters": {
                "id": 10895,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10894,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "8273:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10952,
                    "src": "8265:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10893,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10892,
                        "name": "SD59x18",
                        "nameLocations": [
                          "8265:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "8265:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "8265:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "8264:16:35"
              },
              "scope": 11693,
              "src": "8225:580:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 10972,
                "nodeType": "Block",
                "src": "9243:42:35",
                "statements": [
                  {
                    "expression": {
                      "id": 10970,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 10962,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10960,
                        "src": "9249:6:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 10968,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 10964,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10956,
                                  "src": "9263:1:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "id": 10965,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "9265:6:35",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9548,
                                "src": "9263:8:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (int256)"
                                }
                              },
                              "id": 10966,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9263:10:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "id": 10967,
                              "name": "uUNIT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9716,
                              "src": "9276:5:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "9263:18:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 10963,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9565,
                          "src": "9258:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 10969,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9258:24:35",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "9249:33:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 10971,
                    "nodeType": "ExpressionStatement",
                    "src": "9249:33:35"
                  }
                ]
              },
              "documentation": {
                "id": 10953,
                "nodeType": "StructuredDocumentation",
                "src": "8807:381:35",
                "text": "@notice Yields the excess beyond the floor of x for positive numbers and the part of the number to the right.\n of the radix point for negative numbers.\n @dev Based on the odd function definition. https://en.wikipedia.org/wiki/Fractional_part\n @param x The SD59x18 number to get the fractional part of.\n @return result The fractional part of x as an SD59x18 number."
              },
              "id": 10973,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "frac",
              "nameLocation": "9197:4:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10957,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10956,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "9210:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10973,
                    "src": "9202:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10955,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10954,
                        "name": "SD59x18",
                        "nameLocations": [
                          "9202:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "9202:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "9202:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "9201:11:35"
              },
              "returnParameters": {
                "id": 10961,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10960,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "9235:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 10973,
                    "src": "9227:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10959,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10958,
                        "name": "SD59x18",
                        "nameLocations": [
                          "9227:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "9227:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "9227:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "9226:16:35"
              },
              "scope": 11693,
              "src": "9188:97:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11061,
                "nodeType": "Block",
                "src": "9828:877:35",
                "statements": [
                  {
                    "assignments": [
                      10987
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10987,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "9841:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11061,
                        "src": "9834:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 10986,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9834:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10991,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 10988,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10977,
                          "src": "9848:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10989,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "9850:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "9848:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 10990,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9848:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9834:24:35"
                  },
                  {
                    "assignments": [
                      10993
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10993,
                        "mutability": "mutable",
                        "name": "yInt",
                        "nameLocation": "9871:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11061,
                        "src": "9864:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 10992,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9864:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 10997,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 10994,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10980,
                          "src": "9878:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 10995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "9880:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "9878:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 10996,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9878:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9864:24:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 11004,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 11000,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 10998,
                          "name": "xInt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10987,
                          "src": "9898:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 10999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9906:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "9898:9:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 11003,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 11001,
                          "name": "yInt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10993,
                          "src": "9911:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 11002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9919:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "9911:9:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "9898:22:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 11008,
                    "nodeType": "IfStatement",
                    "src": "9894:56:35",
                    "trueBody": {
                      "id": 11007,
                      "nodeType": "Block",
                      "src": "9922:28:35",
                      "statements": [
                        {
                          "expression": {
                            "id": 11005,
                            "name": "ZERO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9742,
                            "src": "9939:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "functionReturnParameters": 10985,
                          "id": 11006,
                          "nodeType": "Return",
                          "src": "9932:11:35"
                        }
                      ]
                    }
                  },
                  {
                    "id": 11060,
                    "nodeType": "UncheckedBlock",
                    "src": "9956:747:35",
                    "statements": [
                      {
                        "assignments": [
                          11010
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11010,
                            "mutability": "mutable",
                            "name": "xyInt",
                            "nameLocation": "10093:5:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 11060,
                            "src": "10086:12:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 11009,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10086:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11014,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 11013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11011,
                            "name": "xInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10987,
                            "src": "10101:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 11012,
                            "name": "yInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10993,
                            "src": "10108:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "10101:11:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10086:26:35"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 11019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 11017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11015,
                              "name": "xyInt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11010,
                              "src": "10126:5:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 11016,
                              "name": "xInt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10987,
                              "src": "10134:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "10126:12:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 11018,
                            "name": "yInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10993,
                            "src": "10142:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "10126:20:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11028,
                        "nodeType": "IfStatement",
                        "src": "10122:98:35",
                        "trueBody": {
                          "id": 11027,
                          "nodeType": "Block",
                          "src": "10148:72:35",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 11023,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10977,
                                    "src": "10204:1:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                      "typeString": "SD59x18"
                                    }
                                  },
                                  {
                                    "id": 11024,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10980,
                                    "src": "10207:1:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                      "typeString": "SD59x18"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                      "typeString": "SD59x18"
                                    },
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                      "typeString": "SD59x18"
                                    }
                                  ],
                                  "expression": {
                                    "id": 11020,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10435,
                                    "src": "10169:6:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_module_9936",
                                      "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                    }
                                  },
                                  "id": 11022,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "10176:27:35",
                                  "memberName": "PRBMath_SD59x18_Gm_Overflow",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9813,
                                  "src": "10169:34:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                    "typeString": "function (SD59x18,SD59x18) pure returns (error)"
                                  }
                                },
                                "id": 11025,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10169:40:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 11026,
                              "nodeType": "RevertStatement",
                              "src": "10162:47:35"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 11031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11029,
                            "name": "xyInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11010,
                            "src": "10320:5:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 11030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10328:1:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10320:9:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11040,
                        "nodeType": "IfStatement",
                        "src": "10316:94:35",
                        "trueBody": {
                          "id": 11039,
                          "nodeType": "Block",
                          "src": "10331:79:35",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 11035,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10977,
                                    "src": "10394:1:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                      "typeString": "SD59x18"
                                    }
                                  },
                                  {
                                    "id": 11036,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10980,
                                    "src": "10397:1:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                      "typeString": "SD59x18"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                      "typeString": "SD59x18"
                                    },
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                      "typeString": "SD59x18"
                                    }
                                  ],
                                  "expression": {
                                    "id": 11032,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10435,
                                    "src": "10352:6:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_module_9936",
                                      "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                    }
                                  },
                                  "id": 11034,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "10359:34:35",
                                  "memberName": "PRBMath_SD59x18_Gm_NegativeProduct",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9804,
                                  "src": "10352:41:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                    "typeString": "function (SD59x18,SD59x18) pure returns (error)"
                                  }
                                },
                                "id": 11037,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10352:47:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 11038,
                              "nodeType": "RevertStatement",
                              "src": "10345:54:35"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          11042
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11042,
                            "mutability": "mutable",
                            "name": "resultUint",
                            "nameLocation": "10613:10:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 11060,
                            "src": "10605:18:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11041,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10605:7:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11050,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 11047,
                                  "name": "xyInt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11010,
                                  "src": "10646:5:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 11046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10638:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 11045,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10638:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 11048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10638:14:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 11043,
                              "name": "Common",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10434,
                              "src": "10626:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_module_8329",
                                "typeString": "module \"@prb/math/src/Common.sol\""
                              }
                            },
                            "id": 11044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "10633:4:35",
                            "memberName": "sqrt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8328,
                            "src": "10626:11:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 11049,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10626:27:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10605:48:35"
                      },
                      {
                        "expression": {
                          "id": 11058,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11051,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10984,
                            "src": "10663:6:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 11055,
                                    "name": "resultUint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11042,
                                    "src": "10684:10:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 11054,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10677:6:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 11053,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10677:6:35",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 11056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10677:18:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 11052,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9565,
                              "src": "10672:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (int256) pure returns (SD59x18)"
                              }
                            },
                            "id": 11057,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10672:24:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "src": "10663:33:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 11059,
                        "nodeType": "ExpressionStatement",
                        "src": "10663:33:35"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 10974,
                "nodeType": "StructuredDocumentation",
                "src": "9287:477:35",
                "text": "@notice Calculates the geometric mean of x and y, i.e. $\\sqrt{x * y}$.\n @dev Notes:\n - The result is rounded toward zero.\n Requirements:\n - x * y must fit in SD59x18.\n - x * y must not be negative, since complex numbers are not supported.\n @param x The first operand as an SD59x18 number.\n @param y The second operand as an SD59x18 number.\n @return result The result as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 11062,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "gm",
              "nameLocation": "9773:2:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 10981,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10977,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "9784:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11062,
                    "src": "9776:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10976,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10975,
                        "name": "SD59x18",
                        "nameLocations": [
                          "9776:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "9776:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "9776:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 10980,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "9795:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11062,
                    "src": "9787:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10979,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10978,
                        "name": "SD59x18",
                        "nameLocations": [
                          "9787:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "9787:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "9787:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "9775:22:35"
              },
              "returnParameters": {
                "id": 10985,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 10984,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "9820:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11062,
                    "src": "9812:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 10983,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10982,
                        "name": "SD59x18",
                        "nameLocations": [
                          "9812:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "9812:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "9812:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "9811:16:35"
              },
              "scope": 11693,
              "src": "9764:941:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11082,
                "nodeType": "Block",
                "src": "11084:50:35",
                "statements": [
                  {
                    "expression": {
                      "id": 11080,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 11072,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11070,
                        "src": "11090:6:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 11078,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11074,
                              "name": "uUNIT_SQUARED",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9727,
                              "src": "11104:13:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 11075,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11066,
                                  "src": "11120:1:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "id": 11076,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "11122:6:35",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9548,
                                "src": "11120:8:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (int256)"
                                }
                              },
                              "id": 11077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11120:10:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "11104:26:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 11073,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9565,
                          "src": "11099:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 11079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11099:32:35",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "11090:41:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 11081,
                    "nodeType": "ExpressionStatement",
                    "src": "11090:41:35"
                  }
                ]
              },
              "documentation": {
                "id": 11063,
                "nodeType": "StructuredDocumentation",
                "src": "10707:323:35",
                "text": "@notice Calculates the inverse of x.\n @dev Notes:\n - The result is rounded toward zero.\n Requirements:\n - x must not be zero.\n @param x The SD59x18 number for which to calculate the inverse.\n @return result The inverse as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 11083,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "inv",
              "nameLocation": "11039:3:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11067,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11066,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "11051:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11083,
                    "src": "11043:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11065,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11064,
                        "name": "SD59x18",
                        "nameLocations": [
                          "11043:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "11043:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "11043:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "11042:11:35"
              },
              "returnParameters": {
                "id": 11071,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11070,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "11076:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11083,
                    "src": "11068:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11069,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11068,
                        "name": "SD59x18",
                        "nameLocations": [
                          "11068:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "11068:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "11068:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "11067:16:35"
              },
              "scope": 11693,
              "src": "11030:104:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11107,
                "nodeType": "Block",
                "src": "11732:222:35",
                "statements": [
                  {
                    "expression": {
                      "id": 11105,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 11093,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11091,
                        "src": "11902:6:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 11103,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 11101,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 11096,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11087,
                                        "src": "11921:1:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                          "typeString": "SD59x18"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                          "typeString": "SD59x18"
                                        }
                                      ],
                                      "id": 11095,
                                      "name": "log2",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11301,
                                      "src": "11916:4:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                        "typeString": "function (SD59x18) pure returns (SD59x18)"
                                      }
                                    },
                                    "id": 11097,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11916:7:35",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                      "typeString": "SD59x18"
                                    }
                                  },
                                  "id": 11098,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "11924:6:35",
                                  "memberName": "unwrap",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9548,
                                  "src": "11916:14:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                    "typeString": "function (SD59x18) pure returns (int256)"
                                  }
                                },
                                "id": 11099,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11916:16:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 11100,
                                "name": "uUNIT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9716,
                                "src": "11935:5:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "11916:24:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 11102,
                              "name": "uLOG2_E",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9651,
                              "src": "11943:7:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "11916:34:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 11094,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9565,
                          "src": "11911:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 11104,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11911:40:35",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "11902:49:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 11106,
                    "nodeType": "ExpressionStatement",
                    "src": "11902:49:35"
                  }
                ]
              },
              "documentation": {
                "id": 11084,
                "nodeType": "StructuredDocumentation",
                "src": "11136:543:35",
                "text": "@notice Calculates the natural logarithm of x using the following formula:\n $$\n ln{x} = log_2{x} / log_2{e}\n $$\n @dev Notes:\n - Refer to the notes in {log2}.\n - The precision isn't sufficiently fine-grained to return exactly `UNIT` when the input is `E`.\n Requirements:\n - Refer to the requirements in {log2}.\n @param x The SD59x18 number for which to calculate the natural logarithm.\n @return result The natural logarithm as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 11108,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "ln",
              "nameLocation": "11688:2:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11088,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11087,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "11699:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11108,
                    "src": "11691:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11086,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11085,
                        "name": "SD59x18",
                        "nameLocations": [
                          "11691:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "11691:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "11691:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "11690:11:35"
              },
              "returnParameters": {
                "id": 11092,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11091,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "11724:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11108,
                    "src": "11716:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11090,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11089,
                        "name": "SD59x18",
                        "nameLocations": [
                          "11716:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "11716:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "11716:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "11715:16:35"
              },
              "scope": 11693,
              "src": "11679:275:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11158,
                "nodeType": "Block",
                "src": "12539:6982:35",
                "statements": [
                  {
                    "assignments": [
                      11119
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11119,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "12552:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11158,
                        "src": "12545:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 11118,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12545:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 11123,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 11120,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11112,
                          "src": "12559:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 11121,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "12561:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "12559:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 11122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12559:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "12545:24:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 11126,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 11124,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11119,
                        "src": "12579:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 11125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12586:1:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "12579:8:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 11134,
                    "nodeType": "IfStatement",
                    "src": "12575:81:35",
                    "trueBody": {
                      "id": 11133,
                      "nodeType": "Block",
                      "src": "12589:67:35",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 11130,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11112,
                                "src": "12647:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 11127,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10435,
                                "src": "12606:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 11129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "12613:33:35",
                              "memberName": "PRBMath_SD59x18_Log_InputTooSmall",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9903,
                              "src": "12606:40:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 11131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12606:43:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 11132,
                          "nodeType": "RevertStatement",
                          "src": "12599:50:35"
                        }
                      ]
                    }
                  },
                  {
                    "AST": {
                      "nativeSrc": "12812:6503:35",
                      "nodeType": "YulBlock",
                      "src": "12812:6503:35",
                      "statements": [
                        {
                          "cases": [
                            {
                              "body": {
                                "nativeSrc": "12846:36:35",
                                "nodeType": "YulBlock",
                                "src": "12846:36:35",
                                "statements": [
                                  {
                                    "nativeSrc": "12848:32:35",
                                    "nodeType": "YulAssignment",
                                    "src": "12848:32:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "12862:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "12862:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "12873:1:35",
                                              "nodeType": "YulLiteral",
                                              "src": "12873:1:35",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "12876:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "12876:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "12869:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "12869:3:35"
                                          },
                                          "nativeSrc": "12869:10:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "12869:10:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "12858:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "12858:3:35"
                                      },
                                      "nativeSrc": "12858:22:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "12858:22:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "12848:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "12848:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "12839:43:35",
                              "nodeType": "YulCase",
                              "src": "12839:43:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "12844:1:35",
                                "nodeType": "YulLiteral",
                                "src": "12844:1:35",
                                "type": "",
                                "value": "1"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "12899:36:35",
                                "nodeType": "YulBlock",
                                "src": "12899:36:35",
                                "statements": [
                                  {
                                    "nativeSrc": "12901:32:35",
                                    "nodeType": "YulAssignment",
                                    "src": "12901:32:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "12915:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "12915:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "12926:1:35",
                                              "nodeType": "YulLiteral",
                                              "src": "12926:1:35",
                                              "type": "",
                                              "value": "1"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "12929:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "12929:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "12922:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "12922:3:35"
                                          },
                                          "nativeSrc": "12922:10:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "12922:10:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "12911:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "12911:3:35"
                                      },
                                      "nativeSrc": "12911:22:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "12911:22:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "12901:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "12901:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "12891:44:35",
                              "nodeType": "YulCase",
                              "src": "12891:44:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "12896:2:35",
                                "nodeType": "YulLiteral",
                                "src": "12896:2:35",
                                "type": "",
                                "value": "10"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "12953:36:35",
                                "nodeType": "YulBlock",
                                "src": "12953:36:35",
                                "statements": [
                                  {
                                    "nativeSrc": "12955:32:35",
                                    "nodeType": "YulAssignment",
                                    "src": "12955:32:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "12969:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "12969:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "12980:1:35",
                                              "nodeType": "YulLiteral",
                                              "src": "12980:1:35",
                                              "type": "",
                                              "value": "2"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "12983:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "12983:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "12976:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "12976:3:35"
                                          },
                                          "nativeSrc": "12976:10:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "12976:10:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "12965:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "12965:3:35"
                                      },
                                      "nativeSrc": "12965:22:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "12965:22:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "12955:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "12955:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "12944:45:35",
                              "nodeType": "YulCase",
                              "src": "12944:45:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "12949:3:35",
                                "nodeType": "YulLiteral",
                                "src": "12949:3:35",
                                "type": "",
                                "value": "100"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13008:36:35",
                                "nodeType": "YulBlock",
                                "src": "13008:36:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13010:32:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13010:32:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13024:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "13024:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13035:1:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13035:1:35",
                                              "type": "",
                                              "value": "3"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13038:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13038:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "13031:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "13031:3:35"
                                          },
                                          "nativeSrc": "13031:10:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "13031:10:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13020:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13020:3:35"
                                      },
                                      "nativeSrc": "13020:22:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13020:22:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13010:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13010:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "12998:46:35",
                              "nodeType": "YulCase",
                              "src": "12998:46:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13003:4:35",
                                "nodeType": "YulLiteral",
                                "src": "13003:4:35",
                                "type": "",
                                "value": "1000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13064:36:35",
                                "nodeType": "YulBlock",
                                "src": "13064:36:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13066:32:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13066:32:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13080:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "13080:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13091:1:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13091:1:35",
                                              "type": "",
                                              "value": "4"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13094:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13094:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "13087:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "13087:3:35"
                                          },
                                          "nativeSrc": "13087:10:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "13087:10:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13076:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13076:3:35"
                                      },
                                      "nativeSrc": "13076:22:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13076:22:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13066:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13066:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13053:47:35",
                              "nodeType": "YulCase",
                              "src": "13053:47:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13058:5:35",
                                "nodeType": "YulLiteral",
                                "src": "13058:5:35",
                                "type": "",
                                "value": "10000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13121:36:35",
                                "nodeType": "YulBlock",
                                "src": "13121:36:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13123:32:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13123:32:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13137:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "13137:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13148:1:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13148:1:35",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13151:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13151:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "13144:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "13144:3:35"
                                          },
                                          "nativeSrc": "13144:10:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "13144:10:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13133:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13133:3:35"
                                      },
                                      "nativeSrc": "13133:22:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13133:22:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13123:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13123:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13109:48:35",
                              "nodeType": "YulCase",
                              "src": "13109:48:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13114:6:35",
                                "nodeType": "YulLiteral",
                                "src": "13114:6:35",
                                "type": "",
                                "value": "100000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13179:36:35",
                                "nodeType": "YulBlock",
                                "src": "13179:36:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13181:32:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13181:32:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13195:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "13195:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13206:1:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13206:1:35",
                                              "type": "",
                                              "value": "6"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13209:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13209:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "13202:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "13202:3:35"
                                          },
                                          "nativeSrc": "13202:10:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "13202:10:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13191:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13191:3:35"
                                      },
                                      "nativeSrc": "13191:22:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13191:22:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13181:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13181:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13166:49:35",
                              "nodeType": "YulCase",
                              "src": "13166:49:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13171:7:35",
                                "nodeType": "YulLiteral",
                                "src": "13171:7:35",
                                "type": "",
                                "value": "1000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13238:36:35",
                                "nodeType": "YulBlock",
                                "src": "13238:36:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13240:32:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13240:32:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13254:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "13254:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13265:1:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13265:1:35",
                                              "type": "",
                                              "value": "7"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13268:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13268:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "13261:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "13261:3:35"
                                          },
                                          "nativeSrc": "13261:10:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "13261:10:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13250:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13250:3:35"
                                      },
                                      "nativeSrc": "13250:22:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13250:22:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13240:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13240:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13224:50:35",
                              "nodeType": "YulCase",
                              "src": "13224:50:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13229:8:35",
                                "nodeType": "YulLiteral",
                                "src": "13229:8:35",
                                "type": "",
                                "value": "10000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13298:36:35",
                                "nodeType": "YulBlock",
                                "src": "13298:36:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13300:32:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13300:32:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13314:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "13314:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13325:1:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13325:1:35",
                                              "type": "",
                                              "value": "8"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13328:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13328:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "13321:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "13321:3:35"
                                          },
                                          "nativeSrc": "13321:10:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "13321:10:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13310:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13310:3:35"
                                      },
                                      "nativeSrc": "13310:22:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13310:22:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13300:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13300:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13283:51:35",
                              "nodeType": "YulCase",
                              "src": "13283:51:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13288:9:35",
                                "nodeType": "YulLiteral",
                                "src": "13288:9:35",
                                "type": "",
                                "value": "100000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13359:36:35",
                                "nodeType": "YulBlock",
                                "src": "13359:36:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13361:32:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13361:32:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13375:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "13375:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13386:1:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13386:1:35",
                                              "type": "",
                                              "value": "9"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13389:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13389:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "13382:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "13382:3:35"
                                          },
                                          "nativeSrc": "13382:10:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "13382:10:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13371:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13371:3:35"
                                      },
                                      "nativeSrc": "13371:22:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13371:22:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13361:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13361:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13343:52:35",
                              "nodeType": "YulCase",
                              "src": "13343:52:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13348:10:35",
                                "nodeType": "YulLiteral",
                                "src": "13348:10:35",
                                "type": "",
                                "value": "1000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13421:37:35",
                                "nodeType": "YulBlock",
                                "src": "13421:37:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13423:33:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13423:33:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13437:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "13437:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13448:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13448:2:35",
                                              "type": "",
                                              "value": "10"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13452:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13452:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "13444:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "13444:3:35"
                                          },
                                          "nativeSrc": "13444:11:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "13444:11:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13433:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13433:3:35"
                                      },
                                      "nativeSrc": "13433:23:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13433:23:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13423:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13423:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13404:54:35",
                              "nodeType": "YulCase",
                              "src": "13404:54:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13409:11:35",
                                "nodeType": "YulLiteral",
                                "src": "13409:11:35",
                                "type": "",
                                "value": "10000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13485:37:35",
                                "nodeType": "YulBlock",
                                "src": "13485:37:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13487:33:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13487:33:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13501:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "13501:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13512:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13512:2:35",
                                              "type": "",
                                              "value": "11"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13516:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13516:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "13508:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "13508:3:35"
                                          },
                                          "nativeSrc": "13508:11:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "13508:11:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13497:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13497:3:35"
                                      },
                                      "nativeSrc": "13497:23:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13497:23:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13487:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13487:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13467:55:35",
                              "nodeType": "YulCase",
                              "src": "13467:55:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13472:12:35",
                                "nodeType": "YulLiteral",
                                "src": "13472:12:35",
                                "type": "",
                                "value": "100000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13550:37:35",
                                "nodeType": "YulBlock",
                                "src": "13550:37:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13552:33:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13552:33:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13566:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "13566:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13577:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13577:2:35",
                                              "type": "",
                                              "value": "12"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13581:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13581:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "13573:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "13573:3:35"
                                          },
                                          "nativeSrc": "13573:11:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "13573:11:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13562:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13562:3:35"
                                      },
                                      "nativeSrc": "13562:23:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13562:23:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13552:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13552:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13531:56:35",
                              "nodeType": "YulCase",
                              "src": "13531:56:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13536:13:35",
                                "nodeType": "YulLiteral",
                                "src": "13536:13:35",
                                "type": "",
                                "value": "1000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13616:37:35",
                                "nodeType": "YulBlock",
                                "src": "13616:37:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13618:33:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13618:33:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13632:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "13632:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13643:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13643:2:35",
                                              "type": "",
                                              "value": "13"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13647:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13647:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "13639:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "13639:3:35"
                                          },
                                          "nativeSrc": "13639:11:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "13639:11:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13628:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13628:3:35"
                                      },
                                      "nativeSrc": "13628:23:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13628:23:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13618:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13618:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13596:57:35",
                              "nodeType": "YulCase",
                              "src": "13596:57:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13601:14:35",
                                "nodeType": "YulLiteral",
                                "src": "13601:14:35",
                                "type": "",
                                "value": "10000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13683:37:35",
                                "nodeType": "YulBlock",
                                "src": "13683:37:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13685:33:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13685:33:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13699:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "13699:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13710:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13710:2:35",
                                              "type": "",
                                              "value": "14"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13714:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13714:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "13706:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "13706:3:35"
                                          },
                                          "nativeSrc": "13706:11:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "13706:11:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13695:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13695:3:35"
                                      },
                                      "nativeSrc": "13695:23:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13695:23:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13685:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13685:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13662:58:35",
                              "nodeType": "YulCase",
                              "src": "13662:58:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13667:15:35",
                                "nodeType": "YulLiteral",
                                "src": "13667:15:35",
                                "type": "",
                                "value": "100000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13751:37:35",
                                "nodeType": "YulBlock",
                                "src": "13751:37:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13753:33:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13753:33:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13767:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "13767:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13778:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13778:2:35",
                                              "type": "",
                                              "value": "15"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13782:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13782:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "13774:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "13774:3:35"
                                          },
                                          "nativeSrc": "13774:11:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "13774:11:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13763:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13763:3:35"
                                      },
                                      "nativeSrc": "13763:23:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13763:23:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13753:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13753:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13729:59:35",
                              "nodeType": "YulCase",
                              "src": "13729:59:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13734:16:35",
                                "nodeType": "YulLiteral",
                                "src": "13734:16:35",
                                "type": "",
                                "value": "1000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13820:37:35",
                                "nodeType": "YulBlock",
                                "src": "13820:37:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13822:33:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13822:33:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13836:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "13836:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13847:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13847:2:35",
                                              "type": "",
                                              "value": "16"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13851:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13851:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "13843:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "13843:3:35"
                                          },
                                          "nativeSrc": "13843:11:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "13843:11:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13832:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13832:3:35"
                                      },
                                      "nativeSrc": "13832:23:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13832:23:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13822:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13822:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13797:60:35",
                              "nodeType": "YulCase",
                              "src": "13797:60:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13802:17:35",
                                "nodeType": "YulLiteral",
                                "src": "13802:17:35",
                                "type": "",
                                "value": "10000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13890:37:35",
                                "nodeType": "YulBlock",
                                "src": "13890:37:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13892:33:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13892:33:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13906:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "13906:5:35"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13917:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13917:2:35",
                                              "type": "",
                                              "value": "17"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "13921:2:35",
                                              "nodeType": "YulLiteral",
                                              "src": "13921:2:35",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "13913:3:35",
                                            "nodeType": "YulIdentifier",
                                            "src": "13913:3:35"
                                          },
                                          "nativeSrc": "13913:11:35",
                                          "nodeType": "YulFunctionCall",
                                          "src": "13913:11:35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13902:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13902:3:35"
                                      },
                                      "nativeSrc": "13902:23:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13902:23:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13892:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13892:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13866:61:35",
                              "nodeType": "YulCase",
                              "src": "13866:61:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13871:18:35",
                                "nodeType": "YulLiteral",
                                "src": "13871:18:35",
                                "type": "",
                                "value": "100000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13961:15:35",
                                "nodeType": "YulBlock",
                                "src": "13961:15:35",
                                "statements": [
                                  {
                                    "nativeSrc": "13963:11:35",
                                    "nodeType": "YulAssignment",
                                    "src": "13963:11:35",
                                    "value": {
                                      "kind": "number",
                                      "nativeSrc": "13973:1:35",
                                      "nodeType": "YulLiteral",
                                      "src": "13973:1:35",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13963:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "13963:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13936:40:35",
                              "nodeType": "YulCase",
                              "src": "13936:40:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13941:19:35",
                                "nodeType": "YulLiteral",
                                "src": "13941:19:35",
                                "type": "",
                                "value": "1000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14011:19:35",
                                "nodeType": "YulBlock",
                                "src": "14011:19:35",
                                "statements": [
                                  {
                                    "nativeSrc": "14013:15:35",
                                    "nodeType": "YulAssignment",
                                    "src": "14013:15:35",
                                    "value": {
                                      "name": "uUNIT",
                                      "nativeSrc": "14023:5:35",
                                      "nodeType": "YulIdentifier",
                                      "src": "14023:5:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14013:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14013:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13985:45:35",
                              "nodeType": "YulCase",
                              "src": "13985:45:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13990:20:35",
                                "nodeType": "YulLiteral",
                                "src": "13990:20:35",
                                "type": "",
                                "value": "10000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14066:27:35",
                                "nodeType": "YulBlock",
                                "src": "14066:27:35",
                                "statements": [
                                  {
                                    "nativeSrc": "14068:23:35",
                                    "nodeType": "YulAssignment",
                                    "src": "14068:23:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14082:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "14082:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14089:1:35",
                                          "nodeType": "YulLiteral",
                                          "src": "14089:1:35",
                                          "type": "",
                                          "value": "2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14078:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14078:3:35"
                                      },
                                      "nativeSrc": "14078:13:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14078:13:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14068:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14068:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14039:54:35",
                              "nodeType": "YulCase",
                              "src": "14039:54:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14044:21:35",
                                "nodeType": "YulLiteral",
                                "src": "14044:21:35",
                                "type": "",
                                "value": "100000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14130:27:35",
                                "nodeType": "YulBlock",
                                "src": "14130:27:35",
                                "statements": [
                                  {
                                    "nativeSrc": "14132:23:35",
                                    "nodeType": "YulAssignment",
                                    "src": "14132:23:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14146:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "14146:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14153:1:35",
                                          "nodeType": "YulLiteral",
                                          "src": "14153:1:35",
                                          "type": "",
                                          "value": "3"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14142:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14142:3:35"
                                      },
                                      "nativeSrc": "14142:13:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14142:13:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14132:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14132:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14102:55:35",
                              "nodeType": "YulCase",
                              "src": "14102:55:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14107:22:35",
                                "nodeType": "YulLiteral",
                                "src": "14107:22:35",
                                "type": "",
                                "value": "1000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14195:27:35",
                                "nodeType": "YulBlock",
                                "src": "14195:27:35",
                                "statements": [
                                  {
                                    "nativeSrc": "14197:23:35",
                                    "nodeType": "YulAssignment",
                                    "src": "14197:23:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14211:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "14211:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14218:1:35",
                                          "nodeType": "YulLiteral",
                                          "src": "14218:1:35",
                                          "type": "",
                                          "value": "4"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14207:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14207:3:35"
                                      },
                                      "nativeSrc": "14207:13:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14207:13:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14197:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14197:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14166:56:35",
                              "nodeType": "YulCase",
                              "src": "14166:56:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14171:23:35",
                                "nodeType": "YulLiteral",
                                "src": "14171:23:35",
                                "type": "",
                                "value": "10000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14261:27:35",
                                "nodeType": "YulBlock",
                                "src": "14261:27:35",
                                "statements": [
                                  {
                                    "nativeSrc": "14263:23:35",
                                    "nodeType": "YulAssignment",
                                    "src": "14263:23:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14277:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "14277:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14284:1:35",
                                          "nodeType": "YulLiteral",
                                          "src": "14284:1:35",
                                          "type": "",
                                          "value": "5"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14273:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14273:3:35"
                                      },
                                      "nativeSrc": "14273:13:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14273:13:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14263:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14263:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14231:57:35",
                              "nodeType": "YulCase",
                              "src": "14231:57:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14236:24:35",
                                "nodeType": "YulLiteral",
                                "src": "14236:24:35",
                                "type": "",
                                "value": "100000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14328:27:35",
                                "nodeType": "YulBlock",
                                "src": "14328:27:35",
                                "statements": [
                                  {
                                    "nativeSrc": "14330:23:35",
                                    "nodeType": "YulAssignment",
                                    "src": "14330:23:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14344:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "14344:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14351:1:35",
                                          "nodeType": "YulLiteral",
                                          "src": "14351:1:35",
                                          "type": "",
                                          "value": "6"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14340:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14340:3:35"
                                      },
                                      "nativeSrc": "14340:13:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14340:13:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14330:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14330:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14297:58:35",
                              "nodeType": "YulCase",
                              "src": "14297:58:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14302:25:35",
                                "nodeType": "YulLiteral",
                                "src": "14302:25:35",
                                "type": "",
                                "value": "1000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14396:27:35",
                                "nodeType": "YulBlock",
                                "src": "14396:27:35",
                                "statements": [
                                  {
                                    "nativeSrc": "14398:23:35",
                                    "nodeType": "YulAssignment",
                                    "src": "14398:23:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14412:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "14412:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14419:1:35",
                                          "nodeType": "YulLiteral",
                                          "src": "14419:1:35",
                                          "type": "",
                                          "value": "7"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14408:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14408:3:35"
                                      },
                                      "nativeSrc": "14408:13:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14408:13:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14398:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14398:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14364:59:35",
                              "nodeType": "YulCase",
                              "src": "14364:59:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14369:26:35",
                                "nodeType": "YulLiteral",
                                "src": "14369:26:35",
                                "type": "",
                                "value": "10000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14465:27:35",
                                "nodeType": "YulBlock",
                                "src": "14465:27:35",
                                "statements": [
                                  {
                                    "nativeSrc": "14467:23:35",
                                    "nodeType": "YulAssignment",
                                    "src": "14467:23:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14481:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "14481:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14488:1:35",
                                          "nodeType": "YulLiteral",
                                          "src": "14488:1:35",
                                          "type": "",
                                          "value": "8"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14477:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14477:3:35"
                                      },
                                      "nativeSrc": "14477:13:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14477:13:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14467:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14467:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14432:60:35",
                              "nodeType": "YulCase",
                              "src": "14432:60:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14437:27:35",
                                "nodeType": "YulLiteral",
                                "src": "14437:27:35",
                                "type": "",
                                "value": "100000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14535:27:35",
                                "nodeType": "YulBlock",
                                "src": "14535:27:35",
                                "statements": [
                                  {
                                    "nativeSrc": "14537:23:35",
                                    "nodeType": "YulAssignment",
                                    "src": "14537:23:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14551:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "14551:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14558:1:35",
                                          "nodeType": "YulLiteral",
                                          "src": "14558:1:35",
                                          "type": "",
                                          "value": "9"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14547:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14547:3:35"
                                      },
                                      "nativeSrc": "14547:13:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14547:13:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14537:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14537:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14501:61:35",
                              "nodeType": "YulCase",
                              "src": "14501:61:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14506:28:35",
                                "nodeType": "YulLiteral",
                                "src": "14506:28:35",
                                "type": "",
                                "value": "1000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14606:28:35",
                                "nodeType": "YulBlock",
                                "src": "14606:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "14608:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "14608:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14622:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "14622:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14629:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "14629:2:35",
                                          "type": "",
                                          "value": "10"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14618:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14618:3:35"
                                      },
                                      "nativeSrc": "14618:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14618:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14608:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14608:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14571:63:35",
                              "nodeType": "YulCase",
                              "src": "14571:63:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14576:29:35",
                                "nodeType": "YulLiteral",
                                "src": "14576:29:35",
                                "type": "",
                                "value": "10000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14679:28:35",
                                "nodeType": "YulBlock",
                                "src": "14679:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "14681:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "14681:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14695:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "14695:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14702:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "14702:2:35",
                                          "type": "",
                                          "value": "11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14691:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14691:3:35"
                                      },
                                      "nativeSrc": "14691:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14691:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14681:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14681:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14643:64:35",
                              "nodeType": "YulCase",
                              "src": "14643:64:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14648:30:35",
                                "nodeType": "YulLiteral",
                                "src": "14648:30:35",
                                "type": "",
                                "value": "100000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14753:28:35",
                                "nodeType": "YulBlock",
                                "src": "14753:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "14755:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "14755:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14769:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "14769:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14776:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "14776:2:35",
                                          "type": "",
                                          "value": "12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14765:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14765:3:35"
                                      },
                                      "nativeSrc": "14765:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14765:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14755:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14755:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14716:65:35",
                              "nodeType": "YulCase",
                              "src": "14716:65:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14721:31:35",
                                "nodeType": "YulLiteral",
                                "src": "14721:31:35",
                                "type": "",
                                "value": "1000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14828:28:35",
                                "nodeType": "YulBlock",
                                "src": "14828:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "14830:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "14830:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14844:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "14844:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14851:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "14851:2:35",
                                          "type": "",
                                          "value": "13"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14840:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14840:3:35"
                                      },
                                      "nativeSrc": "14840:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14840:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14830:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14830:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14790:66:35",
                              "nodeType": "YulCase",
                              "src": "14790:66:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14795:32:35",
                                "nodeType": "YulLiteral",
                                "src": "14795:32:35",
                                "type": "",
                                "value": "10000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14904:28:35",
                                "nodeType": "YulBlock",
                                "src": "14904:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "14906:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "14906:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14920:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "14920:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14927:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "14927:2:35",
                                          "type": "",
                                          "value": "14"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14916:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14916:3:35"
                                      },
                                      "nativeSrc": "14916:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14916:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14906:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14906:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14865:67:35",
                              "nodeType": "YulCase",
                              "src": "14865:67:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14870:33:35",
                                "nodeType": "YulLiteral",
                                "src": "14870:33:35",
                                "type": "",
                                "value": "100000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14981:28:35",
                                "nodeType": "YulBlock",
                                "src": "14981:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "14983:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "14983:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14997:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "14997:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15004:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "15004:2:35",
                                          "type": "",
                                          "value": "15"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14993:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14993:3:35"
                                      },
                                      "nativeSrc": "14993:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14993:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14983:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "14983:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14941:68:35",
                              "nodeType": "YulCase",
                              "src": "14941:68:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14946:34:35",
                                "nodeType": "YulLiteral",
                                "src": "14946:34:35",
                                "type": "",
                                "value": "1000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15059:28:35",
                                "nodeType": "YulBlock",
                                "src": "15059:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "15061:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "15061:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15075:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "15075:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15082:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "15082:2:35",
                                          "type": "",
                                          "value": "16"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15071:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15071:3:35"
                                      },
                                      "nativeSrc": "15071:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15071:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15061:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15061:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15018:69:35",
                              "nodeType": "YulCase",
                              "src": "15018:69:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15023:35:35",
                                "nodeType": "YulLiteral",
                                "src": "15023:35:35",
                                "type": "",
                                "value": "10000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15138:28:35",
                                "nodeType": "YulBlock",
                                "src": "15138:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "15140:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "15140:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15154:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "15154:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15161:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "15161:2:35",
                                          "type": "",
                                          "value": "17"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15150:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15150:3:35"
                                      },
                                      "nativeSrc": "15150:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15150:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15140:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15140:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15096:70:35",
                              "nodeType": "YulCase",
                              "src": "15096:70:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15101:36:35",
                                "nodeType": "YulLiteral",
                                "src": "15101:36:35",
                                "type": "",
                                "value": "100000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15218:28:35",
                                "nodeType": "YulBlock",
                                "src": "15218:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "15220:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "15220:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15234:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "15234:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15241:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "15241:2:35",
                                          "type": "",
                                          "value": "18"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15230:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15230:3:35"
                                      },
                                      "nativeSrc": "15230:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15230:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15220:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15220:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15175:71:35",
                              "nodeType": "YulCase",
                              "src": "15175:71:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15180:37:35",
                                "nodeType": "YulLiteral",
                                "src": "15180:37:35",
                                "type": "",
                                "value": "1000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15299:28:35",
                                "nodeType": "YulBlock",
                                "src": "15299:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "15301:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "15301:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15315:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "15315:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15322:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "15322:2:35",
                                          "type": "",
                                          "value": "19"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15311:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15311:3:35"
                                      },
                                      "nativeSrc": "15311:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15311:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15301:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15301:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15255:72:35",
                              "nodeType": "YulCase",
                              "src": "15255:72:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15260:38:35",
                                "nodeType": "YulLiteral",
                                "src": "15260:38:35",
                                "type": "",
                                "value": "10000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15381:28:35",
                                "nodeType": "YulBlock",
                                "src": "15381:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "15383:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "15383:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15397:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "15397:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15404:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "15404:2:35",
                                          "type": "",
                                          "value": "20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15393:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15393:3:35"
                                      },
                                      "nativeSrc": "15393:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15393:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15383:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15383:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15336:73:35",
                              "nodeType": "YulCase",
                              "src": "15336:73:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15341:39:35",
                                "nodeType": "YulLiteral",
                                "src": "15341:39:35",
                                "type": "",
                                "value": "100000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15464:28:35",
                                "nodeType": "YulBlock",
                                "src": "15464:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "15466:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "15466:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15480:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "15480:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15487:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "15487:2:35",
                                          "type": "",
                                          "value": "21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15476:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15476:3:35"
                                      },
                                      "nativeSrc": "15476:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15476:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15466:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15466:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15418:74:35",
                              "nodeType": "YulCase",
                              "src": "15418:74:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15423:40:35",
                                "nodeType": "YulLiteral",
                                "src": "15423:40:35",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15548:28:35",
                                "nodeType": "YulBlock",
                                "src": "15548:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "15550:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "15550:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15564:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "15564:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15571:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "15571:2:35",
                                          "type": "",
                                          "value": "22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15560:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15560:3:35"
                                      },
                                      "nativeSrc": "15560:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15560:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15550:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15550:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15501:75:35",
                              "nodeType": "YulCase",
                              "src": "15501:75:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15506:41:35",
                                "nodeType": "YulLiteral",
                                "src": "15506:41:35",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15633:28:35",
                                "nodeType": "YulBlock",
                                "src": "15633:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "15635:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "15635:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15649:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "15649:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15656:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "15656:2:35",
                                          "type": "",
                                          "value": "23"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15645:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15645:3:35"
                                      },
                                      "nativeSrc": "15645:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15645:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15635:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15635:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15585:76:35",
                              "nodeType": "YulCase",
                              "src": "15585:76:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15590:42:35",
                                "nodeType": "YulLiteral",
                                "src": "15590:42:35",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15719:28:35",
                                "nodeType": "YulBlock",
                                "src": "15719:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "15721:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "15721:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15735:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "15735:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15742:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "15742:2:35",
                                          "type": "",
                                          "value": "24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15731:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15731:3:35"
                                      },
                                      "nativeSrc": "15731:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15731:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15721:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15721:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15670:77:35",
                              "nodeType": "YulCase",
                              "src": "15670:77:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15675:43:35",
                                "nodeType": "YulLiteral",
                                "src": "15675:43:35",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15806:28:35",
                                "nodeType": "YulBlock",
                                "src": "15806:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "15808:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "15808:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15822:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "15822:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15829:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "15829:2:35",
                                          "type": "",
                                          "value": "25"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15818:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15818:3:35"
                                      },
                                      "nativeSrc": "15818:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15818:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15808:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15808:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15756:78:35",
                              "nodeType": "YulCase",
                              "src": "15756:78:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15761:44:35",
                                "nodeType": "YulLiteral",
                                "src": "15761:44:35",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15894:28:35",
                                "nodeType": "YulBlock",
                                "src": "15894:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "15896:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "15896:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15910:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "15910:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15917:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "15917:2:35",
                                          "type": "",
                                          "value": "26"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15906:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15906:3:35"
                                      },
                                      "nativeSrc": "15906:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15906:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15896:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15896:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15843:79:35",
                              "nodeType": "YulCase",
                              "src": "15843:79:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15848:45:35",
                                "nodeType": "YulLiteral",
                                "src": "15848:45:35",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15983:28:35",
                                "nodeType": "YulBlock",
                                "src": "15983:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "15985:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "15985:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15999:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "15999:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "16006:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "16006:2:35",
                                          "type": "",
                                          "value": "27"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15995:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15995:3:35"
                                      },
                                      "nativeSrc": "15995:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15995:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15985:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "15985:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15931:80:35",
                              "nodeType": "YulCase",
                              "src": "15931:80:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15936:46:35",
                                "nodeType": "YulLiteral",
                                "src": "15936:46:35",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "16073:28:35",
                                "nodeType": "YulBlock",
                                "src": "16073:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "16075:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "16075:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "16089:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "16089:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "16096:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "16096:2:35",
                                          "type": "",
                                          "value": "28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "16085:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16085:3:35"
                                      },
                                      "nativeSrc": "16085:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "16085:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "16075:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16075:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "16020:81:35",
                              "nodeType": "YulCase",
                              "src": "16020:81:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "16025:47:35",
                                "nodeType": "YulLiteral",
                                "src": "16025:47:35",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "16164:28:35",
                                "nodeType": "YulBlock",
                                "src": "16164:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "16166:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "16166:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "16180:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "16180:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "16187:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "16187:2:35",
                                          "type": "",
                                          "value": "29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "16176:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16176:3:35"
                                      },
                                      "nativeSrc": "16176:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "16176:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "16166:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16166:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "16110:82:35",
                              "nodeType": "YulCase",
                              "src": "16110:82:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "16115:48:35",
                                "nodeType": "YulLiteral",
                                "src": "16115:48:35",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "16256:28:35",
                                "nodeType": "YulBlock",
                                "src": "16256:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "16258:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "16258:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "16272:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "16272:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "16279:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "16279:2:35",
                                          "type": "",
                                          "value": "30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "16268:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16268:3:35"
                                      },
                                      "nativeSrc": "16268:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "16268:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "16258:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16258:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "16201:83:35",
                              "nodeType": "YulCase",
                              "src": "16201:83:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "16206:49:35",
                                "nodeType": "YulLiteral",
                                "src": "16206:49:35",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "16349:28:35",
                                "nodeType": "YulBlock",
                                "src": "16349:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "16351:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "16351:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "16365:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "16365:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "16372:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "16372:2:35",
                                          "type": "",
                                          "value": "31"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "16361:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16361:3:35"
                                      },
                                      "nativeSrc": "16361:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "16361:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "16351:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16351:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "16293:84:35",
                              "nodeType": "YulCase",
                              "src": "16293:84:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "16298:50:35",
                                "nodeType": "YulLiteral",
                                "src": "16298:50:35",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "16443:28:35",
                                "nodeType": "YulBlock",
                                "src": "16443:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "16445:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "16445:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "16459:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "16459:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "16466:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "16466:2:35",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "16455:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16455:3:35"
                                      },
                                      "nativeSrc": "16455:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "16455:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "16445:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16445:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "16386:85:35",
                              "nodeType": "YulCase",
                              "src": "16386:85:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "16391:51:35",
                                "nodeType": "YulLiteral",
                                "src": "16391:51:35",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "16538:28:35",
                                "nodeType": "YulBlock",
                                "src": "16538:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "16540:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "16540:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "16554:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "16554:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "16561:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "16561:2:35",
                                          "type": "",
                                          "value": "33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "16550:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16550:3:35"
                                      },
                                      "nativeSrc": "16550:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "16550:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "16540:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16540:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "16480:86:35",
                              "nodeType": "YulCase",
                              "src": "16480:86:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "16485:52:35",
                                "nodeType": "YulLiteral",
                                "src": "16485:52:35",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "16634:28:35",
                                "nodeType": "YulBlock",
                                "src": "16634:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "16636:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "16636:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "16650:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "16650:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "16657:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "16657:2:35",
                                          "type": "",
                                          "value": "34"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "16646:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16646:3:35"
                                      },
                                      "nativeSrc": "16646:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "16646:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "16636:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16636:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "16575:87:35",
                              "nodeType": "YulCase",
                              "src": "16575:87:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "16580:53:35",
                                "nodeType": "YulLiteral",
                                "src": "16580:53:35",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "16731:28:35",
                                "nodeType": "YulBlock",
                                "src": "16731:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "16733:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "16733:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "16747:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "16747:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "16754:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "16754:2:35",
                                          "type": "",
                                          "value": "35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "16743:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16743:3:35"
                                      },
                                      "nativeSrc": "16743:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "16743:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "16733:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16733:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "16671:88:35",
                              "nodeType": "YulCase",
                              "src": "16671:88:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "16676:54:35",
                                "nodeType": "YulLiteral",
                                "src": "16676:54:35",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "16829:28:35",
                                "nodeType": "YulBlock",
                                "src": "16829:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "16831:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "16831:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "16845:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "16845:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "16852:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "16852:2:35",
                                          "type": "",
                                          "value": "36"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "16841:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16841:3:35"
                                      },
                                      "nativeSrc": "16841:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "16841:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "16831:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16831:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "16768:89:35",
                              "nodeType": "YulCase",
                              "src": "16768:89:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "16773:55:35",
                                "nodeType": "YulLiteral",
                                "src": "16773:55:35",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "16928:28:35",
                                "nodeType": "YulBlock",
                                "src": "16928:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "16930:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "16930:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "16944:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "16944:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "16951:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "16951:2:35",
                                          "type": "",
                                          "value": "37"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "16940:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16940:3:35"
                                      },
                                      "nativeSrc": "16940:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "16940:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "16930:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "16930:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "16866:90:35",
                              "nodeType": "YulCase",
                              "src": "16866:90:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "16871:56:35",
                                "nodeType": "YulLiteral",
                                "src": "16871:56:35",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "17028:28:35",
                                "nodeType": "YulBlock",
                                "src": "17028:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "17030:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "17030:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "17044:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "17044:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "17051:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "17051:2:35",
                                          "type": "",
                                          "value": "38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "17040:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17040:3:35"
                                      },
                                      "nativeSrc": "17040:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "17040:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "17030:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17030:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "16965:91:35",
                              "nodeType": "YulCase",
                              "src": "16965:91:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "16970:57:35",
                                "nodeType": "YulLiteral",
                                "src": "16970:57:35",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "17129:28:35",
                                "nodeType": "YulBlock",
                                "src": "17129:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "17131:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "17131:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "17145:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "17145:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "17152:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "17152:2:35",
                                          "type": "",
                                          "value": "39"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "17141:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17141:3:35"
                                      },
                                      "nativeSrc": "17141:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "17141:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "17131:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17131:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "17065:92:35",
                              "nodeType": "YulCase",
                              "src": "17065:92:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "17070:58:35",
                                "nodeType": "YulLiteral",
                                "src": "17070:58:35",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "17231:28:35",
                                "nodeType": "YulBlock",
                                "src": "17231:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "17233:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "17233:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "17247:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "17247:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "17254:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "17254:2:35",
                                          "type": "",
                                          "value": "40"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "17243:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17243:3:35"
                                      },
                                      "nativeSrc": "17243:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "17243:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "17233:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17233:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "17166:93:35",
                              "nodeType": "YulCase",
                              "src": "17166:93:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "17171:59:35",
                                "nodeType": "YulLiteral",
                                "src": "17171:59:35",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "17334:28:35",
                                "nodeType": "YulBlock",
                                "src": "17334:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "17336:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "17336:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "17350:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "17350:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "17357:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "17357:2:35",
                                          "type": "",
                                          "value": "41"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "17346:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17346:3:35"
                                      },
                                      "nativeSrc": "17346:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "17346:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "17336:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17336:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "17268:94:35",
                              "nodeType": "YulCase",
                              "src": "17268:94:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "17273:60:35",
                                "nodeType": "YulLiteral",
                                "src": "17273:60:35",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "17438:28:35",
                                "nodeType": "YulBlock",
                                "src": "17438:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "17440:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "17440:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "17454:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "17454:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "17461:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "17461:2:35",
                                          "type": "",
                                          "value": "42"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "17450:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17450:3:35"
                                      },
                                      "nativeSrc": "17450:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "17450:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "17440:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17440:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "17371:95:35",
                              "nodeType": "YulCase",
                              "src": "17371:95:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "17376:61:35",
                                "nodeType": "YulLiteral",
                                "src": "17376:61:35",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "17543:28:35",
                                "nodeType": "YulBlock",
                                "src": "17543:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "17545:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "17545:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "17559:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "17559:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "17566:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "17566:2:35",
                                          "type": "",
                                          "value": "43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "17555:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17555:3:35"
                                      },
                                      "nativeSrc": "17555:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "17555:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "17545:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17545:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "17475:96:35",
                              "nodeType": "YulCase",
                              "src": "17475:96:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "17480:62:35",
                                "nodeType": "YulLiteral",
                                "src": "17480:62:35",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "17649:28:35",
                                "nodeType": "YulBlock",
                                "src": "17649:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "17651:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "17651:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "17665:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "17665:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "17672:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "17672:2:35",
                                          "type": "",
                                          "value": "44"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "17661:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17661:3:35"
                                      },
                                      "nativeSrc": "17661:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "17661:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "17651:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17651:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "17580:97:35",
                              "nodeType": "YulCase",
                              "src": "17580:97:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "17585:63:35",
                                "nodeType": "YulLiteral",
                                "src": "17585:63:35",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "17756:28:35",
                                "nodeType": "YulBlock",
                                "src": "17756:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "17758:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "17758:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "17772:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "17772:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "17779:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "17779:2:35",
                                          "type": "",
                                          "value": "45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "17768:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17768:3:35"
                                      },
                                      "nativeSrc": "17768:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "17768:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "17758:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17758:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "17686:98:35",
                              "nodeType": "YulCase",
                              "src": "17686:98:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "17691:64:35",
                                "nodeType": "YulLiteral",
                                "src": "17691:64:35",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "17864:28:35",
                                "nodeType": "YulBlock",
                                "src": "17864:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "17866:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "17866:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "17880:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "17880:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "17887:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "17887:2:35",
                                          "type": "",
                                          "value": "46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "17876:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17876:3:35"
                                      },
                                      "nativeSrc": "17876:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "17876:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "17866:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17866:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "17793:99:35",
                              "nodeType": "YulCase",
                              "src": "17793:99:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "17798:65:35",
                                "nodeType": "YulLiteral",
                                "src": "17798:65:35",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "17973:28:35",
                                "nodeType": "YulBlock",
                                "src": "17973:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "17975:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "17975:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "17989:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "17989:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "17996:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "17996:2:35",
                                          "type": "",
                                          "value": "47"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "17985:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17985:3:35"
                                      },
                                      "nativeSrc": "17985:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "17985:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "17975:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "17975:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "17901:100:35",
                              "nodeType": "YulCase",
                              "src": "17901:100:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "17906:66:35",
                                "nodeType": "YulLiteral",
                                "src": "17906:66:35",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "18083:28:35",
                                "nodeType": "YulBlock",
                                "src": "18083:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "18085:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "18085:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "18099:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "18099:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "18106:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "18106:2:35",
                                          "type": "",
                                          "value": "48"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "18095:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18095:3:35"
                                      },
                                      "nativeSrc": "18095:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "18095:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "18085:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18085:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "18010:101:35",
                              "nodeType": "YulCase",
                              "src": "18010:101:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "18015:67:35",
                                "nodeType": "YulLiteral",
                                "src": "18015:67:35",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "18194:28:35",
                                "nodeType": "YulBlock",
                                "src": "18194:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "18196:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "18196:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "18210:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "18210:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "18217:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "18217:2:35",
                                          "type": "",
                                          "value": "49"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "18206:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18206:3:35"
                                      },
                                      "nativeSrc": "18206:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "18206:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "18196:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18196:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "18120:102:35",
                              "nodeType": "YulCase",
                              "src": "18120:102:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "18125:68:35",
                                "nodeType": "YulLiteral",
                                "src": "18125:68:35",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "18306:28:35",
                                "nodeType": "YulBlock",
                                "src": "18306:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "18308:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "18308:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "18322:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "18322:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "18329:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "18329:2:35",
                                          "type": "",
                                          "value": "50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "18318:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18318:3:35"
                                      },
                                      "nativeSrc": "18318:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "18318:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "18308:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18308:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "18231:103:35",
                              "nodeType": "YulCase",
                              "src": "18231:103:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "18236:69:35",
                                "nodeType": "YulLiteral",
                                "src": "18236:69:35",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "18419:28:35",
                                "nodeType": "YulBlock",
                                "src": "18419:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "18421:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "18421:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "18435:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "18435:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "18442:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "18442:2:35",
                                          "type": "",
                                          "value": "51"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "18431:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18431:3:35"
                                      },
                                      "nativeSrc": "18431:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "18431:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "18421:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18421:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "18343:104:35",
                              "nodeType": "YulCase",
                              "src": "18343:104:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "18348:70:35",
                                "nodeType": "YulLiteral",
                                "src": "18348:70:35",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "18533:28:35",
                                "nodeType": "YulBlock",
                                "src": "18533:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "18535:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "18535:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "18549:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "18549:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "18556:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "18556:2:35",
                                          "type": "",
                                          "value": "52"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "18545:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18545:3:35"
                                      },
                                      "nativeSrc": "18545:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "18545:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "18535:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18535:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "18456:105:35",
                              "nodeType": "YulCase",
                              "src": "18456:105:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "18461:71:35",
                                "nodeType": "YulLiteral",
                                "src": "18461:71:35",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "18648:28:35",
                                "nodeType": "YulBlock",
                                "src": "18648:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "18650:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "18650:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "18664:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "18664:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "18671:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "18671:2:35",
                                          "type": "",
                                          "value": "53"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "18660:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18660:3:35"
                                      },
                                      "nativeSrc": "18660:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "18660:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "18650:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18650:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "18570:106:35",
                              "nodeType": "YulCase",
                              "src": "18570:106:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "18575:72:35",
                                "nodeType": "YulLiteral",
                                "src": "18575:72:35",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "18764:28:35",
                                "nodeType": "YulBlock",
                                "src": "18764:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "18766:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "18766:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "18780:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "18780:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "18787:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "18787:2:35",
                                          "type": "",
                                          "value": "54"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "18776:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18776:3:35"
                                      },
                                      "nativeSrc": "18776:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "18776:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "18766:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18766:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "18685:107:35",
                              "nodeType": "YulCase",
                              "src": "18685:107:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "18690:73:35",
                                "nodeType": "YulLiteral",
                                "src": "18690:73:35",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "18881:28:35",
                                "nodeType": "YulBlock",
                                "src": "18881:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "18883:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "18883:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "18897:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "18897:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "18904:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "18904:2:35",
                                          "type": "",
                                          "value": "55"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "18893:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18893:3:35"
                                      },
                                      "nativeSrc": "18893:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "18893:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "18883:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "18883:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "18801:108:35",
                              "nodeType": "YulCase",
                              "src": "18801:108:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "18806:74:35",
                                "nodeType": "YulLiteral",
                                "src": "18806:74:35",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "18999:28:35",
                                "nodeType": "YulBlock",
                                "src": "18999:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "19001:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "19001:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "19015:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "19015:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "19022:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "19022:2:35",
                                          "type": "",
                                          "value": "56"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "19011:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "19011:3:35"
                                      },
                                      "nativeSrc": "19011:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "19011:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "19001:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "19001:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "18918:109:35",
                              "nodeType": "YulCase",
                              "src": "18918:109:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "18923:75:35",
                                "nodeType": "YulLiteral",
                                "src": "18923:75:35",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "19118:28:35",
                                "nodeType": "YulBlock",
                                "src": "19118:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "19120:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "19120:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "19134:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "19134:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "19141:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "19141:2:35",
                                          "type": "",
                                          "value": "57"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "19130:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "19130:3:35"
                                      },
                                      "nativeSrc": "19130:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "19130:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "19120:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "19120:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "19036:110:35",
                              "nodeType": "YulCase",
                              "src": "19036:110:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "19041:76:35",
                                "nodeType": "YulLiteral",
                                "src": "19041:76:35",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "19238:28:35",
                                "nodeType": "YulBlock",
                                "src": "19238:28:35",
                                "statements": [
                                  {
                                    "nativeSrc": "19240:24:35",
                                    "nodeType": "YulAssignment",
                                    "src": "19240:24:35",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "19254:5:35",
                                          "nodeType": "YulIdentifier",
                                          "src": "19254:5:35"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "19261:2:35",
                                          "nodeType": "YulLiteral",
                                          "src": "19261:2:35",
                                          "type": "",
                                          "value": "58"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "19250:3:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "19250:3:35"
                                      },
                                      "nativeSrc": "19250:14:35",
                                      "nodeType": "YulFunctionCall",
                                      "src": "19250:14:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "19240:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "19240:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "19155:111:35",
                              "nodeType": "YulCase",
                              "src": "19155:111:35",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "19160:77:35",
                                "nodeType": "YulLiteral",
                                "src": "19160:77:35",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "19283:26:35",
                                "nodeType": "YulBlock",
                                "src": "19283:26:35",
                                "statements": [
                                  {
                                    "nativeSrc": "19285:22:35",
                                    "nodeType": "YulAssignment",
                                    "src": "19285:22:35",
                                    "value": {
                                      "name": "uMAX_SD59x18",
                                      "nativeSrc": "19295:12:35",
                                      "nodeType": "YulIdentifier",
                                      "src": "19295:12:35"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "19285:6:35",
                                        "nodeType": "YulIdentifier",
                                        "src": "19285:6:35"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "19275:34:35",
                              "nodeType": "YulCase",
                              "src": "19275:34:35",
                              "value": "default"
                            }
                          ],
                          "expression": {
                            "name": "x",
                            "nativeSrc": "12829:1:35",
                            "nodeType": "YulIdentifier",
                            "src": "12829:1:35"
                          },
                          "nativeSrc": "12822:6487:35",
                          "nodeType": "YulSwitch",
                          "src": "12822:6487:35"
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12848:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12901:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12955:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13010:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13066:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13123:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13181:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13240:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13300:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13361:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13423:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13487:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13552:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13618:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13685:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13753:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13822:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13892:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13963:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14013:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14068:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14132:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14197:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14263:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14330:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14398:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14467:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14537:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14608:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14681:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14755:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14830:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14906:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14983:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15061:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15140:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15220:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15301:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15383:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15466:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15550:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15635:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15721:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15808:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15896:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15985:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16075:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16166:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16258:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16351:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16445:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16540:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16636:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16733:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16831:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16930:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17030:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17131:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17233:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17336:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17440:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17545:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17651:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17758:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17866:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17975:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18085:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18196:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18308:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18421:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18535:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18650:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18766:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18883:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19001:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19120:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19240:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11116,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19285:6:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9662,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19295:12:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12862:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12915:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12969:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13024:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13080:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13137:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13195:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13254:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13314:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13375:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13437:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13501:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13566:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13632:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13699:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13767:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13836:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13906:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14023:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14082:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14146:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14211:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14277:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14344:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14412:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14481:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14551:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14622:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14695:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14769:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14844:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14920:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14997:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15075:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15154:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15234:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15315:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15397:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15480:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15564:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15649:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15735:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15822:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15910:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15999:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16089:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16180:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16272:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16365:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16459:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16554:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16650:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16747:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16845:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16944:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17044:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17145:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17247:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17350:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17454:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17559:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17665:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17772:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17880:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17989:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18099:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18210:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18322:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18435:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18549:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18664:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18780:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "18897:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19015:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19134:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 9716,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "19254:5:35",
                        "valueSize": 1
                      },
                      {
                        "declaration": 11112,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12829:1:35",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 11135,
                    "nodeType": "InlineAssembly",
                    "src": "12787:6528:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 11140,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 11136,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11116,
                            "src": "19325:6:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "id": 11137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19332:6:35",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9548,
                          "src": "19325:13:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (SD59x18) pure returns (int256)"
                          }
                        },
                        "id": 11138,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19325:15:35",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "id": 11139,
                        "name": "uMAX_SD59x18",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9662,
                        "src": "19344:12:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "19325:31:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 11157,
                    "nodeType": "IfStatement",
                    "src": "19321:198:35",
                    "trueBody": {
                      "id": 11156,
                      "nodeType": "Block",
                      "src": "19358:161:35",
                      "statements": [
                        {
                          "id": 11155,
                          "nodeType": "UncheckedBlock",
                          "src": "19368:145:35",
                          "statements": [
                            {
                              "expression": {
                                "id": 11153,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11141,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11116,
                                  "src": "19452:6:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 11151,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "id": 11149,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                              "arguments": [
                                                {
                                                  "id": 11144,
                                                  "name": "x",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 11112,
                                                  "src": "19471:1:35",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                                    "typeString": "SD59x18"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                                    "typeString": "SD59x18"
                                                  }
                                                ],
                                                "id": 11143,
                                                "name": "log2",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 11301,
                                                "src": "19466:4:35",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                                  "typeString": "function (SD59x18) pure returns (SD59x18)"
                                                }
                                              },
                                              "id": 11145,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "19466:7:35",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                                "typeString": "SD59x18"
                                              }
                                            },
                                            "id": 11146,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "19474:6:35",
                                            "memberName": "unwrap",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 9548,
                                            "src": "19466:14:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                              "typeString": "function (SD59x18) pure returns (int256)"
                                            }
                                          },
                                          "id": 11147,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "19466:16:35",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 11148,
                                          "name": "uUNIT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9716,
                                          "src": "19485:5:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "src": "19466:24:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "id": 11150,
                                        "name": "uLOG2_10",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9640,
                                        "src": "19493:8:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "19466:35:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "id": 11142,
                                    "name": "wrap",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9565,
                                    "src": "19461:4:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                      "typeString": "function (int256) pure returns (SD59x18)"
                                    }
                                  },
                                  "id": 11152,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19461:41:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "src": "19452:50:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              "id": 11154,
                              "nodeType": "ExpressionStatement",
                              "src": "19452:50:35"
                            }
                          ]
                        }
                      ]
                    }
                  }
                ]
              },
              "documentation": {
                "id": 11109,
                "nodeType": "StructuredDocumentation",
                "src": "11956:527:35",
                "text": "@notice Calculates the common logarithm of x using the following formula:\n $$\n log_{10}{x} = log_2{x} / log_2{10}\n $$\n However, if x is an exact power of ten, a hard coded value is returned.\n @dev Notes:\n - Refer to the notes in {log2}.\n Requirements:\n - Refer to the requirements in {log2}.\n @param x The SD59x18 number for which to calculate the common logarithm.\n @return result The common logarithm as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 11159,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "log10",
              "nameLocation": "12492:5:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11113,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11112,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "12506:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11159,
                    "src": "12498:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11111,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11110,
                        "name": "SD59x18",
                        "nameLocations": [
                          "12498:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "12498:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "12498:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "12497:11:35"
              },
              "returnParameters": {
                "id": 11117,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11116,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "12531:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11159,
                    "src": "12523:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11115,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11114,
                        "name": "SD59x18",
                        "nameLocations": [
                          "12523:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "12523:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "12523:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "12522:16:35"
              },
              "scope": 11693,
              "src": "12483:7038:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11300,
                "nodeType": "Block",
                "src": "20323:1642:35",
                "statements": [
                  {
                    "assignments": [
                      11170
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11170,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "20336:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11300,
                        "src": "20329:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 11169,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20329:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 11174,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 11171,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11163,
                          "src": "20343:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 11172,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "20345:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "20343:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 11173,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20343:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "20329:24:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 11177,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 11175,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11170,
                        "src": "20363:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 11176,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20371:1:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "20363:9:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 11185,
                    "nodeType": "IfStatement",
                    "src": "20359:82:35",
                    "trueBody": {
                      "id": 11184,
                      "nodeType": "Block",
                      "src": "20374:67:35",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 11181,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11163,
                                "src": "20432:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 11178,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10435,
                                "src": "20391:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 11180,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "20398:33:35",
                              "memberName": "PRBMath_SD59x18_Log_InputTooSmall",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9903,
                              "src": "20391:40:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 11182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20391:43:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 11183,
                          "nodeType": "RevertStatement",
                          "src": "20384:50:35"
                        }
                      ]
                    }
                  },
                  {
                    "id": 11299,
                    "nodeType": "UncheckedBlock",
                    "src": "20447:1516:35",
                    "statements": [
                      {
                        "assignments": [
                          11187
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11187,
                            "mutability": "mutable",
                            "name": "sign",
                            "nameLocation": "20474:4:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 11299,
                            "src": "20467:11:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 11186,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20467:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11188,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20467:11:35"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 11191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11189,
                            "name": "xInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11170,
                            "src": "20492:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "id": 11190,
                            "name": "uUNIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9716,
                            "src": "20500:5:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "20492:13:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 11208,
                          "nodeType": "Block",
                          "src": "20546:136:35",
                          "statements": [
                            {
                              "expression": {
                                "id": 11200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11197,
                                  "name": "sign",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11187,
                                  "src": "20560:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 11199,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "20567:2:35",
                                  "subExpression": {
                                    "hexValue": "31",
                                    "id": 11198,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20568:1:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                },
                                "src": "20560:9:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 11201,
                              "nodeType": "ExpressionStatement",
                              "src": "20560:9:35"
                            },
                            {
                              "expression": {
                                "id": 11206,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11202,
                                  "name": "xInt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11170,
                                  "src": "20644:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 11205,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 11203,
                                    "name": "uUNIT_SQUARED",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9727,
                                    "src": "20651:13:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 11204,
                                    "name": "xInt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11170,
                                    "src": "20667:4:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "20651:20:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "20644:27:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 11207,
                              "nodeType": "ExpressionStatement",
                              "src": "20644:27:35"
                            }
                          ]
                        },
                        "id": 11209,
                        "nodeType": "IfStatement",
                        "src": "20488:194:35",
                        "trueBody": {
                          "id": 11196,
                          "nodeType": "Block",
                          "src": "20507:33:35",
                          "statements": [
                            {
                              "expression": {
                                "id": 11194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11192,
                                  "name": "sign",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11187,
                                  "src": "20521:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 11193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20528:1:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "20521:8:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 11195,
                              "nodeType": "ExpressionStatement",
                              "src": "20521:8:35"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          11211
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11211,
                            "mutability": "mutable",
                            "name": "n",
                            "nameLocation": "20756:1:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 11299,
                            "src": "20748:9:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11210,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20748:7:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11221,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 11218,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 11216,
                                    "name": "xInt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11170,
                                    "src": "20779:4:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 11217,
                                    "name": "uUNIT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9716,
                                    "src": "20786:5:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "20779:12:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 11215,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "20771:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 11214,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "20771:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 11219,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20771:21:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 11212,
                              "name": "Common",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10434,
                              "src": "20760:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_module_8329",
                                "typeString": "module \"@prb/math/src/Common.sol\""
                              }
                            },
                            "id": 11213,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "20767:3:35",
                            "memberName": "msb",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7781,
                            "src": "20760:10:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 11220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20760:33:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20748:45:35"
                      },
                      {
                        "assignments": [
                          11223
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11223,
                            "mutability": "mutable",
                            "name": "resultInt",
                            "nameLocation": "21000:9:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 11299,
                            "src": "20993:16:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 11222,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20993:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11230,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 11229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 11226,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11211,
                                "src": "21019:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 11225,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "21012:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 11224,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "21012:6:35",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 11227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21012:9:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 11228,
                            "name": "uUNIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9716,
                            "src": "21024:5:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "21012:17:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20993:36:35"
                      },
                      {
                        "assignments": [
                          11232
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11232,
                            "mutability": "mutable",
                            "name": "y",
                            "nameLocation": "21086:1:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 11299,
                            "src": "21079:8:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 11231,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21079:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11236,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 11235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11233,
                            "name": "xInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11170,
                            "src": "21090:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "id": 11234,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11211,
                            "src": "21098:1:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21090:9:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21079:20:35"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 11239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11237,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11232,
                            "src": "21179:1:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 11238,
                            "name": "uUNIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9716,
                            "src": "21184:5:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "21179:10:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11247,
                        "nodeType": "IfStatement",
                        "src": "21175:70:35",
                        "trueBody": {
                          "id": 11246,
                          "nodeType": "Block",
                          "src": "21191:54:35",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 11243,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 11241,
                                      "name": "resultInt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11223,
                                      "src": "21217:9:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 11242,
                                      "name": "sign",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11187,
                                      "src": "21229:4:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "src": "21217:16:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 11240,
                                  "name": "wrap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9565,
                                  "src": "21212:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                    "typeString": "function (int256) pure returns (SD59x18)"
                                  }
                                },
                                "id": 11244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21212:22:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              "functionReturnParameters": 11168,
                              "id": 11245,
                              "nodeType": "Return",
                              "src": "21205:29:35"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          11249
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11249,
                            "mutability": "mutable",
                            "name": "DOUBLE_UNIT",
                            "nameLocation": "21442:11:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 11299,
                            "src": "21435:18:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 11248,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21435:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11251,
                        "initialValue": {
                          "hexValue": "32653138",
                          "id": 11250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "21456:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2000000000000000000_by_1",
                            "typeString": "int_const 2000000000000000000"
                          },
                          "value": "2e18"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21435:25:35"
                      },
                      {
                        "body": {
                          "id": 11287,
                          "nodeType": "Block",
                          "src": "21526:370:35",
                          "statements": [
                            {
                              "expression": {
                                "id": 11270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11263,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11232,
                                  "src": "21540:1:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 11269,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "id": 11266,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 11264,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11232,
                                          "src": "21545:1:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 11265,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11232,
                                          "src": "21549:1:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "src": "21545:5:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      }
                                    ],
                                    "id": 11267,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "21544:7:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 11268,
                                    "name": "uUNIT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9716,
                                    "src": "21554:5:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "21544:15:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "21540:19:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 11271,
                              "nodeType": "ExpressionStatement",
                              "src": "21540:19:35"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 11274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11272,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11232,
                                  "src": "21642:1:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "id": 11273,
                                  "name": "DOUBLE_UNIT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11249,
                                  "src": "21647:11:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "21642:16:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 11286,
                              "nodeType": "IfStatement",
                              "src": "21638:248:35",
                              "trueBody": {
                                "id": 11285,
                                "nodeType": "Block",
                                "src": "21660:226:35",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 11279,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 11275,
                                        "name": "resultInt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11223,
                                        "src": "21737:9:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "id": 11278,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 11276,
                                          "name": "resultInt",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11223,
                                          "src": "21749:9:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "id": 11277,
                                          "name": "delta",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11253,
                                          "src": "21761:5:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "src": "21749:17:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "21737:29:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "id": 11280,
                                    "nodeType": "ExpressionStatement",
                                    "src": "21737:29:35"
                                  },
                                  {
                                    "expression": {
                                      "id": 11283,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 11281,
                                        "name": "y",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11232,
                                        "src": "21864:1:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": ">>=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 11282,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "21870:1:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "21864:7:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "id": 11284,
                                    "nodeType": "ExpressionStatement",
                                    "src": "21864:7:35"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 11258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11256,
                            "name": "delta",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11253,
                            "src": "21502:5:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 11257,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21510:1:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "21502:9:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11288,
                        "initializationExpression": {
                          "assignments": [
                            11253
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 11253,
                              "mutability": "mutable",
                              "name": "delta",
                              "nameLocation": "21482:5:35",
                              "nodeType": "VariableDeclaration",
                              "scope": 11288,
                              "src": "21475:12:35",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "typeName": {
                                "id": 11252,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "21475:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 11255,
                          "initialValue": {
                            "id": 11254,
                            "name": "uHALF_UNIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9629,
                            "src": "21490:10:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "21475:25:35"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 11261,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 11259,
                              "name": "delta",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11253,
                              "src": "21513:5:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": ">>=",
                            "rightHandSide": {
                              "hexValue": "31",
                              "id": 11260,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21523:1:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "21513:11:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "id": 11262,
                          "nodeType": "ExpressionStatement",
                          "src": "21513:11:35"
                        },
                        "nodeType": "ForStatement",
                        "src": "21470:426:35"
                      },
                      {
                        "expression": {
                          "id": 11291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11289,
                            "name": "resultInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11223,
                            "src": "21905:9:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "id": 11290,
                            "name": "sign",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11187,
                            "src": "21918:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "21905:17:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 11292,
                        "nodeType": "ExpressionStatement",
                        "src": "21905:17:35"
                      },
                      {
                        "expression": {
                          "id": 11297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11293,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11167,
                            "src": "21932:6:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 11295,
                                "name": "resultInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11223,
                                "src": "21946:9:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 11294,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9565,
                              "src": "21941:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (int256) pure returns (SD59x18)"
                              }
                            },
                            "id": 11296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21941:15:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "src": "21932:24:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 11298,
                        "nodeType": "ExpressionStatement",
                        "src": "21932:24:35"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 11160,
                "nodeType": "StructuredDocumentation",
                "src": "19523:745:35",
                "text": "@notice Calculates the binary logarithm of x using the iterative approximation algorithm:\n $$\n log_2{x} = n + log_2{y}, \\text{ where } y = x*2^{-n}, \\ y \\in [1, 2)\n $$\n For $0 \\leq x \\lt 1$, the input is inverted:\n $$\n log_2{x} = -log_2{\\frac{1}{x}}\n $$\n @dev See https://en.wikipedia.org/wiki/Binary_logarithm#Iterative_approximation.\n Notes:\n - Due to the lossy precision of the iterative approximation, the results are not perfectly accurate to the last decimal.\n Requirements:\n - x > 0\n @param x The SD59x18 number for which to calculate the binary logarithm.\n @return result The binary logarithm as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 11301,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "log2",
              "nameLocation": "20277:4:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11164,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11163,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "20290:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11301,
                    "src": "20282:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11162,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11161,
                        "name": "SD59x18",
                        "nameLocations": [
                          "20282:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "20282:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "20282:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "20281:11:35"
              },
              "returnParameters": {
                "id": 11168,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11167,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "20315:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11301,
                    "src": "20307:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11166,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11165,
                        "name": "SD59x18",
                        "nameLocations": [
                          "20307:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "20307:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "20307:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "20306:16:35"
              },
              "scope": 11693,
              "src": "20268:1697:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11429,
                "nodeType": "Block",
                "src": "22552:1074:35",
                "statements": [
                  {
                    "assignments": [
                      11315
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11315,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "22565:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11429,
                        "src": "22558:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 11314,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22558:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 11319,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 11316,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11305,
                          "src": "22572:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 11317,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "22574:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "22572:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 11318,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "22572:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "22558:24:35"
                  },
                  {
                    "assignments": [
                      11321
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11321,
                        "mutability": "mutable",
                        "name": "yInt",
                        "nameLocation": "22595:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11429,
                        "src": "22588:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 11320,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22588:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 11325,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 11322,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11308,
                          "src": "22602:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 11323,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "22604:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "22602:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 11324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "22602:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "22588:24:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 11332,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 11328,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 11326,
                          "name": "xInt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11315,
                          "src": "22622:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 11327,
                          "name": "uMIN_SD59x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9685,
                          "src": "22630:12:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "22622:20:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 11331,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 11329,
                          "name": "yInt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11321,
                          "src": "22646:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 11330,
                          "name": "uMIN_SD59x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9685,
                          "src": "22654:12:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "22646:20:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "22622:44:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 11339,
                    "nodeType": "IfStatement",
                    "src": "22618:116:35",
                    "trueBody": {
                      "id": 11338,
                      "nodeType": "Block",
                      "src": "22668:66:35",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 11333,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10435,
                                "src": "22685:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 11335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "22692:33:35",
                              "memberName": "PRBMath_SD59x18_Mul_InputTooSmall",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9906,
                              "src": "22685:40:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 11336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22685:42:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 11337,
                          "nodeType": "RevertStatement",
                          "src": "22678:49:35"
                        }
                      ]
                    }
                  },
                  {
                    "assignments": [
                      11341
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11341,
                        "mutability": "mutable",
                        "name": "xAbs",
                        "nameLocation": "22799:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11429,
                        "src": "22791:12:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11340,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22791:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 11342,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "22791:12:35"
                  },
                  {
                    "assignments": [
                      11344
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11344,
                        "mutability": "mutable",
                        "name": "yAbs",
                        "nameLocation": "22817:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11429,
                        "src": "22809:12:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11343,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22809:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 11345,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "22809:12:35"
                  },
                  {
                    "id": 11378,
                    "nodeType": "UncheckedBlock",
                    "src": "22827:133:35",
                    "statements": [
                      {
                        "expression": {
                          "id": 11360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11346,
                            "name": "xAbs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11341,
                            "src": "22847:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 11349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11347,
                                "name": "xInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11315,
                                "src": "22854:4:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 11348,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22861:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "22854:8:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "arguments": [
                                {
                                  "id": 11357,
                                  "name": "xInt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11315,
                                  "src": "22890:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 11356,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "22882:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 11355,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "22882:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 11358,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22882:13:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11359,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "22854:41:35",
                            "trueExpression": {
                              "arguments": [
                                {
                                  "id": 11353,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "22873:5:35",
                                  "subExpression": {
                                    "id": 11352,
                                    "name": "xInt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11315,
                                    "src": "22874:4:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 11351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "22865:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 11350,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "22865:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 11354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22865:14:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22847:48:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11361,
                        "nodeType": "ExpressionStatement",
                        "src": "22847:48:35"
                      },
                      {
                        "expression": {
                          "id": 11376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11362,
                            "name": "yAbs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11344,
                            "src": "22905:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 11365,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11363,
                                "name": "yInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11321,
                                "src": "22912:4:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 11364,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22919:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "22912:8:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "arguments": [
                                {
                                  "id": 11373,
                                  "name": "yInt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11321,
                                  "src": "22948:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 11372,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "22940:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 11371,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "22940:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 11374,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22940:13:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "22912:41:35",
                            "trueExpression": {
                              "arguments": [
                                {
                                  "id": 11369,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "22931:5:35",
                                  "subExpression": {
                                    "id": 11368,
                                    "name": "yInt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11321,
                                    "src": "22932:4:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 11367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "22923:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 11366,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "22923:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 11370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22923:14:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22905:48:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11377,
                        "nodeType": "ExpressionStatement",
                        "src": "22905:48:35"
                      }
                    ]
                  },
                  {
                    "assignments": [
                      11380
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11380,
                        "mutability": "mutable",
                        "name": "resultAbs",
                        "nameLocation": "23062:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11429,
                        "src": "23054:17:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11379,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23054:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 11386,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 11383,
                          "name": "xAbs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11341,
                          "src": "23090:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 11384,
                          "name": "yAbs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11344,
                          "src": "23096:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 11381,
                          "name": "Common",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10434,
                          "src": "23074:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_module_8329",
                            "typeString": "module \"@prb/math/src/Common.sol\""
                          }
                        },
                        "id": 11382,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "23081:8:35",
                        "memberName": "mulDiv18",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7952,
                        "src": "23074:15:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 11385,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23074:27:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "23054:47:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 11392,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 11387,
                        "name": "resultAbs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11380,
                        "src": "23111:9:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "arguments": [
                          {
                            "id": 11390,
                            "name": "uMAX_SD59x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9662,
                            "src": "23131:12:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 11389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "23123:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 11388,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "23123:7:35",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 11391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23123:21:35",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "23111:33:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 11401,
                    "nodeType": "IfStatement",
                    "src": "23107:104:35",
                    "trueBody": {
                      "id": 11400,
                      "nodeType": "Block",
                      "src": "23146:65:35",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 11396,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11305,
                                "src": "23199:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              {
                                "id": 11397,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11308,
                                "src": "23202:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                },
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 11393,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10435,
                                "src": "23163:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 11395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "23170:28:35",
                              "memberName": "PRBMath_SD59x18_Mul_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9915,
                              "src": "23163:35:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18,SD59x18) pure returns (error)"
                              }
                            },
                            "id": 11398,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23163:41:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 11399,
                          "nodeType": "RevertStatement",
                          "src": "23156:48:35"
                        }
                      ]
                    }
                  },
                  {
                    "assignments": [
                      11403
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11403,
                        "mutability": "mutable",
                        "name": "sameSign",
                        "nameLocation": "23391:8:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11429,
                        "src": "23386:13:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 11402,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23386:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 11411,
                    "initialValue": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 11410,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 11406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11404,
                              "name": "xInt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11315,
                              "src": "23403:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "^",
                            "rightExpression": {
                              "id": 11405,
                              "name": "yInt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11321,
                              "src": "23410:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "23403:11:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "id": 11407,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "23402:13:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 11409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "-",
                        "prefix": true,
                        "src": "23418:2:35",
                        "subExpression": {
                          "hexValue": "31",
                          "id": 11408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "23419:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_minus_1_by_1",
                          "typeString": "int_const -1"
                        }
                      },
                      "src": "23402:18:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "23386:34:35"
                  },
                  {
                    "id": 11428,
                    "nodeType": "UncheckedBlock",
                    "src": "23533:91:35",
                    "statements": [
                      {
                        "expression": {
                          "id": 11426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11412,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11312,
                            "src": "23553:6:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "condition": {
                                  "id": 11414,
                                  "name": "sameSign",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11403,
                                  "src": "23567:8:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "id": 11423,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "23598:18:35",
                                  "subExpression": {
                                    "arguments": [
                                      {
                                        "id": 11421,
                                        "name": "resultAbs",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11380,
                                        "src": "23606:9:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 11420,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "23599:6:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": {
                                        "id": 11419,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "23599:6:35",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 11422,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "23599:17:35",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 11424,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "23567:49:35",
                                "trueExpression": {
                                  "arguments": [
                                    {
                                      "id": 11417,
                                      "name": "resultAbs",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11380,
                                      "src": "23585:9:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 11416,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "23578:6:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_int256_$",
                                      "typeString": "type(int256)"
                                    },
                                    "typeName": {
                                      "id": 11415,
                                      "name": "int256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "23578:6:35",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 11418,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23578:17:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 11413,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9565,
                              "src": "23562:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (int256) pure returns (SD59x18)"
                              }
                            },
                            "id": 11425,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23562:55:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "src": "23553:64:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 11427,
                        "nodeType": "ExpressionStatement",
                        "src": "23553:64:35"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 11302,
                "nodeType": "StructuredDocumentation",
                "src": "21967:520:35",
                "text": "@notice Multiplies two SD59x18 numbers together, returning a new SD59x18 number.\n @dev Notes:\n - Refer to the notes in {Common.mulDiv18}.\n Requirements:\n - Refer to the requirements in {Common.mulDiv18}.\n - None of the inputs can be `MIN_SD59x18`.\n - The result must fit in SD59x18.\n @param x The multiplicand as an SD59x18 number.\n @param y The multiplier as an SD59x18 number.\n @return result The product as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 11430,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "mul",
              "nameLocation": "22496:3:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11309,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11305,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "22508:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11430,
                    "src": "22500:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11304,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11303,
                        "name": "SD59x18",
                        "nameLocations": [
                          "22500:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "22500:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "22500:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 11308,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "22519:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11430,
                    "src": "22511:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11307,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11306,
                        "name": "SD59x18",
                        "nameLocations": [
                          "22511:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "22511:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "22511:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "22499:22:35"
              },
              "returnParameters": {
                "id": 11313,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11312,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "22544:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11430,
                    "src": "22536:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11311,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11310,
                        "name": "SD59x18",
                        "nameLocations": [
                          "22536:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "22536:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "22536:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "22535:16:35"
              },
              "scope": 11693,
              "src": "22487:1139:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11499,
                "nodeType": "Block",
                "src": "24211:625:35",
                "statements": [
                  {
                    "assignments": [
                      11444
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11444,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "24224:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11499,
                        "src": "24217:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 11443,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24217:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 11448,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 11445,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11434,
                          "src": "24231:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 11446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "24233:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "24231:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 11447,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24231:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "24217:24:35"
                  },
                  {
                    "assignments": [
                      11450
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11450,
                        "mutability": "mutable",
                        "name": "yInt",
                        "nameLocation": "24254:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11499,
                        "src": "24247:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 11449,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24247:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 11454,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 11451,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11437,
                          "src": "24261:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 11452,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "24263:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "24261:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 11453,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24261:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "24247:24:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 11457,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 11455,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11444,
                        "src": "24383:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 11456,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24391:1:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "24383:9:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 11468,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 11466,
                          "name": "xInt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11444,
                          "src": "24507:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 11467,
                          "name": "uUNIT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9716,
                          "src": "24515:5:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "24507:13:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 11472,
                      "nodeType": "IfStatement",
                      "src": "24503:47:35",
                      "trueBody": {
                        "id": 11471,
                        "nodeType": "Block",
                        "src": "24522:28:35",
                        "statements": [
                          {
                            "expression": {
                              "id": 11469,
                              "name": "UNIT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9723,
                              "src": "24539:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "functionReturnParameters": 11442,
                            "id": 11470,
                            "nodeType": "Return",
                            "src": "24532:11:35"
                          }
                        ]
                      }
                    },
                    "id": 11473,
                    "nodeType": "IfStatement",
                    "src": "24379:171:35",
                    "trueBody": {
                      "id": 11465,
                      "nodeType": "Block",
                      "src": "24394:47:35",
                      "statements": [
                        {
                          "expression": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 11460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11458,
                                "name": "yInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11450,
                                "src": "24411:4:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 11459,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "24419:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "24411:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "id": 11462,
                              "name": "ZERO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9742,
                              "src": "24430:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "id": 11463,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "24411:23:35",
                            "trueExpression": {
                              "id": 11461,
                              "name": "UNIT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9723,
                              "src": "24423:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "functionReturnParameters": 11442,
                          "id": 11464,
                          "nodeType": "Return",
                          "src": "24404:30:35"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 11476,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 11474,
                        "name": "yInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11450,
                        "src": "24610:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 11475,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24618:1:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "24610:9:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 11482,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 11480,
                          "name": "yInt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11450,
                          "src": "24710:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 11481,
                          "name": "uUNIT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9716,
                          "src": "24718:5:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "24710:13:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 11486,
                      "nodeType": "IfStatement",
                      "src": "24706:44:35",
                      "trueBody": {
                        "id": 11485,
                        "nodeType": "Block",
                        "src": "24725:25:35",
                        "statements": [
                          {
                            "expression": {
                              "id": 11483,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11434,
                              "src": "24742:1:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "functionReturnParameters": 11442,
                            "id": 11484,
                            "nodeType": "Return",
                            "src": "24735:8:35"
                          }
                        ]
                      }
                    },
                    "id": 11487,
                    "nodeType": "IfStatement",
                    "src": "24606:144:35",
                    "trueBody": {
                      "id": 11479,
                      "nodeType": "Block",
                      "src": "24621:28:35",
                      "statements": [
                        {
                          "expression": {
                            "id": 11477,
                            "name": "UNIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9723,
                            "src": "24638:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "functionReturnParameters": 11442,
                          "id": 11478,
                          "nodeType": "Return",
                          "src": "24631:11:35"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 11497,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 11488,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11441,
                        "src": "24803:6:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 11492,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11434,
                                    "src": "24826:1:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                      "typeString": "SD59x18"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                      "typeString": "SD59x18"
                                    }
                                  ],
                                  "id": 11491,
                                  "name": "log2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11301,
                                  "src": "24821:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                    "typeString": "function (SD59x18) pure returns (SD59x18)"
                                  }
                                },
                                "id": 11493,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24821:7:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              {
                                "id": 11494,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11437,
                                "src": "24830:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                },
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "id": 11490,
                              "name": "mul",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11430,
                              "src": "24817:3:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (SD59x18,SD59x18) pure returns (SD59x18)"
                              }
                            },
                            "id": 11495,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24817:15:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          ],
                          "id": 11489,
                          "name": "exp2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10886,
                          "src": "24812:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (SD59x18) pure returns (SD59x18)"
                          }
                        },
                        "id": 11496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24812:21:35",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "24803:30:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 11498,
                    "nodeType": "ExpressionStatement",
                    "src": "24803:30:35"
                  }
                ]
              },
              "documentation": {
                "id": 11431,
                "nodeType": "StructuredDocumentation",
                "src": "23628:518:35",
                "text": "@notice Raises x to the power of y using the following formula:\n $$\n x^y = 2^{log_2{x} * y}\n $$\n @dev Notes:\n - Refer to the notes in {exp2}, {log2}, and {mul}.\n - Returns `UNIT` for 0^0.\n Requirements:\n - Refer to the requirements in {exp2}, {log2}, and {mul}.\n @param x The base as an SD59x18 number.\n @param y Exponent to raise x to, as an SD59x18 number\n @return result x raised to power y, as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 11500,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "pow",
              "nameLocation": "24155:3:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11438,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11434,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "24167:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11500,
                    "src": "24159:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11433,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11432,
                        "name": "SD59x18",
                        "nameLocations": [
                          "24159:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "24159:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "24159:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 11437,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "24178:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11500,
                    "src": "24170:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11436,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11435,
                        "name": "SD59x18",
                        "nameLocations": [
                          "24170:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "24170:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "24170:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "24158:22:35"
              },
              "returnParameters": {
                "id": 11442,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11441,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "24203:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11500,
                    "src": "24195:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11440,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11439,
                        "name": "SD59x18",
                        "nameLocations": [
                          "24195:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "24195:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "24195:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "24194:16:35"
              },
              "scope": 11693,
              "src": "24146:690:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11628,
                "nodeType": "Block",
                "src": "25532:948:35",
                "statements": [
                  {
                    "assignments": [
                      11513
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11513,
                        "mutability": "mutable",
                        "name": "xAbs",
                        "nameLocation": "25546:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11628,
                        "src": "25538:12:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11512,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25538:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 11522,
                    "initialValue": {
                      "arguments": [
                        {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 11517,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11504,
                                  "src": "25565:1:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                ],
                                "id": 11516,
                                "name": "abs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10494,
                                "src": "25561:3:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (SD59x18)"
                                }
                              },
                              "id": 11518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25561:6:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                "typeString": "SD59x18"
                              }
                            },
                            "id": 11519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "25568:6:35",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9548,
                            "src": "25561:13:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "function (SD59x18) pure returns (int256)"
                            }
                          },
                          "id": 11520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25561:15:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 11515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "25553:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 11514,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25553:7:35",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 11521,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "25553:24:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "25538:39:35"
                  },
                  {
                    "assignments": [
                      11524
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11524,
                        "mutability": "mutable",
                        "name": "resultAbs",
                        "nameLocation": "25653:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11628,
                        "src": "25645:17:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11523,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25645:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 11536,
                    "initialValue": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 11529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11525,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11506,
                            "src": "25665:1:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 11526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25669:1:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "25665:5:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 11528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25673:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "25665:9:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "arguments": [
                          {
                            "id": 11533,
                            "name": "uUNIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9716,
                            "src": "25692:5:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 11532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "25684:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 11531,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "25684:7:35",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 11534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "25684:14:35",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 11535,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "25665:33:35",
                      "trueExpression": {
                        "id": 11530,
                        "name": "xAbs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11513,
                        "src": "25677:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "25645:53:35"
                  },
                  {
                    "assignments": [
                      11538
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11538,
                        "mutability": "mutable",
                        "name": "yAux",
                        "nameLocation": "25764:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11628,
                        "src": "25756:12:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11537,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25756:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 11540,
                    "initialValue": {
                      "id": 11539,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11506,
                      "src": "25771:1:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "25756:16:35"
                  },
                  {
                    "body": {
                      "id": 11575,
                      "nodeType": "Block",
                      "src": "25817:187:35",
                      "statements": [
                        {
                          "expression": {
                            "id": 11558,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 11552,
                              "name": "xAbs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11513,
                              "src": "25827:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 11555,
                                  "name": "xAbs",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11513,
                                  "src": "25850:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 11556,
                                  "name": "xAbs",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11513,
                                  "src": "25856:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 11553,
                                  "name": "Common",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10434,
                                  "src": "25834:6:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_module_8329",
                                    "typeString": "module \"@prb/math/src/Common.sol\""
                                  }
                                },
                                "id": 11554,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "25841:8:35",
                                "memberName": "mulDiv18",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7952,
                                "src": "25834:15:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 11557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25834:27:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "25827:34:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11559,
                          "nodeType": "ExpressionStatement",
                          "src": "25827:34:35"
                        },
                        {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11564,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11562,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11560,
                                "name": "yAux",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11538,
                                "src": "25915:4:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 11561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "25922:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "25915:8:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 11563,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "25926:1:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "25915:12:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 11574,
                          "nodeType": "IfStatement",
                          "src": "25911:87:35",
                          "trueBody": {
                            "id": 11573,
                            "nodeType": "Block",
                            "src": "25929:69:35",
                            "statements": [
                              {
                                "expression": {
                                  "id": 11571,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 11565,
                                    "name": "resultAbs",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11524,
                                    "src": "25943:9:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "id": 11568,
                                        "name": "resultAbs",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11524,
                                        "src": "25971:9:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 11569,
                                        "name": "xAbs",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11513,
                                        "src": "25982:4:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 11566,
                                        "name": "Common",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10434,
                                        "src": "25955:6:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_module_8329",
                                          "typeString": "module \"@prb/math/src/Common.sol\""
                                        }
                                      },
                                      "id": 11567,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "25962:8:35",
                                      "memberName": "mulDiv18",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7952,
                                      "src": "25955:15:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 11570,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "25955:32:35",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "25943:44:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 11572,
                                "nodeType": "ExpressionStatement",
                                "src": "25943:44:35"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 11547,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 11545,
                        "name": "yAux",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11538,
                        "src": "25795:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 11546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25802:1:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "25795:8:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 11576,
                    "initializationExpression": {
                      "expression": {
                        "id": 11543,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 11541,
                          "name": "yAux",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11538,
                          "src": "25783:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": ">>=",
                        "rightHandSide": {
                          "hexValue": "31",
                          "id": 11542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25792:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "25783:10:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 11544,
                      "nodeType": "ExpressionStatement",
                      "src": "25783:10:35"
                    },
                    "isSimpleCounterLoop": false,
                    "loopExpression": {
                      "expression": {
                        "id": 11550,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 11548,
                          "name": "yAux",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11538,
                          "src": "25805:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": ">>=",
                        "rightHandSide": {
                          "hexValue": "31",
                          "id": 11549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25814:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "25805:10:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 11551,
                      "nodeType": "ExpressionStatement",
                      "src": "25805:10:35"
                    },
                    "nodeType": "ForStatement",
                    "src": "25778:226:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 11582,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 11577,
                        "name": "resultAbs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11524,
                        "src": "26053:9:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "arguments": [
                          {
                            "id": 11580,
                            "name": "uMAX_SD59x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9662,
                            "src": "26073:12:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 11579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "26065:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 11578,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "26065:7:35",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 11581,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26065:21:35",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "26053:33:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 11591,
                    "nodeType": "IfStatement",
                    "src": "26049:105:35",
                    "trueBody": {
                      "id": 11590,
                      "nodeType": "Block",
                      "src": "26088:66:35",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 11586,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11504,
                                "src": "26142:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              },
                              {
                                "id": 11587,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11506,
                                "src": "26145:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 11583,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10435,
                                "src": "26105:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 11585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "26112:29:35",
                              "memberName": "PRBMath_SD59x18_Powu_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9923,
                              "src": "26105:36:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$_t_uint256_$returns$_t_error_$",
                                "typeString": "function (SD59x18,uint256) pure returns (error)"
                              }
                            },
                            "id": 11588,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26105:42:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 11589,
                          "nodeType": "RevertStatement",
                          "src": "26098:49:35"
                        }
                      ]
                    }
                  },
                  {
                    "id": 11627,
                    "nodeType": "UncheckedBlock",
                    "src": "26160:318:35",
                    "statements": [
                      {
                        "assignments": [
                          11593
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11593,
                            "mutability": "mutable",
                            "name": "resultInt",
                            "nameLocation": "26280:9:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 11627,
                            "src": "26273:16:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 11592,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "26273:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11598,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11596,
                              "name": "resultAbs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11524,
                              "src": "26299:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11595,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "26292:6:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 11594,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "26292:6:35",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 11597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26292:17:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "26273:36:35"
                      },
                      {
                        "assignments": [
                          11600
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11600,
                            "mutability": "mutable",
                            "name": "isNegative",
                            "nameLocation": "26324:10:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 11627,
                            "src": "26319:15:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 11599,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "26319:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11612,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 11611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 11605,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 11601,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11504,
                                  "src": "26337:1:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                    "typeString": "SD59x18"
                                  }
                                },
                                "id": 11602,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "26339:6:35",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9548,
                                "src": "26337:8:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                                  "typeString": "function (SD59x18) pure returns (int256)"
                                }
                              },
                              "id": 11603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26337:10:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 11604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26350:1:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "26337:14:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11610,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11608,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11606,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11506,
                                "src": "26355:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 11607,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "26359:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "26355:5:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 11609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26364:1:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "26355:10:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "26337:28:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "26319:46:35"
                      },
                      {
                        "condition": {
                          "id": 11613,
                          "name": "isNegative",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11600,
                          "src": "26379:10:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11620,
                        "nodeType": "IfStatement",
                        "src": "26375:63:35",
                        "trueBody": {
                          "id": 11619,
                          "nodeType": "Block",
                          "src": "26391:47:35",
                          "statements": [
                            {
                              "expression": {
                                "id": 11617,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11614,
                                  "name": "resultInt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11593,
                                  "src": "26405:9:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 11616,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "26417:10:35",
                                  "subExpression": {
                                    "id": 11615,
                                    "name": "resultInt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11593,
                                    "src": "26418:9:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "26405:22:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 11618,
                              "nodeType": "ExpressionStatement",
                              "src": "26405:22:35"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 11625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11621,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11510,
                            "src": "26447:6:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 11623,
                                "name": "resultInt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11593,
                                "src": "26461:9:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 11622,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9565,
                              "src": "26456:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (int256) pure returns (SD59x18)"
                              }
                            },
                            "id": 11624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26456:15:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "src": "26447:24:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 11626,
                        "nodeType": "ExpressionStatement",
                        "src": "26447:24:35"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 11501,
                "nodeType": "StructuredDocumentation",
                "src": "24838:628:35",
                "text": "@notice Raises x (an SD59x18 number) to the power y (an unsigned basic integer) using the well-known\n algorithm \"exponentiation by squaring\".\n @dev See https://en.wikipedia.org/wiki/Exponentiation_by_squaring.\n Notes:\n - Refer to the notes in {Common.mulDiv18}.\n - Returns `UNIT` for 0^0.\n Requirements:\n - Refer to the requirements in {abs} and {Common.mulDiv18}.\n - The result must fit in SD59x18.\n @param x The base as an SD59x18 number.\n @param y The exponent as a uint256.\n @return result The result as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 11629,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "powu",
              "nameLocation": "25475:4:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11507,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11504,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "25488:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11629,
                    "src": "25480:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11503,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11502,
                        "name": "SD59x18",
                        "nameLocations": [
                          "25480:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "25480:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "25480:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 11506,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "25499:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11629,
                    "src": "25491:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 11505,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "25491:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "25479:22:35"
              },
              "returnParameters": {
                "id": 11511,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11510,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "25524:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11629,
                    "src": "25516:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11509,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11508,
                        "name": "SD59x18",
                        "nameLocations": [
                          "25516:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "25516:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "25516:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "25515:16:35"
              },
              "scope": 11693,
              "src": "25466:1014:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11691,
                "nodeType": "Block",
                "src": "27093:535:35",
                "statements": [
                  {
                    "assignments": [
                      11640
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11640,
                        "mutability": "mutable",
                        "name": "xInt",
                        "nameLocation": "27106:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 11691,
                        "src": "27099:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 11639,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27099:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 11644,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 11641,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11633,
                          "src": "27113:1:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 11642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "27115:6:35",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9548,
                        "src": "27113:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_SD59x18_$11699_$",
                          "typeString": "function (SD59x18) pure returns (int256)"
                        }
                      },
                      "id": 11643,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "27113:10:35",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "27099:24:35"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 11647,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 11645,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11640,
                        "src": "27133:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 11646,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "27140:1:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "27133:8:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 11655,
                    "nodeType": "IfStatement",
                    "src": "27129:82:35",
                    "trueBody": {
                      "id": 11654,
                      "nodeType": "Block",
                      "src": "27143:68:35",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 11651,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11633,
                                "src": "27202:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 11648,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10435,
                                "src": "27160:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 11650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "27167:34:35",
                              "memberName": "PRBMath_SD59x18_Sqrt_NegativeInput",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9929,
                              "src": "27160:41:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 11652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27160:44:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 11653,
                          "nodeType": "RevertStatement",
                          "src": "27153:51:35"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 11660,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 11656,
                        "name": "xInt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11640,
                        "src": "27220:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 11659,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 11657,
                          "name": "uMAX_SD59x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9662,
                          "src": "27227:12:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "id": 11658,
                          "name": "uUNIT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9716,
                          "src": "27242:5:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "27227:20:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "27220:27:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 11668,
                    "nodeType": "IfStatement",
                    "src": "27216:96:35",
                    "trueBody": {
                      "id": 11667,
                      "nodeType": "Block",
                      "src": "27249:63:35",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 11664,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11633,
                                "src": "27303:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                                  "typeString": "SD59x18"
                                }
                              ],
                              "expression": {
                                "id": 11661,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10435,
                                "src": "27266:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_9936",
                                  "typeString": "module \"@prb/math/src/sd59x18/Errors.sol\""
                                }
                              },
                              "id": 11663,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "27273:29:35",
                              "memberName": "PRBMath_SD59x18_Sqrt_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9935,
                              "src": "27266:36:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_SD59x18_$11699_$returns$_t_error_$",
                                "typeString": "function (SD59x18) pure returns (error)"
                              }
                            },
                            "id": 11665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27266:39:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 11666,
                          "nodeType": "RevertStatement",
                          "src": "27259:46:35"
                        }
                      ]
                    }
                  },
                  {
                    "id": 11690,
                    "nodeType": "UncheckedBlock",
                    "src": "27318:308:35",
                    "statements": [
                      {
                        "assignments": [
                          11670
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11670,
                            "mutability": "mutable",
                            "name": "resultUint",
                            "nameLocation": "27529:10:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 11690,
                            "src": "27521:18:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11669,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "27521:7:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11680,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 11677,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 11675,
                                    "name": "xInt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11640,
                                    "src": "27562:4:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 11676,
                                    "name": "uUNIT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9716,
                                    "src": "27569:5:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "27562:12:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 11674,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "27554:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 11673,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "27554:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 11678,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "27554:21:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 11671,
                              "name": "Common",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10434,
                              "src": "27542:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_module_8329",
                                "typeString": "module \"@prb/math/src/Common.sol\""
                              }
                            },
                            "id": 11672,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "27549:4:35",
                            "memberName": "sqrt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8328,
                            "src": "27542:11:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 11679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27542:34:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "27521:55:35"
                      },
                      {
                        "expression": {
                          "id": 11688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11681,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11637,
                            "src": "27586:6:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 11685,
                                    "name": "resultUint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11670,
                                    "src": "27607:10:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 11684,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "27600:6:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 11683,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "27600:6:35",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 11686,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "27600:18:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 11682,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9565,
                              "src": "27595:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                                "typeString": "function (int256) pure returns (SD59x18)"
                              }
                            },
                            "id": 11687,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27595:24:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                              "typeString": "SD59x18"
                            }
                          },
                          "src": "27586:33:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                            "typeString": "SD59x18"
                          }
                        },
                        "id": 11689,
                        "nodeType": "ExpressionStatement",
                        "src": "27586:33:35"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 11630,
                "nodeType": "StructuredDocumentation",
                "src": "26482:556:35",
                "text": "@notice Calculates the square root of x using the Babylonian method.\n @dev See https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method.\n Notes:\n - Only the positive root is returned.\n - The result is rounded toward zero.\n Requirements:\n - x ≥ 0, since complex numbers are not supported.\n - x ≤ MAX_SD59x18 / UNIT\n @param x The SD59x18 number for which to calculate the square root.\n @return result The result as an SD59x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 11692,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "sqrt",
              "nameLocation": "27047:4:35",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11634,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11633,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "27060:1:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11692,
                    "src": "27052:9:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11632,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11631,
                        "name": "SD59x18",
                        "nameLocations": [
                          "27052:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "27052:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "27052:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "27051:11:35"
              },
              "returnParameters": {
                "id": 11638,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11637,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "27085:6:35",
                    "nodeType": "VariableDeclaration",
                    "scope": 11692,
                    "src": "27077:14:35",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11636,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11635,
                        "name": "SD59x18",
                        "nameLocations": [
                          "27077:7:35"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "27077:7:35"
                      },
                      "referencedDeclaration": 11699,
                      "src": "27077:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "27076:16:35"
              },
              "scope": 11693,
              "src": "27038:590:35",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            }
          ],
          "src": "32:27597:35"
        },
        "id": 35
      },
      "@prb/math/src/sd59x18/ValueType.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/sd59x18/ValueType.sol",
          "exportedSymbols": {
            "Casting": [
              11695
            ],
            "Helpers": [
              11696
            ],
            "Math": [
              11697
            ],
            "SD59x18": [
              11699
            ]
          },
          "id": 11774,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11694,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:36"
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/Casting.sol",
              "file": "./Casting.sol",
              "id": 11695,
              "nameLocation": "85:7:36",
              "nodeType": "ImportDirective",
              "scope": 11774,
              "sourceUnit": 9566,
              "src": "59:34:36",
              "symbolAliases": [],
              "unitAlias": "Casting"
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/Helpers.sol",
              "file": "./Helpers.sol",
              "id": 11696,
              "nameLocation": "120:7:36",
              "nodeType": "ImportDirective",
              "scope": 11774,
              "sourceUnit": 10432,
              "src": "94:34:36",
              "symbolAliases": [],
              "unitAlias": "Helpers"
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/Math.sol",
              "file": "./Math.sol",
              "id": 11697,
              "nameLocation": "152:4:36",
              "nodeType": "ImportDirective",
              "scope": 11774,
              "sourceUnit": 11693,
              "src": "129:28:36",
              "symbolAliases": [],
              "unitAlias": "Math"
            },
            {
              "canonicalName": "SD59x18",
              "id": 11699,
              "name": "SD59x18",
              "nameLocation": "415:7:36",
              "nodeType": "UserDefinedValueTypeDefinition",
              "src": "410:23:36",
              "underlyingType": {
                "id": 11698,
                "name": "int256",
                "nodeType": "ElementaryTypeName",
                "src": "426:6:36",
                "typeDescriptions": {
                  "typeIdentifier": "t_int256",
                  "typeString": "int256"
                }
              }
            },
            {
              "functionList": [
                {
                  "function": {
                    "id": 11700,
                    "name": "Casting.intoInt256",
                    "nameLocations": [
                      "646:7:36",
                      "654:10:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9095,
                    "src": "646:18:36"
                  }
                },
                {
                  "function": {
                    "id": 11701,
                    "name": "Casting.intoSD1x18",
                    "nameLocations": [
                      "670:7:36",
                      "678:10:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9145,
                    "src": "670:18:36"
                  }
                },
                {
                  "function": {
                    "id": 11702,
                    "name": "Casting.intoSD21x18",
                    "nameLocations": [
                      "694:7:36",
                      "702:11:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9195,
                    "src": "694:19:36"
                  }
                },
                {
                  "function": {
                    "id": 11703,
                    "name": "Casting.intoUD2x18",
                    "nameLocations": [
                      "719:7:36",
                      "727:10:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9254,
                    "src": "719:18:36"
                  }
                },
                {
                  "function": {
                    "id": 11704,
                    "name": "Casting.intoUD21x18",
                    "nameLocations": [
                      "743:7:36",
                      "751:11:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9313,
                    "src": "743:19:36"
                  }
                },
                {
                  "function": {
                    "id": 11705,
                    "name": "Casting.intoUD60x18",
                    "nameLocations": [
                      "768:7:36",
                      "776:11:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9352,
                    "src": "768:19:36"
                  }
                },
                {
                  "function": {
                    "id": 11706,
                    "name": "Casting.intoUint256",
                    "nameLocations": [
                      "793:7:36",
                      "801:11:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9387,
                    "src": "793:19:36"
                  }
                },
                {
                  "function": {
                    "id": 11707,
                    "name": "Casting.intoUint128",
                    "nameLocations": [
                      "818:7:36",
                      "826:11:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9442,
                    "src": "818:19:36"
                  }
                },
                {
                  "function": {
                    "id": 11708,
                    "name": "Casting.intoUint40",
                    "nameLocations": [
                      "843:7:36",
                      "851:10:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9497,
                    "src": "843:18:36"
                  }
                },
                {
                  "function": {
                    "id": 11709,
                    "name": "Casting.unwrap",
                    "nameLocations": [
                      "867:7:36",
                      "875:6:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9548,
                    "src": "867:14:36"
                  }
                }
              ],
              "global": true,
              "id": 11712,
              "nodeType": "UsingForDirective",
              "src": "634:269:36",
              "typeName": {
                "id": 11711,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 11710,
                  "name": "SD59x18",
                  "nameLocations": [
                    "888:7:36"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "888:7:36"
                },
                "referencedDeclaration": 11699,
                "src": "888:7:36",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              }
            },
            {
              "functionList": [
                {
                  "function": {
                    "id": 11713,
                    "name": "Math.abs",
                    "nameLocations": [
                      "1123:4:36",
                      "1128:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10494,
                    "src": "1123:8:36"
                  }
                },
                {
                  "function": {
                    "id": 11714,
                    "name": "Math.avg",
                    "nameLocations": [
                      "1137:4:36",
                      "1142:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10553,
                    "src": "1137:8:36"
                  }
                },
                {
                  "function": {
                    "id": 11715,
                    "name": "Math.ceil",
                    "nameLocations": [
                      "1151:4:36",
                      "1156:4:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10619,
                    "src": "1151:9:36"
                  }
                },
                {
                  "function": {
                    "id": 11716,
                    "name": "Math.div",
                    "nameLocations": [
                      "1166:4:36",
                      "1171:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10752,
                    "src": "1166:8:36"
                  }
                },
                {
                  "function": {
                    "id": 11717,
                    "name": "Math.exp",
                    "nameLocations": [
                      "1180:4:36",
                      "1185:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10804,
                    "src": "1180:8:36"
                  }
                },
                {
                  "function": {
                    "id": 11718,
                    "name": "Math.exp2",
                    "nameLocations": [
                      "1194:4:36",
                      "1199:4:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10886,
                    "src": "1194:9:36"
                  }
                },
                {
                  "function": {
                    "id": 11719,
                    "name": "Math.floor",
                    "nameLocations": [
                      "1209:4:36",
                      "1214:5:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10952,
                    "src": "1209:10:36"
                  }
                },
                {
                  "function": {
                    "id": 11720,
                    "name": "Math.frac",
                    "nameLocations": [
                      "1225:4:36",
                      "1230:4:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10973,
                    "src": "1225:9:36"
                  }
                },
                {
                  "function": {
                    "id": 11721,
                    "name": "Math.gm",
                    "nameLocations": [
                      "1240:4:36",
                      "1245:2:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11062,
                    "src": "1240:7:36"
                  }
                },
                {
                  "function": {
                    "id": 11722,
                    "name": "Math.inv",
                    "nameLocations": [
                      "1253:4:36",
                      "1258:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11083,
                    "src": "1253:8:36"
                  }
                },
                {
                  "function": {
                    "id": 11723,
                    "name": "Math.log10",
                    "nameLocations": [
                      "1267:4:36",
                      "1272:5:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11159,
                    "src": "1267:10:36"
                  }
                },
                {
                  "function": {
                    "id": 11724,
                    "name": "Math.log2",
                    "nameLocations": [
                      "1283:4:36",
                      "1288:4:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11301,
                    "src": "1283:9:36"
                  }
                },
                {
                  "function": {
                    "id": 11725,
                    "name": "Math.ln",
                    "nameLocations": [
                      "1298:4:36",
                      "1303:2:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11108,
                    "src": "1298:7:36"
                  }
                },
                {
                  "function": {
                    "id": 11726,
                    "name": "Math.mul",
                    "nameLocations": [
                      "1311:4:36",
                      "1316:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11430,
                    "src": "1311:8:36"
                  }
                },
                {
                  "function": {
                    "id": 11727,
                    "name": "Math.pow",
                    "nameLocations": [
                      "1325:4:36",
                      "1330:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11500,
                    "src": "1325:8:36"
                  }
                },
                {
                  "function": {
                    "id": 11728,
                    "name": "Math.powu",
                    "nameLocations": [
                      "1339:4:36",
                      "1344:4:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11629,
                    "src": "1339:9:36"
                  }
                },
                {
                  "function": {
                    "id": 11729,
                    "name": "Math.sqrt",
                    "nameLocations": [
                      "1354:4:36",
                      "1359:4:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11692,
                    "src": "1354:9:36"
                  }
                }
              ],
              "global": true,
              "id": 11732,
              "nodeType": "UsingForDirective",
              "src": "1111:274:36",
              "typeName": {
                "id": 11731,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 11730,
                  "name": "SD59x18",
                  "nameLocations": [
                    "1370:7:36"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "1370:7:36"
                },
                "referencedDeclaration": 11699,
                "src": "1370:7:36",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              }
            },
            {
              "functionList": [
                {
                  "function": {
                    "id": 11733,
                    "name": "Helpers.add",
                    "nameLocations": [
                      "1603:7:36",
                      "1611:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9965,
                    "src": "1603:11:36"
                  }
                },
                {
                  "function": {
                    "id": 11734,
                    "name": "Helpers.and",
                    "nameLocations": [
                      "1620:7:36",
                      "1628:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9986,
                    "src": "1620:11:36"
                  }
                },
                {
                  "function": {
                    "id": 11735,
                    "name": "Helpers.eq",
                    "nameLocations": [
                      "1637:7:36",
                      "1645:2:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10033,
                    "src": "1637:10:36"
                  }
                },
                {
                  "function": {
                    "id": 11736,
                    "name": "Helpers.gt",
                    "nameLocations": [
                      "1653:7:36",
                      "1661:2:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10056,
                    "src": "1653:10:36"
                  }
                },
                {
                  "function": {
                    "id": 11737,
                    "name": "Helpers.gte",
                    "nameLocations": [
                      "1669:7:36",
                      "1677:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10079,
                    "src": "1669:11:36"
                  }
                },
                {
                  "function": {
                    "id": 11738,
                    "name": "Helpers.isZero",
                    "nameLocations": [
                      "1686:7:36",
                      "1694:6:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10097,
                    "src": "1686:14:36"
                  }
                },
                {
                  "function": {
                    "id": 11739,
                    "name": "Helpers.lshift",
                    "nameLocations": [
                      "1706:7:36",
                      "1714:6:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10120,
                    "src": "1706:14:36"
                  }
                },
                {
                  "function": {
                    "id": 11740,
                    "name": "Helpers.lt",
                    "nameLocations": [
                      "1726:7:36",
                      "1734:2:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10143,
                    "src": "1726:10:36"
                  }
                },
                {
                  "function": {
                    "id": 11741,
                    "name": "Helpers.lte",
                    "nameLocations": [
                      "1742:7:36",
                      "1750:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10166,
                    "src": "1742:11:36"
                  }
                },
                {
                  "function": {
                    "id": 11742,
                    "name": "Helpers.mod",
                    "nameLocations": [
                      "1759:7:36",
                      "1767:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10192,
                    "src": "1759:11:36"
                  }
                },
                {
                  "function": {
                    "id": 11743,
                    "name": "Helpers.neq",
                    "nameLocations": [
                      "1776:7:36",
                      "1784:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10215,
                    "src": "1776:11:36"
                  }
                },
                {
                  "function": {
                    "id": 11744,
                    "name": "Helpers.not",
                    "nameLocations": [
                      "1793:7:36",
                      "1801:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10235,
                    "src": "1793:11:36"
                  }
                },
                {
                  "function": {
                    "id": 11745,
                    "name": "Helpers.or",
                    "nameLocations": [
                      "1810:7:36",
                      "1818:2:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10261,
                    "src": "1810:10:36"
                  }
                },
                {
                  "function": {
                    "id": 11746,
                    "name": "Helpers.rshift",
                    "nameLocations": [
                      "1826:7:36",
                      "1834:6:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10284,
                    "src": "1826:14:36"
                  }
                },
                {
                  "function": {
                    "id": 11747,
                    "name": "Helpers.sub",
                    "nameLocations": [
                      "1846:7:36",
                      "1854:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10310,
                    "src": "1846:11:36"
                  }
                },
                {
                  "function": {
                    "id": 11748,
                    "name": "Helpers.uncheckedAdd",
                    "nameLocations": [
                      "1863:7:36",
                      "1871:12:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10357,
                    "src": "1863:20:36"
                  }
                },
                {
                  "function": {
                    "id": 11749,
                    "name": "Helpers.uncheckedSub",
                    "nameLocations": [
                      "1889:7:36",
                      "1897:12:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10384,
                    "src": "1889:20:36"
                  }
                },
                {
                  "function": {
                    "id": 11750,
                    "name": "Helpers.uncheckedUnary",
                    "nameLocations": [
                      "1915:7:36",
                      "1923:14:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10405,
                    "src": "1915:22:36"
                  }
                },
                {
                  "function": {
                    "id": 11751,
                    "name": "Helpers.xor",
                    "nameLocations": [
                      "1943:7:36",
                      "1951:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10431,
                    "src": "1943:11:36"
                  }
                }
              ],
              "global": true,
              "id": 11754,
              "nodeType": "UsingForDirective",
              "src": "1591:385:36",
              "typeName": {
                "id": 11753,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 11752,
                  "name": "SD59x18",
                  "nameLocations": [
                    "1961:7:36"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "1961:7:36"
                },
                "referencedDeclaration": 11699,
                "src": "1961:7:36",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              }
            },
            {
              "functionList": [
                {
                  "definition": {
                    "id": 11755,
                    "name": "Helpers.add",
                    "nameLocations": [
                      "2289:7:36",
                      "2297:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9965,
                    "src": "2289:11:36"
                  },
                  "operator": "+"
                },
                {
                  "definition": {
                    "id": 11756,
                    "name": "Helpers.and2",
                    "nameLocations": [
                      "2311:7:36",
                      "2319:4:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10010,
                    "src": "2311:12:36"
                  },
                  "operator": "&"
                },
                {
                  "definition": {
                    "id": 11757,
                    "name": "Math.div",
                    "nameLocations": [
                      "2334:4:36",
                      "2339:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10752,
                    "src": "2334:8:36"
                  },
                  "operator": "/"
                },
                {
                  "definition": {
                    "id": 11758,
                    "name": "Helpers.eq",
                    "nameLocations": [
                      "2353:7:36",
                      "2361:2:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10033,
                    "src": "2353:10:36"
                  },
                  "operator": "=="
                },
                {
                  "definition": {
                    "id": 11759,
                    "name": "Helpers.gt",
                    "nameLocations": [
                      "2375:7:36",
                      "2383:2:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10056,
                    "src": "2375:10:36"
                  },
                  "operator": ">"
                },
                {
                  "definition": {
                    "id": 11760,
                    "name": "Helpers.gte",
                    "nameLocations": [
                      "2396:7:36",
                      "2404:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10079,
                    "src": "2396:11:36"
                  },
                  "operator": ">="
                },
                {
                  "definition": {
                    "id": 11761,
                    "name": "Helpers.lt",
                    "nameLocations": [
                      "2419:7:36",
                      "2427:2:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10143,
                    "src": "2419:10:36"
                  },
                  "operator": "<"
                },
                {
                  "definition": {
                    "id": 11762,
                    "name": "Helpers.lte",
                    "nameLocations": [
                      "2440:7:36",
                      "2448:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10166,
                    "src": "2440:11:36"
                  },
                  "operator": "<="
                },
                {
                  "definition": {
                    "id": 11763,
                    "name": "Helpers.mod",
                    "nameLocations": [
                      "2463:7:36",
                      "2471:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10192,
                    "src": "2463:11:36"
                  },
                  "operator": "%"
                },
                {
                  "definition": {
                    "id": 11764,
                    "name": "Math.mul",
                    "nameLocations": [
                      "2485:4:36",
                      "2490:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11430,
                    "src": "2485:8:36"
                  },
                  "operator": "*"
                },
                {
                  "definition": {
                    "id": 11765,
                    "name": "Helpers.neq",
                    "nameLocations": [
                      "2504:7:36",
                      "2512:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10215,
                    "src": "2504:11:36"
                  },
                  "operator": "!="
                },
                {
                  "definition": {
                    "id": 11766,
                    "name": "Helpers.not",
                    "nameLocations": [
                      "2527:7:36",
                      "2535:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10235,
                    "src": "2527:11:36"
                  },
                  "operator": "~"
                },
                {
                  "definition": {
                    "id": 11767,
                    "name": "Helpers.or",
                    "nameLocations": [
                      "2549:7:36",
                      "2557:2:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10261,
                    "src": "2549:10:36"
                  },
                  "operator": "|"
                },
                {
                  "definition": {
                    "id": 11768,
                    "name": "Helpers.sub",
                    "nameLocations": [
                      "2570:7:36",
                      "2578:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10310,
                    "src": "2570:11:36"
                  },
                  "operator": "-"
                },
                {
                  "definition": {
                    "id": 11769,
                    "name": "Helpers.unary",
                    "nameLocations": [
                      "2592:7:36",
                      "2600:5:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10330,
                    "src": "2592:13:36"
                  },
                  "operator": "-"
                },
                {
                  "definition": {
                    "id": 11770,
                    "name": "Helpers.xor",
                    "nameLocations": [
                      "2616:7:36",
                      "2624:3:36"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 10431,
                    "src": "2616:11:36"
                  },
                  "operator": "^"
                }
              ],
              "global": true,
              "id": 11773,
              "nodeType": "UsingForDirective",
              "src": "2277:377:36",
              "typeName": {
                "id": 11772,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 11771,
                  "name": "SD59x18",
                  "nameLocations": [
                    "2639:7:36"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11699,
                  "src": "2639:7:36"
                },
                "referencedDeclaration": 11699,
                "src": "2639:7:36",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                  "typeString": "SD59x18"
                }
              }
            }
          ],
          "src": "32:2623:36"
        },
        "id": 36
      },
      "@prb/math/src/ud21x18/Casting.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/ud21x18/Casting.sol",
          "exportedSymbols": {
            "Common": [
              11776
            ],
            "Errors": [
              11777
            ],
            "SD59x18": [
              11699
            ],
            "UD21x18": [
              12015
            ],
            "UD60x18": [
              14179
            ],
            "intoSD59x18": [
              11810
            ],
            "intoUD60x18": [
              11831
            ],
            "intoUint128": [
              11848
            ],
            "intoUint256": [
              11868
            ],
            "intoUint40": [
              11907
            ],
            "ud21x18": [
              11924
            ],
            "unwrap": [
              11941
            ],
            "wrap": [
              11958
            ]
          },
          "id": 11959,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11775,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:37"
            },
            {
              "absolutePath": "@prb/math/src/Common.sol",
              "file": "../Common.sol",
              "id": 11776,
              "nameLocation": "85:6:37",
              "nodeType": "ImportDirective",
              "scope": 11959,
              "sourceUnit": 8329,
              "src": "59:33:37",
              "symbolAliases": [],
              "unitAlias": "Common"
            },
            {
              "absolutePath": "@prb/math/src/ud21x18/Errors.sol",
              "file": "./Errors.sol",
              "id": 11777,
              "nameLocation": "118:6:37",
              "nodeType": "ImportDirective",
              "scope": 11959,
              "sourceUnit": 12011,
              "src": "93:32:37",
              "symbolAliases": [],
              "unitAlias": "Errors"
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/ValueType.sol",
              "file": "../sd59x18/ValueType.sol",
              "id": 11779,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11959,
              "sourceUnit": 11774,
              "src": "126:51:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11778,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "135:7:37",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/ValueType.sol",
              "file": "../ud60x18/ValueType.sol",
              "id": 11781,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11959,
              "sourceUnit": 14250,
              "src": "178:51:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11780,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "187:7:37",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud21x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 11783,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11959,
              "sourceUnit": 12025,
              "src": "230:42:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11782,
                    "name": "UD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12015,
                    "src": "239:7:37",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "body": {
                "id": 11809,
                "nodeType": "Block",
                "src": "450:66:37",
                "statements": [
                  {
                    "expression": {
                      "id": 11807,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 11793,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11791,
                        "src": "456:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 11802,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11787,
                                        "src": "508:1:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                                          "typeString": "UD21x18"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                                          "typeString": "UD21x18"
                                        }
                                      ],
                                      "expression": {
                                        "id": 11800,
                                        "name": "UD21x18",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12015,
                                        "src": "493:7:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_userDefinedValueType$_UD21x18_$12015_$",
                                          "typeString": "type(UD21x18)"
                                        }
                                      },
                                      "id": 11801,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "501:6:37",
                                      "memberName": "unwrap",
                                      "nodeType": "MemberAccess",
                                      "src": "493:14:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD21x18_$12015_$returns$_t_uint128_$",
                                        "typeString": "function (UD21x18) pure returns (uint128)"
                                      }
                                    },
                                    "id": 11803,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "493:17:37",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "id": 11799,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "485:7:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 11798,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "485:7:37",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 11804,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "485:26:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 11797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "478:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 11796,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "478:6:37",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 11805,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "478:34:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "expression": {
                            "id": 11794,
                            "name": "SD59x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11699,
                            "src": "465:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "type(SD59x18)"
                            }
                          },
                          "id": 11795,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "473:4:37",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "465:12:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 11806,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "465:48:37",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "456:57:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 11808,
                    "nodeType": "ExpressionStatement",
                    "src": "456:57:37"
                  }
                ]
              },
              "documentation": {
                "id": 11784,
                "nodeType": "StructuredDocumentation",
                "src": "274:114:37",
                "text": "@notice Casts a UD21x18 number into SD59x18.\n @dev There is no overflow check because UD21x18 ⊆ SD59x18."
              },
              "id": 11810,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoSD59x18",
              "nameLocation": "397:11:37",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11788,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11787,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "417:1:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11810,
                    "src": "409:9:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                      "typeString": "UD21x18"
                    },
                    "typeName": {
                      "id": 11786,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11785,
                        "name": "UD21x18",
                        "nameLocations": [
                          "409:7:37"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12015,
                        "src": "409:7:37"
                      },
                      "referencedDeclaration": 12015,
                      "src": "409:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                        "typeString": "UD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "408:11:37"
              },
              "returnParameters": {
                "id": 11792,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11791,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "442:6:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11810,
                    "src": "434:14:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 11790,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11789,
                        "name": "SD59x18",
                        "nameLocations": [
                          "434:7:37"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "434:7:37"
                      },
                      "referencedDeclaration": 11699,
                      "src": "434:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "433:16:37"
              },
              "scope": 11959,
              "src": "388:128:37",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11830,
                "nodeType": "Block",
                "src": "694:49:37",
                "statements": [
                  {
                    "expression": {
                      "id": 11828,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 11820,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11818,
                        "src": "700:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 11825,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11814,
                                "src": "737:1:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                                  "typeString": "UD21x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                                  "typeString": "UD21x18"
                                }
                              ],
                              "expression": {
                                "id": 11823,
                                "name": "UD21x18",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12015,
                                "src": "722:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_userDefinedValueType$_UD21x18_$12015_$",
                                  "typeString": "type(UD21x18)"
                                }
                              },
                              "id": 11824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "730:6:37",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "src": "722:14:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD21x18_$12015_$returns$_t_uint128_$",
                                "typeString": "function (UD21x18) pure returns (uint128)"
                              }
                            },
                            "id": 11826,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "722:17:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          ],
                          "expression": {
                            "id": 11821,
                            "name": "UD60x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14179,
                            "src": "709:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "type(UD60x18)"
                            }
                          },
                          "id": 11822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "717:4:37",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "709:12:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 11827,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "709:31:37",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "700:40:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 11829,
                    "nodeType": "ExpressionStatement",
                    "src": "700:40:37"
                  }
                ]
              },
              "documentation": {
                "id": 11811,
                "nodeType": "StructuredDocumentation",
                "src": "518:114:37",
                "text": "@notice Casts a UD21x18 number into UD60x18.\n @dev There is no overflow check because UD21x18 ⊆ UD60x18."
              },
              "id": 11831,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUD60x18",
              "nameLocation": "641:11:37",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11815,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11814,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "661:1:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11831,
                    "src": "653:9:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                      "typeString": "UD21x18"
                    },
                    "typeName": {
                      "id": 11813,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11812,
                        "name": "UD21x18",
                        "nameLocations": [
                          "653:7:37"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12015,
                        "src": "653:7:37"
                      },
                      "referencedDeclaration": 12015,
                      "src": "653:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                        "typeString": "UD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "652:11:37"
              },
              "returnParameters": {
                "id": 11819,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11818,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "686:6:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11831,
                    "src": "678:14:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 11817,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11816,
                        "name": "UD60x18",
                        "nameLocations": [
                          "678:7:37"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "678:7:37"
                      },
                      "referencedDeclaration": 14179,
                      "src": "678:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "677:16:37"
              },
              "scope": 11959,
              "src": "632:111:37",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11847,
                "nodeType": "Block",
                "src": "906:35:37",
                "statements": [
                  {
                    "expression": {
                      "id": 11845,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 11840,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11838,
                        "src": "912:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 11843,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11835,
                            "src": "936:1:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                              "typeString": "UD21x18"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                              "typeString": "UD21x18"
                            }
                          ],
                          "expression": {
                            "id": 11841,
                            "name": "UD21x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12015,
                            "src": "921:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD21x18_$12015_$",
                              "typeString": "type(UD21x18)"
                            }
                          },
                          "id": 11842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "929:6:37",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "src": "921:14:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD21x18_$12015_$returns$_t_uint128_$",
                            "typeString": "function (UD21x18) pure returns (uint128)"
                          }
                        },
                        "id": 11844,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "921:17:37",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "912:26:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "id": 11846,
                    "nodeType": "ExpressionStatement",
                    "src": "912:26:37"
                  }
                ]
              },
              "documentation": {
                "id": 11832,
                "nodeType": "StructuredDocumentation",
                "src": "745:99:37",
                "text": "@notice Casts a UD21x18 number into uint128.\n @dev This is basically an alias for {unwrap}."
              },
              "id": 11848,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint128",
              "nameLocation": "853:11:37",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11836,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11835,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "873:1:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11848,
                    "src": "865:9:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                      "typeString": "UD21x18"
                    },
                    "typeName": {
                      "id": 11834,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11833,
                        "name": "UD21x18",
                        "nameLocations": [
                          "865:7:37"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12015,
                        "src": "865:7:37"
                      },
                      "referencedDeclaration": 12015,
                      "src": "865:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                        "typeString": "UD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "864:11:37"
              },
              "returnParameters": {
                "id": 11839,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11838,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "898:6:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11848,
                    "src": "890:14:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "typeName": {
                      "id": 11837,
                      "name": "uint128",
                      "nodeType": "ElementaryTypeName",
                      "src": "890:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "889:16:37"
              },
              "scope": 11959,
              "src": "844:97:37",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11867,
                "nodeType": "Block",
                "src": "1119:44:37",
                "statements": [
                  {
                    "expression": {
                      "id": 11865,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 11857,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11855,
                        "src": "1125:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 11862,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11852,
                                "src": "1157:1:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                                  "typeString": "UD21x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                                  "typeString": "UD21x18"
                                }
                              ],
                              "expression": {
                                "id": 11860,
                                "name": "UD21x18",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12015,
                                "src": "1142:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_userDefinedValueType$_UD21x18_$12015_$",
                                  "typeString": "type(UD21x18)"
                                }
                              },
                              "id": 11861,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1150:6:37",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "src": "1142:14:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD21x18_$12015_$returns$_t_uint128_$",
                                "typeString": "function (UD21x18) pure returns (uint128)"
                              }
                            },
                            "id": 11863,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1142:17:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          ],
                          "id": 11859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1134:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 11858,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1134:7:37",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 11864,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1134:26:37",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1125:35:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11866,
                    "nodeType": "ExpressionStatement",
                    "src": "1125:35:37"
                  }
                ]
              },
              "documentation": {
                "id": 11849,
                "nodeType": "StructuredDocumentation",
                "src": "943:114:37",
                "text": "@notice Casts a UD21x18 number into uint256.\n @dev There is no overflow check because UD21x18 ⊆ uint256."
              },
              "id": 11868,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint256",
              "nameLocation": "1066:11:37",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11853,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11852,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1086:1:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11868,
                    "src": "1078:9:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                      "typeString": "UD21x18"
                    },
                    "typeName": {
                      "id": 11851,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11850,
                        "name": "UD21x18",
                        "nameLocations": [
                          "1078:7:37"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12015,
                        "src": "1078:7:37"
                      },
                      "referencedDeclaration": 12015,
                      "src": "1078:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                        "typeString": "UD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1077:11:37"
              },
              "returnParameters": {
                "id": 11856,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11855,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1111:6:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11868,
                    "src": "1103:14:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 11854,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1103:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1102:16:37"
              },
              "scope": 11959,
              "src": "1057:106:37",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11906,
                "nodeType": "Block",
                "src": "1319:184:37",
                "statements": [
                  {
                    "assignments": [
                      11878
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11878,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "1333:5:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 11906,
                        "src": "1325:13:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 11877,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1325:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 11883,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 11881,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11872,
                          "src": "1356:1:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                            "typeString": "UD21x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                            "typeString": "UD21x18"
                          }
                        ],
                        "expression": {
                          "id": 11879,
                          "name": "UD21x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12015,
                          "src": "1341:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_UD21x18_$12015_$",
                            "typeString": "type(UD21x18)"
                          }
                        },
                        "id": 11880,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1349:6:37",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "1341:14:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD21x18_$12015_$returns$_t_uint128_$",
                          "typeString": "function (UD21x18) pure returns (uint128)"
                        }
                      },
                      "id": 11882,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1341:17:37",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1325:33:37"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "id": 11890,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 11884,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11878,
                        "src": "1368:5:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "arguments": [
                          {
                            "expression": {
                              "id": 11887,
                              "name": "Common",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11776,
                              "src": "1384:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_module_8329",
                                "typeString": "module \"@prb/math/src/Common.sol\""
                              }
                            },
                            "id": 11888,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "1391:10:37",
                            "memberName": "MAX_UINT40",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6636,
                            "src": "1384:17:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          ],
                          "id": 11886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1376:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint128_$",
                            "typeString": "type(uint128)"
                          },
                          "typeName": {
                            "id": 11885,
                            "name": "uint128",
                            "nodeType": "ElementaryTypeName",
                            "src": "1376:7:37",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 11889,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1376:26:37",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "1368:34:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 11898,
                    "nodeType": "IfStatement",
                    "src": "1364:109:37",
                    "trueBody": {
                      "id": 11897,
                      "nodeType": "Block",
                      "src": "1404:69:37",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 11894,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11872,
                                "src": "1464:1:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                                  "typeString": "UD21x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                                  "typeString": "UD21x18"
                                }
                              ],
                              "expression": {
                                "id": 11891,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11777,
                                "src": "1421:6:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_12011",
                                  "typeString": "module \"@prb/math/src/ud21x18/Errors.sol\""
                                }
                              },
                              "id": 11893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1428:35:37",
                              "memberName": "PRBMath_UD21x18_IntoUint40_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12010,
                              "src": "1421:42:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD21x18_$12015_$returns$_t_error_$",
                                "typeString": "function (UD21x18) pure returns (error)"
                              }
                            },
                            "id": 11895,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1421:45:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 11896,
                          "nodeType": "RevertStatement",
                          "src": "1414:52:37"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 11904,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 11899,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11875,
                        "src": "1478:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 11902,
                            "name": "xUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11878,
                            "src": "1494:5:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          ],
                          "id": 11901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1487:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint40_$",
                            "typeString": "type(uint40)"
                          },
                          "typeName": {
                            "id": 11900,
                            "name": "uint40",
                            "nodeType": "ElementaryTypeName",
                            "src": "1487:6:37",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 11903,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1487:13:37",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "src": "1478:22:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "id": 11905,
                    "nodeType": "ExpressionStatement",
                    "src": "1478:22:37"
                  }
                ]
              },
              "documentation": {
                "id": 11869,
                "nodeType": "StructuredDocumentation",
                "src": "1165:94:37",
                "text": "@notice Casts a UD21x18 number into uint40.\n @dev Requirements:\n - x ≤ MAX_UINT40"
              },
              "id": 11907,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint40",
              "nameLocation": "1268:10:37",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11873,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11872,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1287:1:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11907,
                    "src": "1279:9:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                      "typeString": "UD21x18"
                    },
                    "typeName": {
                      "id": 11871,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11870,
                        "name": "UD21x18",
                        "nameLocations": [
                          "1279:7:37"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12015,
                        "src": "1279:7:37"
                      },
                      "referencedDeclaration": 12015,
                      "src": "1279:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                        "typeString": "UD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1278:11:37"
              },
              "returnParameters": {
                "id": 11876,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11875,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1311:6:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11907,
                    "src": "1304:13:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    },
                    "typeName": {
                      "id": 11874,
                      "name": "uint40",
                      "nodeType": "ElementaryTypeName",
                      "src": "1304:6:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1303:15:37"
              },
              "scope": 11959,
              "src": "1259:244:37",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11923,
                "nodeType": "Block",
                "src": "1593:33:37",
                "statements": [
                  {
                    "expression": {
                      "id": 11921,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 11916,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11914,
                        "src": "1599:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                          "typeString": "UD21x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 11919,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11910,
                            "src": "1621:1:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          ],
                          "expression": {
                            "id": 11917,
                            "name": "UD21x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12015,
                            "src": "1608:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD21x18_$12015_$",
                              "typeString": "type(UD21x18)"
                            }
                          },
                          "id": 11918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1616:4:37",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "1608:12:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint128_$returns$_t_userDefinedValueType$_UD21x18_$12015_$",
                            "typeString": "function (uint128) pure returns (UD21x18)"
                          }
                        },
                        "id": 11920,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1608:15:37",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                          "typeString": "UD21x18"
                        }
                      },
                      "src": "1599:24:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                        "typeString": "UD21x18"
                      }
                    },
                    "id": 11922,
                    "nodeType": "ExpressionStatement",
                    "src": "1599:24:37"
                  }
                ]
              },
              "documentation": {
                "id": 11908,
                "nodeType": "StructuredDocumentation",
                "src": "1505:30:37",
                "text": "@notice Alias for {wrap}."
              },
              "id": 11924,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "ud21x18",
              "nameLocation": "1544:7:37",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11911,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11910,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1560:1:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11924,
                    "src": "1552:9:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "typeName": {
                      "id": 11909,
                      "name": "uint128",
                      "nodeType": "ElementaryTypeName",
                      "src": "1552:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1551:11:37"
              },
              "returnParameters": {
                "id": 11915,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11914,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1585:6:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11924,
                    "src": "1577:14:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                      "typeString": "UD21x18"
                    },
                    "typeName": {
                      "id": 11913,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11912,
                        "name": "UD21x18",
                        "nameLocations": [
                          "1577:7:37"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12015,
                        "src": "1577:7:37"
                      },
                      "referencedDeclaration": 12015,
                      "src": "1577:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                        "typeString": "UD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1576:16:37"
              },
              "scope": 11959,
              "src": "1535:91:37",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11940,
                "nodeType": "Block",
                "src": "1735:35:37",
                "statements": [
                  {
                    "expression": {
                      "id": 11938,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 11933,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11931,
                        "src": "1741:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 11936,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11928,
                            "src": "1765:1:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                              "typeString": "UD21x18"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                              "typeString": "UD21x18"
                            }
                          ],
                          "expression": {
                            "id": 11934,
                            "name": "UD21x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12015,
                            "src": "1750:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD21x18_$12015_$",
                              "typeString": "type(UD21x18)"
                            }
                          },
                          "id": 11935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1758:6:37",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "src": "1750:14:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD21x18_$12015_$returns$_t_uint128_$",
                            "typeString": "function (UD21x18) pure returns (uint128)"
                          }
                        },
                        "id": 11937,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1750:17:37",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "1741:26:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "id": 11939,
                    "nodeType": "ExpressionStatement",
                    "src": "1741:26:37"
                  }
                ]
              },
              "documentation": {
                "id": 11925,
                "nodeType": "StructuredDocumentation",
                "src": "1628:50:37",
                "text": "@notice Unwrap a UD21x18 number into uint128."
              },
              "id": 11941,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "unwrap",
              "nameLocation": "1687:6:37",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11929,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11928,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1702:1:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11941,
                    "src": "1694:9:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                      "typeString": "UD21x18"
                    },
                    "typeName": {
                      "id": 11927,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11926,
                        "name": "UD21x18",
                        "nameLocations": [
                          "1694:7:37"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12015,
                        "src": "1694:7:37"
                      },
                      "referencedDeclaration": 12015,
                      "src": "1694:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                        "typeString": "UD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1693:11:37"
              },
              "returnParameters": {
                "id": 11932,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11931,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1727:6:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11941,
                    "src": "1719:14:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "typeName": {
                      "id": 11930,
                      "name": "uint128",
                      "nodeType": "ElementaryTypeName",
                      "src": "1719:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1718:16:37"
              },
              "scope": 11959,
              "src": "1678:92:37",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 11957,
                "nodeType": "Block",
                "src": "1876:33:37",
                "statements": [
                  {
                    "expression": {
                      "id": 11955,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 11950,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11948,
                        "src": "1882:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                          "typeString": "UD21x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 11953,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11944,
                            "src": "1904:1:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          ],
                          "expression": {
                            "id": 11951,
                            "name": "UD21x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12015,
                            "src": "1891:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD21x18_$12015_$",
                              "typeString": "type(UD21x18)"
                            }
                          },
                          "id": 11952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1899:4:37",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "1891:12:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint128_$returns$_t_userDefinedValueType$_UD21x18_$12015_$",
                            "typeString": "function (uint128) pure returns (UD21x18)"
                          }
                        },
                        "id": 11954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1891:15:37",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                          "typeString": "UD21x18"
                        }
                      },
                      "src": "1882:24:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                        "typeString": "UD21x18"
                      }
                    },
                    "id": 11956,
                    "nodeType": "ExpressionStatement",
                    "src": "1882:24:37"
                  }
                ]
              },
              "documentation": {
                "id": 11942,
                "nodeType": "StructuredDocumentation",
                "src": "1772:49:37",
                "text": "@notice Wraps a uint128 number into UD21x18."
              },
              "id": 11958,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "wrap",
              "nameLocation": "1830:4:37",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 11945,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11944,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1843:1:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11958,
                    "src": "1835:9:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "typeName": {
                      "id": 11943,
                      "name": "uint128",
                      "nodeType": "ElementaryTypeName",
                      "src": "1835:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1834:11:37"
              },
              "returnParameters": {
                "id": 11949,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 11948,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1868:6:37",
                    "nodeType": "VariableDeclaration",
                    "scope": 11958,
                    "src": "1860:14:37",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                      "typeString": "UD21x18"
                    },
                    "typeName": {
                      "id": 11947,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 11946,
                        "name": "UD21x18",
                        "nameLocations": [
                          "1860:7:37"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12015,
                        "src": "1860:7:37"
                      },
                      "referencedDeclaration": 12015,
                      "src": "1860:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                        "typeString": "UD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1859:16:37"
              },
              "scope": 11959,
              "src": "1821:88:37",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            }
          ],
          "src": "32:1878:37"
        },
        "id": 37
      },
      "@prb/math/src/ud21x18/Constants.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/ud21x18/Constants.sol",
          "exportedSymbols": {
            "E": [
              11970
            ],
            "MAX_UD21x18": [
              11981
            ],
            "PI": [
              11989
            ],
            "UD21x18": [
              12015
            ],
            "UNIT": [
              12000
            ],
            "uMAX_UD21x18": [
              11974
            ],
            "uUNIT": [
              11993
            ]
          },
          "id": 12001,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11960,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:38"
            },
            {
              "absolutePath": "@prb/math/src/ud21x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 11962,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12001,
              "sourceUnit": 12025,
              "src": "59:42:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 11961,
                    "name": "UD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12015,
                    "src": "68:7:38",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "constant": true,
              "id": 11970,
              "mutability": "constant",
              "name": "E",
              "nameLocation": "165:1:38",
              "nodeType": "VariableDeclaration",
              "scope": 12001,
              "src": "148:55:38",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                "typeString": "UD21x18"
              },
              "typeName": {
                "id": 11965,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 11964,
                  "name": "UD21x18",
                  "nameLocations": [
                    "148:7:38"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 12015,
                  "src": "148:7:38"
                },
                "referencedDeclaration": 12015,
                "src": "148:7:38",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                  "typeString": "UD21x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "325f373138323831383238343539303435323335",
                    "id": 11968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "182:20:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2718281828459045235_by_1",
                      "typeString": "int_const 2718281828459045235"
                    },
                    "value": "2_718281828459045235"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_2718281828459045235_by_1",
                      "typeString": "int_const 2718281828459045235"
                    }
                  ],
                  "expression": {
                    "id": 11966,
                    "name": "UD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12015,
                    "src": "169:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD21x18_$12015_$",
                      "typeString": "type(UD21x18)"
                    }
                  },
                  "id": 11967,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "177:4:38",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "169:12:38",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint128_$returns$_t_userDefinedValueType$_UD21x18_$12015_$",
                    "typeString": "function (uint128) pure returns (UD21x18)"
                  }
                },
                "id": 11969,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "169:34:38",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                  "typeString": "UD21x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 11974,
              "mutability": "constant",
              "name": "uMAX_UD21x18",
              "nameLocation": "277:12:38",
              "nodeType": "VariableDeclaration",
              "scope": 12001,
              "src": "260:72:38",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint128",
                "typeString": "uint128"
              },
              "typeName": {
                "id": 11972,
                "name": "uint128",
                "nodeType": "ElementaryTypeName",
                "src": "260:7:38",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                }
              },
              "value": {
                "hexValue": "3334303238323336363932303933383436333436335f333734363037343331373638323131343535",
                "id": 11973,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "292:40:38",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1",
                  "typeString": "int_const 3402...(31 digits omitted)...1455"
                },
                "value": "340282366920938463463_374607431768211455"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 11981,
              "mutability": "constant",
              "name": "MAX_UD21x18",
              "nameLocation": "351:11:38",
              "nodeType": "VariableDeclaration",
              "scope": 12001,
              "src": "334:57:38",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                "typeString": "UD21x18"
              },
              "typeName": {
                "id": 11976,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 11975,
                  "name": "UD21x18",
                  "nameLocations": [
                    "334:7:38"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 12015,
                  "src": "334:7:38"
                },
                "referencedDeclaration": 12015,
                "src": "334:7:38",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                  "typeString": "UD21x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 11979,
                    "name": "uMAX_UD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11974,
                    "src": "378:12:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  ],
                  "expression": {
                    "id": 11977,
                    "name": "UD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12015,
                    "src": "365:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD21x18_$12015_$",
                      "typeString": "type(UD21x18)"
                    }
                  },
                  "id": 11978,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "373:4:38",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "365:12:38",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint128_$returns$_t_userDefinedValueType$_UD21x18_$12015_$",
                    "typeString": "function (uint128) pure returns (UD21x18)"
                  }
                },
                "id": 11980,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "365:26:38",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                  "typeString": "UD21x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 11989,
              "mutability": "constant",
              "name": "PI",
              "nameLocation": "444:2:38",
              "nodeType": "VariableDeclaration",
              "scope": 12001,
              "src": "427:56:38",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                "typeString": "UD21x18"
              },
              "typeName": {
                "id": 11984,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 11983,
                  "name": "UD21x18",
                  "nameLocations": [
                    "427:7:38"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 12015,
                  "src": "427:7:38"
                },
                "referencedDeclaration": 12015,
                "src": "427:7:38",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                  "typeString": "UD21x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "335f313431353932363533353839373933323338",
                    "id": 11987,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "462:20:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3141592653589793238_by_1",
                      "typeString": "int_const 3141592653589793238"
                    },
                    "value": "3_141592653589793238"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_3141592653589793238_by_1",
                      "typeString": "int_const 3141592653589793238"
                    }
                  ],
                  "expression": {
                    "id": 11985,
                    "name": "UD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12015,
                    "src": "449:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD21x18_$12015_$",
                      "typeString": "type(UD21x18)"
                    }
                  },
                  "id": 11986,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "457:4:38",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "449:12:38",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint128_$returns$_t_userDefinedValueType$_UD21x18_$12015_$",
                    "typeString": "function (uint128) pure returns (UD21x18)"
                  }
                },
                "id": 11988,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "449:34:38",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                  "typeString": "UD21x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 11993,
              "mutability": "constant",
              "name": "uUNIT",
              "nameLocation": "575:5:38",
              "nodeType": "VariableDeclaration",
              "scope": 12001,
              "src": "558:29:38",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 11991,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "558:7:38",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "31653138",
                "id": 11992,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "583:4:38",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                  "typeString": "int_const 1000000000000000000"
                },
                "value": "1e18"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12000,
              "mutability": "constant",
              "name": "UNIT",
              "nameLocation": "606:4:38",
              "nodeType": "VariableDeclaration",
              "scope": 12001,
              "src": "589:42:38",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                "typeString": "UD21x18"
              },
              "typeName": {
                "id": 11995,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 11994,
                  "name": "UD21x18",
                  "nameLocations": [
                    "589:7:38"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 12015,
                  "src": "589:7:38"
                },
                "referencedDeclaration": 12015,
                "src": "589:7:38",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                  "typeString": "UD21x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "31653138",
                    "id": 11998,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "626:4:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "value": "1e18"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    }
                  ],
                  "expression": {
                    "id": 11996,
                    "name": "UD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12015,
                    "src": "613:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD21x18_$12015_$",
                      "typeString": "type(UD21x18)"
                    }
                  },
                  "id": 11997,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "621:4:38",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "613:12:38",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint128_$returns$_t_userDefinedValueType$_UD21x18_$12015_$",
                    "typeString": "function (uint128) pure returns (UD21x18)"
                  }
                },
                "id": 11999,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "613:18:38",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                  "typeString": "UD21x18"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "32:601:38"
        },
        "id": 38
      },
      "@prb/math/src/ud21x18/Errors.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/ud21x18/Errors.sol",
          "exportedSymbols": {
            "PRBMath_UD21x18_IntoUint40_Overflow": [
              12010
            ],
            "UD21x18": [
              12015
            ]
          },
          "id": 12011,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12002,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:39"
            },
            {
              "absolutePath": "@prb/math/src/ud21x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 12004,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12011,
              "sourceUnit": 12025,
              "src": "59:42:39",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12003,
                    "name": "UD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12015,
                    "src": "68:7:39",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "documentation": {
                "id": 12005,
                "nodeType": "StructuredDocumentation",
                "src": "103:84:39",
                "text": "@notice Thrown when trying to cast a UD21x18 number that doesn't fit in uint40."
              },
              "errorSelector": "ca90a6ad",
              "id": 12010,
              "name": "PRBMath_UD21x18_IntoUint40_Overflow",
              "nameLocation": "193:35:39",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12009,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12008,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "237:1:39",
                    "nodeType": "VariableDeclaration",
                    "scope": 12010,
                    "src": "229:9:39",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                      "typeString": "UD21x18"
                    },
                    "typeName": {
                      "id": 12007,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12006,
                        "name": "UD21x18",
                        "nameLocations": [
                          "229:7:39"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12015,
                        "src": "229:7:39"
                      },
                      "referencedDeclaration": 12015,
                      "src": "229:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                        "typeString": "UD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "228:11:39"
              },
              "src": "187:53:39"
            }
          ],
          "src": "32:209:39"
        },
        "id": 39
      },
      "@prb/math/src/ud21x18/ValueType.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/ud21x18/ValueType.sol",
          "exportedSymbols": {
            "Casting": [
              12013
            ],
            "UD21x18": [
              12015
            ]
          },
          "id": 12025,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12012,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:40"
            },
            {
              "absolutePath": "@prb/math/src/ud21x18/Casting.sol",
              "file": "./Casting.sol",
              "id": 12013,
              "nameLocation": "85:7:40",
              "nodeType": "ImportDirective",
              "scope": 12025,
              "sourceUnit": 11959,
              "src": "59:34:40",
              "symbolAliases": [],
              "unitAlias": "Casting"
            },
            {
              "canonicalName": "UD21x18",
              "id": 12015,
              "name": "UD21x18",
              "nameLocation": "475:7:40",
              "nodeType": "UserDefinedValueTypeDefinition",
              "src": "470:24:40",
              "underlyingType": {
                "id": 12014,
                "name": "uint128",
                "nodeType": "ElementaryTypeName",
                "src": "486:7:40",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                }
              }
            },
            {
              "functionList": [
                {
                  "function": {
                    "id": 12016,
                    "name": "Casting.intoSD59x18",
                    "nameLocations": [
                      "707:7:40",
                      "715:11:40"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11810,
                    "src": "707:19:40"
                  }
                },
                {
                  "function": {
                    "id": 12017,
                    "name": "Casting.intoUD60x18",
                    "nameLocations": [
                      "732:7:40",
                      "740:11:40"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11831,
                    "src": "732:19:40"
                  }
                },
                {
                  "function": {
                    "id": 12018,
                    "name": "Casting.intoUint128",
                    "nameLocations": [
                      "757:7:40",
                      "765:11:40"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11848,
                    "src": "757:19:40"
                  }
                },
                {
                  "function": {
                    "id": 12019,
                    "name": "Casting.intoUint256",
                    "nameLocations": [
                      "782:7:40",
                      "790:11:40"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11868,
                    "src": "782:19:40"
                  }
                },
                {
                  "function": {
                    "id": 12020,
                    "name": "Casting.intoUint40",
                    "nameLocations": [
                      "807:7:40",
                      "815:10:40"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11907,
                    "src": "807:18:40"
                  }
                },
                {
                  "function": {
                    "id": 12021,
                    "name": "Casting.unwrap",
                    "nameLocations": [
                      "831:7:40",
                      "839:6:40"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11941,
                    "src": "831:14:40"
                  }
                }
              ],
              "global": true,
              "id": 12024,
              "nodeType": "UsingForDirective",
              "src": "695:172:40",
              "typeName": {
                "id": 12023,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12022,
                  "name": "UD21x18",
                  "nameLocations": [
                    "852:7:40"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 12015,
                  "src": "852:7:40"
                },
                "referencedDeclaration": 12015,
                "src": "852:7:40",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                  "typeString": "UD21x18"
                }
              }
            }
          ],
          "src": "32:836:40"
        },
        "id": 40
      },
      "@prb/math/src/ud2x18/Casting.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/ud2x18/Casting.sol",
          "exportedSymbols": {
            "Common": [
              12027
            ],
            "Errors": [
              12028
            ],
            "SD59x18": [
              11699
            ],
            "UD2x18": [
              12269
            ],
            "UD60x18": [
              14179
            ],
            "intoSD59x18": [
              12061
            ],
            "intoUD60x18": [
              12082
            ],
            "intoUint128": [
              12102
            ],
            "intoUint256": [
              12122
            ],
            "intoUint40": [
              12161
            ],
            "ud2x18": [
              12178
            ],
            "unwrap": [
              12195
            ],
            "wrap": [
              12212
            ]
          },
          "id": 12213,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12026,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:41"
            },
            {
              "absolutePath": "@prb/math/src/Common.sol",
              "file": "../Common.sol",
              "id": 12027,
              "nameLocation": "85:6:41",
              "nodeType": "ImportDirective",
              "scope": 12213,
              "sourceUnit": 8329,
              "src": "59:33:41",
              "symbolAliases": [],
              "unitAlias": "Common"
            },
            {
              "absolutePath": "@prb/math/src/ud2x18/Errors.sol",
              "file": "./Errors.sol",
              "id": 12028,
              "nameLocation": "118:6:41",
              "nodeType": "ImportDirective",
              "scope": 12213,
              "sourceUnit": 12265,
              "src": "93:32:41",
              "symbolAliases": [],
              "unitAlias": "Errors"
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/ValueType.sol",
              "file": "../sd59x18/ValueType.sol",
              "id": 12030,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12213,
              "sourceUnit": 11774,
              "src": "126:51:41",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12029,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "135:7:41",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/ValueType.sol",
              "file": "../ud60x18/ValueType.sol",
              "id": 12032,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12213,
              "sourceUnit": 14250,
              "src": "178:51:41",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12031,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "187:7:41",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud2x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 12034,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12213,
              "sourceUnit": 12279,
              "src": "230:41:41",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12033,
                    "name": "UD2x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12269,
                    "src": "239:6:41",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "body": {
                "id": 12060,
                "nodeType": "Block",
                "src": "446:65:41",
                "statements": [
                  {
                    "expression": {
                      "id": 12058,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12044,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12042,
                        "src": "452:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 12053,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12038,
                                        "src": "503:1:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                                          "typeString": "UD2x18"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                                          "typeString": "UD2x18"
                                        }
                                      ],
                                      "expression": {
                                        "id": 12051,
                                        "name": "UD2x18",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12269,
                                        "src": "489:6:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_userDefinedValueType$_UD2x18_$12269_$",
                                          "typeString": "type(UD2x18)"
                                        }
                                      },
                                      "id": 12052,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "496:6:41",
                                      "memberName": "unwrap",
                                      "nodeType": "MemberAccess",
                                      "src": "489:13:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD2x18_$12269_$returns$_t_uint64_$",
                                        "typeString": "function (UD2x18) pure returns (uint64)"
                                      }
                                    },
                                    "id": 12054,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "489:16:41",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "id": 12050,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "481:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 12049,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "481:7:41",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12055,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "481:25:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 12048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "474:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 12047,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "474:6:41",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12056,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "474:33:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "expression": {
                            "id": 12045,
                            "name": "SD59x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11699,
                            "src": "461:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "type(SD59x18)"
                            }
                          },
                          "id": 12046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "469:4:41",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "461:12:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 12057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "461:47:41",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "452:56:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 12059,
                    "nodeType": "ExpressionStatement",
                    "src": "452:56:41"
                  }
                ]
              },
              "documentation": {
                "id": 12035,
                "nodeType": "StructuredDocumentation",
                "src": "273:112:41",
                "text": "@notice Casts a UD2x18 number into SD59x18.\n @dev There is no overflow check because UD2x18 ⊆ SD59x18."
              },
              "id": 12061,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoSD59x18",
              "nameLocation": "394:11:41",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12039,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12038,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "413:1:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12061,
                    "src": "406:8:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                      "typeString": "UD2x18"
                    },
                    "typeName": {
                      "id": 12037,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12036,
                        "name": "UD2x18",
                        "nameLocations": [
                          "406:6:41"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12269,
                        "src": "406:6:41"
                      },
                      "referencedDeclaration": 12269,
                      "src": "406:6:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                        "typeString": "UD2x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "405:10:41"
              },
              "returnParameters": {
                "id": 12043,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12042,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "438:6:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12061,
                    "src": "430:14:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 12041,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12040,
                        "name": "SD59x18",
                        "nameLocations": [
                          "430:7:41"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "430:7:41"
                      },
                      "referencedDeclaration": 11699,
                      "src": "430:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "429:16:41"
              },
              "scope": 12213,
              "src": "385:126:41",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12081,
                "nodeType": "Block",
                "src": "686:48:41",
                "statements": [
                  {
                    "expression": {
                      "id": 12079,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12071,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12069,
                        "src": "692:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 12076,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12065,
                                "src": "728:1:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                                  "typeString": "UD2x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                                  "typeString": "UD2x18"
                                }
                              ],
                              "expression": {
                                "id": 12074,
                                "name": "UD2x18",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12269,
                                "src": "714:6:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_userDefinedValueType$_UD2x18_$12269_$",
                                  "typeString": "type(UD2x18)"
                                }
                              },
                              "id": 12075,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "721:6:41",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "src": "714:13:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD2x18_$12269_$returns$_t_uint64_$",
                                "typeString": "function (UD2x18) pure returns (uint64)"
                              }
                            },
                            "id": 12077,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "714:16:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "expression": {
                            "id": 12072,
                            "name": "UD60x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14179,
                            "src": "701:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "type(UD60x18)"
                            }
                          },
                          "id": 12073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "709:4:41",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "701:12:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 12078,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "701:30:41",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "692:39:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 12080,
                    "nodeType": "ExpressionStatement",
                    "src": "692:39:41"
                  }
                ]
              },
              "documentation": {
                "id": 12062,
                "nodeType": "StructuredDocumentation",
                "src": "513:112:41",
                "text": "@notice Casts a UD2x18 number into UD60x18.\n @dev There is no overflow check because UD2x18 ⊆ UD60x18."
              },
              "id": 12082,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUD60x18",
              "nameLocation": "634:11:41",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12066,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12065,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "653:1:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12082,
                    "src": "646:8:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                      "typeString": "UD2x18"
                    },
                    "typeName": {
                      "id": 12064,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12063,
                        "name": "UD2x18",
                        "nameLocations": [
                          "646:6:41"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12269,
                        "src": "646:6:41"
                      },
                      "referencedDeclaration": 12269,
                      "src": "646:6:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                        "typeString": "UD2x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "645:10:41"
              },
              "returnParameters": {
                "id": 12070,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12069,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "678:6:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12082,
                    "src": "670:14:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12068,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12067,
                        "name": "UD60x18",
                        "nameLocations": [
                          "670:7:41"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "670:7:41"
                      },
                      "referencedDeclaration": 14179,
                      "src": "670:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "669:16:41"
              },
              "scope": 12213,
              "src": "625:109:41",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12101,
                "nodeType": "Block",
                "src": "909:43:41",
                "statements": [
                  {
                    "expression": {
                      "id": 12099,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12091,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12089,
                        "src": "915:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 12096,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12086,
                                "src": "946:1:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                                  "typeString": "UD2x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                                  "typeString": "UD2x18"
                                }
                              ],
                              "expression": {
                                "id": 12094,
                                "name": "UD2x18",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12269,
                                "src": "932:6:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_userDefinedValueType$_UD2x18_$12269_$",
                                  "typeString": "type(UD2x18)"
                                }
                              },
                              "id": 12095,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "939:6:41",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "src": "932:13:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD2x18_$12269_$returns$_t_uint64_$",
                                "typeString": "function (UD2x18) pure returns (uint64)"
                              }
                            },
                            "id": 12097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "932:16:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 12093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "924:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint128_$",
                            "typeString": "type(uint128)"
                          },
                          "typeName": {
                            "id": 12092,
                            "name": "uint128",
                            "nodeType": "ElementaryTypeName",
                            "src": "924:7:41",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12098,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "924:25:41",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "915:34:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "id": 12100,
                    "nodeType": "ExpressionStatement",
                    "src": "915:34:41"
                  }
                ]
              },
              "documentation": {
                "id": 12083,
                "nodeType": "StructuredDocumentation",
                "src": "736:112:41",
                "text": "@notice Casts a UD2x18 number into uint128.\n @dev There is no overflow check because UD2x18 ⊆ uint128."
              },
              "id": 12102,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint128",
              "nameLocation": "857:11:41",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12087,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12086,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "876:1:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12102,
                    "src": "869:8:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                      "typeString": "UD2x18"
                    },
                    "typeName": {
                      "id": 12085,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12084,
                        "name": "UD2x18",
                        "nameLocations": [
                          "869:6:41"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12269,
                        "src": "869:6:41"
                      },
                      "referencedDeclaration": 12269,
                      "src": "869:6:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                        "typeString": "UD2x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "868:10:41"
              },
              "returnParameters": {
                "id": 12090,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12089,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "901:6:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12102,
                    "src": "893:14:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "typeName": {
                      "id": 12088,
                      "name": "uint128",
                      "nodeType": "ElementaryTypeName",
                      "src": "893:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "892:16:41"
              },
              "scope": 12213,
              "src": "848:104:41",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12121,
                "nodeType": "Block",
                "src": "1127:43:41",
                "statements": [
                  {
                    "expression": {
                      "id": 12119,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12111,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12109,
                        "src": "1133:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 12116,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12106,
                                "src": "1164:1:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                                  "typeString": "UD2x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                                  "typeString": "UD2x18"
                                }
                              ],
                              "expression": {
                                "id": 12114,
                                "name": "UD2x18",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12269,
                                "src": "1150:6:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_userDefinedValueType$_UD2x18_$12269_$",
                                  "typeString": "type(UD2x18)"
                                }
                              },
                              "id": 12115,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1157:6:41",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "src": "1150:13:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD2x18_$12269_$returns$_t_uint64_$",
                                "typeString": "function (UD2x18) pure returns (uint64)"
                              }
                            },
                            "id": 12117,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1150:16:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 12113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1142:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12112,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1142:7:41",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12118,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1142:25:41",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1133:34:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12120,
                    "nodeType": "ExpressionStatement",
                    "src": "1133:34:41"
                  }
                ]
              },
              "documentation": {
                "id": 12103,
                "nodeType": "StructuredDocumentation",
                "src": "954:112:41",
                "text": "@notice Casts a UD2x18 number into uint256.\n @dev There is no overflow check because UD2x18 ⊆ uint256."
              },
              "id": 12122,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint256",
              "nameLocation": "1075:11:41",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12107,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12106,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1094:1:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12122,
                    "src": "1087:8:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                      "typeString": "UD2x18"
                    },
                    "typeName": {
                      "id": 12105,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12104,
                        "name": "UD2x18",
                        "nameLocations": [
                          "1087:6:41"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12269,
                        "src": "1087:6:41"
                      },
                      "referencedDeclaration": 12269,
                      "src": "1087:6:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                        "typeString": "UD2x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1086:10:41"
              },
              "returnParameters": {
                "id": 12110,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12109,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1119:6:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12122,
                    "src": "1111:14:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 12108,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1111:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1110:16:41"
              },
              "scope": 12213,
              "src": "1066:104:41",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12160,
                "nodeType": "Block",
                "src": "1324:180:41",
                "statements": [
                  {
                    "assignments": [
                      12132
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12132,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "1337:5:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 12160,
                        "src": "1330:12:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 12131,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1330:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 12137,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 12135,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12126,
                          "src": "1359:1:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                            "typeString": "UD2x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                            "typeString": "UD2x18"
                          }
                        ],
                        "expression": {
                          "id": 12133,
                          "name": "UD2x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12269,
                          "src": "1345:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_UD2x18_$12269_$",
                            "typeString": "type(UD2x18)"
                          }
                        },
                        "id": 12134,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1352:6:41",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "1345:13:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD2x18_$12269_$returns$_t_uint64_$",
                          "typeString": "function (UD2x18) pure returns (uint64)"
                        }
                      },
                      "id": 12136,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1345:16:41",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1330:31:41"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "id": 12144,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 12138,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12132,
                        "src": "1371:5:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "arguments": [
                          {
                            "expression": {
                              "id": 12141,
                              "name": "Common",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12027,
                              "src": "1386:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_module_8329",
                                "typeString": "module \"@prb/math/src/Common.sol\""
                              }
                            },
                            "id": 12142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "1393:10:41",
                            "memberName": "MAX_UINT40",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6636,
                            "src": "1386:17:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          ],
                          "id": 12140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1379:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": {
                            "id": 12139,
                            "name": "uint64",
                            "nodeType": "ElementaryTypeName",
                            "src": "1379:6:41",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12143,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1379:25:41",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "src": "1371:33:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 12152,
                    "nodeType": "IfStatement",
                    "src": "1367:107:41",
                    "trueBody": {
                      "id": 12151,
                      "nodeType": "Block",
                      "src": "1406:68:41",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 12148,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12126,
                                "src": "1465:1:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                                  "typeString": "UD2x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                                  "typeString": "UD2x18"
                                }
                              ],
                              "expression": {
                                "id": 12145,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12028,
                                "src": "1423:6:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_12265",
                                  "typeString": "module \"@prb/math/src/ud2x18/Errors.sol\""
                                }
                              },
                              "id": 12147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1430:34:41",
                              "memberName": "PRBMath_UD2x18_IntoUint40_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12264,
                              "src": "1423:41:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD2x18_$12269_$returns$_t_error_$",
                                "typeString": "function (UD2x18) pure returns (error)"
                              }
                            },
                            "id": 12149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1423:44:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 12150,
                          "nodeType": "RevertStatement",
                          "src": "1416:51:41"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 12158,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12153,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12129,
                        "src": "1479:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 12156,
                            "name": "xUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12132,
                            "src": "1495:5:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 12155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1488:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint40_$",
                            "typeString": "type(uint40)"
                          },
                          "typeName": {
                            "id": 12154,
                            "name": "uint40",
                            "nodeType": "ElementaryTypeName",
                            "src": "1488:6:41",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12157,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1488:13:41",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "src": "1479:22:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "id": 12159,
                    "nodeType": "ExpressionStatement",
                    "src": "1479:22:41"
                  }
                ]
              },
              "documentation": {
                "id": 12123,
                "nodeType": "StructuredDocumentation",
                "src": "1172:93:41",
                "text": "@notice Casts a UD2x18 number into uint40.\n @dev Requirements:\n - x ≤ MAX_UINT40"
              },
              "id": 12161,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint40",
              "nameLocation": "1274:10:41",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12127,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12126,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1292:1:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12161,
                    "src": "1285:8:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                      "typeString": "UD2x18"
                    },
                    "typeName": {
                      "id": 12125,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12124,
                        "name": "UD2x18",
                        "nameLocations": [
                          "1285:6:41"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12269,
                        "src": "1285:6:41"
                      },
                      "referencedDeclaration": 12269,
                      "src": "1285:6:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                        "typeString": "UD2x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1284:10:41"
              },
              "returnParameters": {
                "id": 12130,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12129,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1316:6:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12161,
                    "src": "1309:13:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    },
                    "typeName": {
                      "id": 12128,
                      "name": "uint40",
                      "nodeType": "ElementaryTypeName",
                      "src": "1309:6:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1308:15:41"
              },
              "scope": 12213,
              "src": "1265:239:41",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12177,
                "nodeType": "Block",
                "src": "1591:32:41",
                "statements": [
                  {
                    "expression": {
                      "id": 12175,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12170,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12168,
                        "src": "1597:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                          "typeString": "UD2x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 12173,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12164,
                            "src": "1618:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "expression": {
                            "id": 12171,
                            "name": "UD2x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12269,
                            "src": "1606:6:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD2x18_$12269_$",
                              "typeString": "type(UD2x18)"
                            }
                          },
                          "id": 12172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1613:4:41",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "1606:11:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint64_$returns$_t_userDefinedValueType$_UD2x18_$12269_$",
                            "typeString": "function (uint64) pure returns (UD2x18)"
                          }
                        },
                        "id": 12174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1606:14:41",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                          "typeString": "UD2x18"
                        }
                      },
                      "src": "1597:23:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                        "typeString": "UD2x18"
                      }
                    },
                    "id": 12176,
                    "nodeType": "ExpressionStatement",
                    "src": "1597:23:41"
                  }
                ]
              },
              "documentation": {
                "id": 12162,
                "nodeType": "StructuredDocumentation",
                "src": "1506:30:41",
                "text": "@notice Alias for {wrap}."
              },
              "id": 12178,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "ud2x18",
              "nameLocation": "1545:6:41",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12165,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12164,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1559:1:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12178,
                    "src": "1552:8:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    },
                    "typeName": {
                      "id": 12163,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "1552:6:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1551:10:41"
              },
              "returnParameters": {
                "id": 12169,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12168,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1583:6:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12178,
                    "src": "1576:13:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                      "typeString": "UD2x18"
                    },
                    "typeName": {
                      "id": 12167,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12166,
                        "name": "UD2x18",
                        "nameLocations": [
                          "1576:6:41"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12269,
                        "src": "1576:6:41"
                      },
                      "referencedDeclaration": 12269,
                      "src": "1576:6:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                        "typeString": "UD2x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1575:15:41"
              },
              "scope": 12213,
              "src": "1536:87:41",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12194,
                "nodeType": "Block",
                "src": "1728:34:41",
                "statements": [
                  {
                    "expression": {
                      "id": 12192,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12187,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12185,
                        "src": "1734:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 12190,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12182,
                            "src": "1757:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                              "typeString": "UD2x18"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                              "typeString": "UD2x18"
                            }
                          ],
                          "expression": {
                            "id": 12188,
                            "name": "UD2x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12269,
                            "src": "1743:6:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD2x18_$12269_$",
                              "typeString": "type(UD2x18)"
                            }
                          },
                          "id": 12189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1750:6:41",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "src": "1743:13:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD2x18_$12269_$returns$_t_uint64_$",
                            "typeString": "function (UD2x18) pure returns (uint64)"
                          }
                        },
                        "id": 12191,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1743:16:41",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "src": "1734:25:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "id": 12193,
                    "nodeType": "ExpressionStatement",
                    "src": "1734:25:41"
                  }
                ]
              },
              "documentation": {
                "id": 12179,
                "nodeType": "StructuredDocumentation",
                "src": "1625:48:41",
                "text": "@notice Unwrap a UD2x18 number into uint64."
              },
              "id": 12195,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "unwrap",
              "nameLocation": "1682:6:41",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12183,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12182,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1696:1:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12195,
                    "src": "1689:8:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                      "typeString": "UD2x18"
                    },
                    "typeName": {
                      "id": 12181,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12180,
                        "name": "UD2x18",
                        "nameLocations": [
                          "1689:6:41"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12269,
                        "src": "1689:6:41"
                      },
                      "referencedDeclaration": 12269,
                      "src": "1689:6:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                        "typeString": "UD2x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1688:10:41"
              },
              "returnParameters": {
                "id": 12186,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12185,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1720:6:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12195,
                    "src": "1713:13:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    },
                    "typeName": {
                      "id": 12184,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "1713:6:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1712:15:41"
              },
              "scope": 12213,
              "src": "1673:89:41",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12211,
                "nodeType": "Block",
                "src": "1864:32:41",
                "statements": [
                  {
                    "expression": {
                      "id": 12209,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12204,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12202,
                        "src": "1870:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                          "typeString": "UD2x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 12207,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12198,
                            "src": "1891:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "expression": {
                            "id": 12205,
                            "name": "UD2x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12269,
                            "src": "1879:6:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD2x18_$12269_$",
                              "typeString": "type(UD2x18)"
                            }
                          },
                          "id": 12206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1886:4:41",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "1879:11:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint64_$returns$_t_userDefinedValueType$_UD2x18_$12269_$",
                            "typeString": "function (uint64) pure returns (UD2x18)"
                          }
                        },
                        "id": 12208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1879:14:41",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                          "typeString": "UD2x18"
                        }
                      },
                      "src": "1870:23:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                        "typeString": "UD2x18"
                      }
                    },
                    "id": 12210,
                    "nodeType": "ExpressionStatement",
                    "src": "1870:23:41"
                  }
                ]
              },
              "documentation": {
                "id": 12196,
                "nodeType": "StructuredDocumentation",
                "src": "1764:47:41",
                "text": "@notice Wraps a uint64 number into UD2x18."
              },
              "id": 12212,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "wrap",
              "nameLocation": "1820:4:41",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12199,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12198,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1832:1:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12212,
                    "src": "1825:8:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    },
                    "typeName": {
                      "id": 12197,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "1825:6:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1824:10:41"
              },
              "returnParameters": {
                "id": 12203,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12202,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1856:6:41",
                    "nodeType": "VariableDeclaration",
                    "scope": 12212,
                    "src": "1849:13:41",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                      "typeString": "UD2x18"
                    },
                    "typeName": {
                      "id": 12201,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12200,
                        "name": "UD2x18",
                        "nameLocations": [
                          "1849:6:41"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12269,
                        "src": "1849:6:41"
                      },
                      "referencedDeclaration": 12269,
                      "src": "1849:6:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                        "typeString": "UD2x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1848:15:41"
              },
              "scope": 12213,
              "src": "1811:85:41",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            }
          ],
          "src": "32:1865:41"
        },
        "id": 41
      },
      "@prb/math/src/ud2x18/Constants.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/ud2x18/Constants.sol",
          "exportedSymbols": {
            "E": [
              12224
            ],
            "MAX_UD2x18": [
              12235
            ],
            "PI": [
              12243
            ],
            "UD2x18": [
              12269
            ],
            "UNIT": [
              12251
            ],
            "uMAX_UD2x18": [
              12228
            ],
            "uUNIT": [
              12254
            ]
          },
          "id": 12255,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12214,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:42"
            },
            {
              "absolutePath": "@prb/math/src/ud2x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 12216,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12255,
              "sourceUnit": 12279,
              "src": "59:41:42",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12215,
                    "name": "UD2x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12269,
                    "src": "68:6:42",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "constant": true,
              "id": 12224,
              "mutability": "constant",
              "name": "E",
              "nameLocation": "162:1:42",
              "nodeType": "VariableDeclaration",
              "scope": 12255,
              "src": "146:53:42",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                "typeString": "UD2x18"
              },
              "typeName": {
                "id": 12219,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12218,
                  "name": "UD2x18",
                  "nameLocations": [
                    "146:6:42"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 12269,
                  "src": "146:6:42"
                },
                "referencedDeclaration": 12269,
                "src": "146:6:42",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                  "typeString": "UD2x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "325f373138323831383238343539303435323335",
                    "id": 12222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "178:20:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2718281828459045235_by_1",
                      "typeString": "int_const 2718281828459045235"
                    },
                    "value": "2_718281828459045235"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_2718281828459045235_by_1",
                      "typeString": "int_const 2718281828459045235"
                    }
                  ],
                  "expression": {
                    "id": 12220,
                    "name": "UD2x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12269,
                    "src": "166:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD2x18_$12269_$",
                      "typeString": "type(UD2x18)"
                    }
                  },
                  "id": 12221,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "173:4:42",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "166:11:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint64_$returns$_t_userDefinedValueType$_UD2x18_$12269_$",
                    "typeString": "function (uint64) pure returns (UD2x18)"
                  }
                },
                "id": 12223,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "166:33:42",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                  "typeString": "UD2x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12228,
              "mutability": "constant",
              "name": "uMAX_UD2x18",
              "nameLocation": "271:11:42",
              "nodeType": "VariableDeclaration",
              "scope": 12255,
              "src": "255:51:42",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              },
              "typeName": {
                "id": 12226,
                "name": "uint64",
                "nodeType": "ElementaryTypeName",
                "src": "255:6:42",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                }
              },
              "value": {
                "hexValue": "31385f343436373434303733373039353531363135",
                "id": 12227,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "285:21:42",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_18446744073709551615_by_1",
                  "typeString": "int_const 18446744073709551615"
                },
                "value": "18_446744073709551615"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12235,
              "mutability": "constant",
              "name": "MAX_UD2x18",
              "nameLocation": "324:10:42",
              "nodeType": "VariableDeclaration",
              "scope": 12255,
              "src": "308:53:42",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                "typeString": "UD2x18"
              },
              "typeName": {
                "id": 12230,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12229,
                  "name": "UD2x18",
                  "nameLocations": [
                    "308:6:42"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 12269,
                  "src": "308:6:42"
                },
                "referencedDeclaration": 12269,
                "src": "308:6:42",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                  "typeString": "UD2x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 12233,
                    "name": "uMAX_UD2x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12228,
                    "src": "349:11:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  ],
                  "expression": {
                    "id": 12231,
                    "name": "UD2x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12269,
                    "src": "337:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD2x18_$12269_$",
                      "typeString": "type(UD2x18)"
                    }
                  },
                  "id": 12232,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "344:4:42",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "337:11:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint64_$returns$_t_userDefinedValueType$_UD2x18_$12269_$",
                    "typeString": "function (uint64) pure returns (UD2x18)"
                  }
                },
                "id": 12234,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "337:24:42",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                  "typeString": "UD2x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12243,
              "mutability": "constant",
              "name": "PI",
              "nameLocation": "412:2:42",
              "nodeType": "VariableDeclaration",
              "scope": 12255,
              "src": "396:54:42",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                "typeString": "UD2x18"
              },
              "typeName": {
                "id": 12238,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12237,
                  "name": "UD2x18",
                  "nameLocations": [
                    "396:6:42"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 12269,
                  "src": "396:6:42"
                },
                "referencedDeclaration": 12269,
                "src": "396:6:42",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                  "typeString": "UD2x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "335f313431353932363533353839373933323338",
                    "id": 12241,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "429:20:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3141592653589793238_by_1",
                      "typeString": "int_const 3141592653589793238"
                    },
                    "value": "3_141592653589793238"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_3141592653589793238_by_1",
                      "typeString": "int_const 3141592653589793238"
                    }
                  ],
                  "expression": {
                    "id": 12239,
                    "name": "UD2x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12269,
                    "src": "417:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD2x18_$12269_$",
                      "typeString": "type(UD2x18)"
                    }
                  },
                  "id": 12240,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "424:4:42",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "417:11:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint64_$returns$_t_userDefinedValueType$_UD2x18_$12269_$",
                    "typeString": "function (uint64) pure returns (UD2x18)"
                  }
                },
                "id": 12242,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "417:33:42",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                  "typeString": "UD2x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12251,
              "mutability": "constant",
              "name": "UNIT",
              "nameLocation": "540:4:42",
              "nodeType": "VariableDeclaration",
              "scope": 12255,
              "src": "524:40:42",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                "typeString": "UD2x18"
              },
              "typeName": {
                "id": 12246,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12245,
                  "name": "UD2x18",
                  "nameLocations": [
                    "524:6:42"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 12269,
                  "src": "524:6:42"
                },
                "referencedDeclaration": 12269,
                "src": "524:6:42",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                  "typeString": "UD2x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "31653138",
                    "id": 12249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "559:4:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "value": "1e18"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    }
                  ],
                  "expression": {
                    "id": 12247,
                    "name": "UD2x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12269,
                    "src": "547:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD2x18_$12269_$",
                      "typeString": "type(UD2x18)"
                    }
                  },
                  "id": 12248,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "554:4:42",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "547:11:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint64_$returns$_t_userDefinedValueType$_UD2x18_$12269_$",
                    "typeString": "function (uint64) pure returns (UD2x18)"
                  }
                },
                "id": 12250,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "547:17:42",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                  "typeString": "UD2x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12254,
              "mutability": "constant",
              "name": "uUNIT",
              "nameLocation": "582:5:42",
              "nodeType": "VariableDeclaration",
              "scope": 12255,
              "src": "566:28:42",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              },
              "typeName": {
                "id": 12252,
                "name": "uint64",
                "nodeType": "ElementaryTypeName",
                "src": "566:6:42",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                }
              },
              "value": {
                "hexValue": "31653138",
                "id": 12253,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "590:4:42",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                  "typeString": "int_const 1000000000000000000"
                },
                "value": "1e18"
              },
              "visibility": "internal"
            }
          ],
          "src": "32:564:42"
        },
        "id": 42
      },
      "@prb/math/src/ud2x18/Errors.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/ud2x18/Errors.sol",
          "exportedSymbols": {
            "PRBMath_UD2x18_IntoUint40_Overflow": [
              12264
            ],
            "UD2x18": [
              12269
            ]
          },
          "id": 12265,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12256,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:43"
            },
            {
              "absolutePath": "@prb/math/src/ud2x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 12258,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12265,
              "sourceUnit": 12279,
              "src": "59:41:43",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12257,
                    "name": "UD2x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12269,
                    "src": "68:6:43",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "documentation": {
                "id": 12259,
                "nodeType": "StructuredDocumentation",
                "src": "102:83:43",
                "text": "@notice Thrown when trying to cast a UD2x18 number that doesn't fit in uint40."
              },
              "errorSelector": "9b63ae94",
              "id": 12264,
              "name": "PRBMath_UD2x18_IntoUint40_Overflow",
              "nameLocation": "191:34:43",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12263,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12262,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "233:1:43",
                    "nodeType": "VariableDeclaration",
                    "scope": 12264,
                    "src": "226:8:43",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                      "typeString": "UD2x18"
                    },
                    "typeName": {
                      "id": 12261,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12260,
                        "name": "UD2x18",
                        "nameLocations": [
                          "226:6:43"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12269,
                        "src": "226:6:43"
                      },
                      "referencedDeclaration": 12269,
                      "src": "226:6:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                        "typeString": "UD2x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "225:10:43"
              },
              "src": "185:51:43"
            }
          ],
          "src": "32:205:43"
        },
        "id": 43
      },
      "@prb/math/src/ud2x18/ValueType.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/ud2x18/ValueType.sol",
          "exportedSymbols": {
            "Casting": [
              12267
            ],
            "UD2x18": [
              12269
            ]
          },
          "id": 12279,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12266,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:44"
            },
            {
              "absolutePath": "@prb/math/src/ud2x18/Casting.sol",
              "file": "./Casting.sol",
              "id": 12267,
              "nameLocation": "85:7:44",
              "nodeType": "ImportDirective",
              "scope": 12279,
              "sourceUnit": 12213,
              "src": "59:34:44",
              "symbolAliases": [],
              "unitAlias": "Casting"
            },
            {
              "canonicalName": "UD2x18",
              "id": 12269,
              "name": "UD2x18",
              "nameLocation": "471:6:44",
              "nodeType": "UserDefinedValueTypeDefinition",
              "src": "466:22:44",
              "underlyingType": {
                "id": 12268,
                "name": "uint64",
                "nodeType": "ElementaryTypeName",
                "src": "481:6:44",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                }
              }
            },
            {
              "functionList": [
                {
                  "function": {
                    "id": 12270,
                    "name": "Casting.intoSD59x18",
                    "nameLocations": [
                      "701:7:44",
                      "709:11:44"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12061,
                    "src": "701:19:44"
                  }
                },
                {
                  "function": {
                    "id": 12271,
                    "name": "Casting.intoUD60x18",
                    "nameLocations": [
                      "726:7:44",
                      "734:11:44"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12082,
                    "src": "726:19:44"
                  }
                },
                {
                  "function": {
                    "id": 12272,
                    "name": "Casting.intoUint128",
                    "nameLocations": [
                      "751:7:44",
                      "759:11:44"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12102,
                    "src": "751:19:44"
                  }
                },
                {
                  "function": {
                    "id": 12273,
                    "name": "Casting.intoUint256",
                    "nameLocations": [
                      "776:7:44",
                      "784:11:44"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12122,
                    "src": "776:19:44"
                  }
                },
                {
                  "function": {
                    "id": 12274,
                    "name": "Casting.intoUint40",
                    "nameLocations": [
                      "801:7:44",
                      "809:10:44"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12161,
                    "src": "801:18:44"
                  }
                },
                {
                  "function": {
                    "id": 12275,
                    "name": "Casting.unwrap",
                    "nameLocations": [
                      "825:7:44",
                      "833:6:44"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12195,
                    "src": "825:14:44"
                  }
                }
              ],
              "global": true,
              "id": 12278,
              "nodeType": "UsingForDirective",
              "src": "689:171:44",
              "typeName": {
                "id": 12277,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12276,
                  "name": "UD2x18",
                  "nameLocations": [
                    "846:6:44"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 12269,
                  "src": "846:6:44"
                },
                "referencedDeclaration": 12269,
                "src": "846:6:44",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                  "typeString": "UD2x18"
                }
              }
            }
          ],
          "src": "32:829:44"
        },
        "id": 44
      },
      "@prb/math/src/ud60x18/Casting.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/ud60x18/Casting.sol",
          "exportedSymbols": {
            "CastingErrors": [
              12281
            ],
            "MAX_UINT128": [
              6628
            ],
            "MAX_UINT40": [
              6636
            ],
            "SD1x18": [
              8686
            ],
            "SD21x18": [
              9041
            ],
            "SD59x18": [
              11699
            ],
            "UD21x18": [
              12015
            ],
            "UD2x18": [
              12269
            ],
            "UD60x18": [
              14179
            ],
            "intoSD1x18": [
              12354
            ],
            "intoSD21x18": [
              12402
            ],
            "intoSD59x18": [
              12522
            ],
            "intoUD21x18": [
              12480
            ],
            "intoUD2x18": [
              12441
            ],
            "intoUint128": [
              12574
            ],
            "intoUint256": [
              12539
            ],
            "intoUint40": [
              12609
            ],
            "uMAX_SD1x18": [
              8609
            ],
            "uMAX_SD21x18": [
              8964
            ],
            "uMAX_SD59x18": [
              9662
            ],
            "uMAX_UD21x18": [
              11974
            ],
            "uMAX_UD2x18": [
              12228
            ],
            "ud": [
              12626
            ],
            "ud60x18": [
              12643
            ],
            "unwrap": [
              12660
            ],
            "wrap": [
              12677
            ]
          },
          "id": 12678,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12280,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:45"
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Errors.sol",
              "file": "./Errors.sol",
              "id": 12281,
              "nameLocation": "84:13:45",
              "nodeType": "ImportDirective",
              "scope": 12678,
              "sourceUnit": 12956,
              "src": "59:39:45",
              "symbolAliases": [],
              "unitAlias": "CastingErrors"
            },
            {
              "absolutePath": "@prb/math/src/Common.sol",
              "file": "../Common.sol",
              "id": 12284,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12678,
              "sourceUnit": 8329,
              "src": "99:56:45",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12282,
                    "name": "MAX_UINT128",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6628,
                    "src": "108:11:45",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 12283,
                    "name": "MAX_UINT40",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6636,
                    "src": "121:10:45",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd1x18/Constants.sol",
              "file": "../sd1x18/Constants.sol",
              "id": 12286,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12678,
              "sourceUnit": 8648,
              "src": "156:54:45",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12285,
                    "name": "uMAX_SD1x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8609,
                    "src": "165:11:45",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd1x18/ValueType.sol",
              "file": "../sd1x18/ValueType.sol",
              "id": 12288,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12678,
              "sourceUnit": 8696,
              "src": "211:49:45",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12287,
                    "name": "SD1x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8686,
                    "src": "220:6:45",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd21x18/Constants.sol",
              "file": "../sd21x18/Constants.sol",
              "id": 12290,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12678,
              "sourceUnit": 9003,
              "src": "261:56:45",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12289,
                    "name": "uMAX_SD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8964,
                    "src": "270:12:45",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd21x18/ValueType.sol",
              "file": "../sd21x18/ValueType.sol",
              "id": 12292,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12678,
              "sourceUnit": 9051,
              "src": "318:51:45",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12291,
                    "name": "SD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9041,
                    "src": "327:7:45",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/Constants.sol",
              "file": "../sd59x18/Constants.sol",
              "id": 12294,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12678,
              "sourceUnit": 9743,
              "src": "370:56:45",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12293,
                    "name": "uMAX_SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9662,
                    "src": "379:12:45",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/sd59x18/ValueType.sol",
              "file": "../sd59x18/ValueType.sol",
              "id": 12296,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12678,
              "sourceUnit": 11774,
              "src": "427:51:45",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12295,
                    "name": "SD59x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11699,
                    "src": "436:7:45",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud2x18/Constants.sol",
              "file": "../ud2x18/Constants.sol",
              "id": 12298,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12678,
              "sourceUnit": 12255,
              "src": "479:54:45",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12297,
                    "name": "uMAX_UD2x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12228,
                    "src": "488:11:45",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud21x18/Constants.sol",
              "file": "../ud21x18/Constants.sol",
              "id": 12300,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12678,
              "sourceUnit": 12001,
              "src": "534:56:45",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12299,
                    "name": "uMAX_UD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11974,
                    "src": "543:12:45",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud2x18/ValueType.sol",
              "file": "../ud2x18/ValueType.sol",
              "id": 12302,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12678,
              "sourceUnit": 12279,
              "src": "591:49:45",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12301,
                    "name": "UD2x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12269,
                    "src": "600:6:45",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud21x18/ValueType.sol",
              "file": "../ud21x18/ValueType.sol",
              "id": 12304,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12678,
              "sourceUnit": 12025,
              "src": "641:51:45",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12303,
                    "name": "UD21x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12015,
                    "src": "650:7:45",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 12306,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12678,
              "sourceUnit": 14250,
              "src": "693:42:45",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12305,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "702:7:45",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "body": {
                "id": 12353,
                "nodeType": "Block",
                "src": "892:213:45",
                "statements": [
                  {
                    "assignments": [
                      12317
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12317,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "906:5:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12353,
                        "src": "898:13:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12316,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "898:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 12322,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 12320,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12310,
                          "src": "929:1:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        ],
                        "expression": {
                          "id": 12318,
                          "name": "UD60x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14179,
                          "src": "914:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "type(UD60x18)"
                          }
                        },
                        "id": 12319,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "922:6:45",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "914:14:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 12321,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "914:17:45",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "898:33:45"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12331,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 12323,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12317,
                        "src": "941:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 12328,
                                "name": "uMAX_SD1x18",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8609,
                                "src": "964:11:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int64",
                                  "typeString": "int64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int64",
                                  "typeString": "int64"
                                }
                              ],
                              "id": 12327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "957:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 12326,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "957:6:45",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "957:19:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 12325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "949:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12324,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "949:7:45",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12330,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "949:28:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "941:36:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 12339,
                    "nodeType": "IfStatement",
                    "src": "937:118:45",
                    "trueBody": {
                      "id": 12338,
                      "nodeType": "Block",
                      "src": "979:76:45",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 12335,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12310,
                                "src": "1046:1:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "expression": {
                                "id": 12332,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12281,
                                "src": "996:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_12956",
                                  "typeString": "module \"@prb/math/src/ud60x18/Errors.sol\""
                                }
                              },
                              "id": 12334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1010:35:45",
                              "memberName": "PRBMath_UD60x18_IntoSD1x18_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12907,
                              "src": "996:49:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_error_$",
                                "typeString": "function (UD60x18) pure returns (error)"
                              }
                            },
                            "id": 12336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "996:52:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 12337,
                          "nodeType": "RevertStatement",
                          "src": "989:59:45"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 12351,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12340,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12314,
                        "src": "1060:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                          "typeString": "SD1x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 12347,
                                    "name": "xUint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12317,
                                    "src": "1094:5:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12346,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1087:6:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint64_$",
                                    "typeString": "type(uint64)"
                                  },
                                  "typeName": {
                                    "id": 12345,
                                    "name": "uint64",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1087:6:45",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12348,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1087:13:45",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "id": 12344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1081:5:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int64_$",
                                "typeString": "type(int64)"
                              },
                              "typeName": {
                                "id": 12343,
                                "name": "int64",
                                "nodeType": "ElementaryTypeName",
                                "src": "1081:5:45",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1081:20:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int64",
                              "typeString": "int64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int64",
                              "typeString": "int64"
                            }
                          ],
                          "expression": {
                            "id": 12341,
                            "name": "SD1x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8686,
                            "src": "1069:6:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD1x18_$8686_$",
                              "typeString": "type(SD1x18)"
                            }
                          },
                          "id": 12342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1076:4:45",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "1069:11:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int64_$returns$_t_userDefinedValueType$_SD1x18_$8686_$",
                            "typeString": "function (int64) pure returns (SD1x18)"
                          }
                        },
                        "id": 12350,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1069:33:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                          "typeString": "SD1x18"
                        }
                      },
                      "src": "1060:42:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "id": 12352,
                    "nodeType": "ExpressionStatement",
                    "src": "1060:42:45"
                  }
                ]
              },
              "documentation": {
                "id": 12307,
                "nodeType": "StructuredDocumentation",
                "src": "737:95:45",
                "text": "@notice Casts a UD60x18 number into SD1x18.\n @dev Requirements:\n - x ≤ uMAX_SD1x18"
              },
              "id": 12354,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoSD1x18",
              "nameLocation": "841:10:45",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12311,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12310,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "860:1:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12354,
                    "src": "852:9:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12309,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12308,
                        "name": "UD60x18",
                        "nameLocations": [
                          "852:7:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "852:7:45"
                      },
                      "referencedDeclaration": 14179,
                      "src": "852:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "851:11:45"
              },
              "returnParameters": {
                "id": 12315,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12314,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "884:6:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12354,
                    "src": "877:13:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                      "typeString": "SD1x18"
                    },
                    "typeName": {
                      "id": 12313,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12312,
                        "name": "SD1x18",
                        "nameLocations": [
                          "877:6:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8686,
                        "src": "877:6:45"
                      },
                      "referencedDeclaration": 8686,
                      "src": "877:6:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD1x18_$8686",
                        "typeString": "SD1x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "876:15:45"
              },
              "scope": 12678,
              "src": "832:273:45",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12401,
                "nodeType": "Block",
                "src": "1266:218:45",
                "statements": [
                  {
                    "assignments": [
                      12365
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12365,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "1280:5:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12401,
                        "src": "1272:13:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12364,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1272:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 12370,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 12368,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12358,
                          "src": "1303:1:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        ],
                        "expression": {
                          "id": 12366,
                          "name": "UD60x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14179,
                          "src": "1288:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "type(UD60x18)"
                          }
                        },
                        "id": 12367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1296:6:45",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "1288:14:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 12369,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1288:17:45",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1272:33:45"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12379,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 12371,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12365,
                        "src": "1315:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 12376,
                                "name": "uMAX_SD21x18",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8964,
                                "src": "1338:12:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              ],
                              "id": 12375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1331:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 12374,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1331:6:45",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1331:20:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 12373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1323:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12372,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1323:7:45",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12378,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1323:29:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1315:37:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 12387,
                    "nodeType": "IfStatement",
                    "src": "1311:120:45",
                    "trueBody": {
                      "id": 12386,
                      "nodeType": "Block",
                      "src": "1354:77:45",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 12383,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12358,
                                "src": "1422:1:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "expression": {
                                "id": 12380,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12281,
                                "src": "1371:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_12956",
                                  "typeString": "module \"@prb/math/src/ud60x18/Errors.sol\""
                                }
                              },
                              "id": 12382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1385:36:45",
                              "memberName": "PRBMath_UD60x18_IntoSD21x18_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12913,
                              "src": "1371:50:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_error_$",
                                "typeString": "function (UD60x18) pure returns (error)"
                              }
                            },
                            "id": 12384,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1371:53:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 12385,
                          "nodeType": "RevertStatement",
                          "src": "1364:60:45"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 12399,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12388,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12362,
                        "src": "1436:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                          "typeString": "SD21x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 12395,
                                    "name": "xUint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12365,
                                    "src": "1473:5:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12394,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1465:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": {
                                    "id": 12393,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1465:7:45",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12396,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1465:14:45",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "id": 12392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1458:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int128_$",
                                "typeString": "type(int128)"
                              },
                              "typeName": {
                                "id": 12391,
                                "name": "int128",
                                "nodeType": "ElementaryTypeName",
                                "src": "1458:6:45",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1458:22:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          ],
                          "expression": {
                            "id": 12389,
                            "name": "SD21x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9041,
                            "src": "1445:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD21x18_$9041_$",
                              "typeString": "type(SD21x18)"
                            }
                          },
                          "id": 12390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1453:4:45",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "1445:12:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int128_$returns$_t_userDefinedValueType$_SD21x18_$9041_$",
                            "typeString": "function (int128) pure returns (SD21x18)"
                          }
                        },
                        "id": 12398,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1445:36:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                          "typeString": "SD21x18"
                        }
                      },
                      "src": "1436:45:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "id": 12400,
                    "nodeType": "ExpressionStatement",
                    "src": "1436:45:45"
                  }
                ]
              },
              "documentation": {
                "id": 12355,
                "nodeType": "StructuredDocumentation",
                "src": "1107:97:45",
                "text": "@notice Casts a UD60x18 number into SD21x18.\n @dev Requirements:\n - x ≤ uMAX_SD21x18"
              },
              "id": 12402,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoSD21x18",
              "nameLocation": "1213:11:45",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12359,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12358,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1233:1:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12402,
                    "src": "1225:9:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12357,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12356,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1225:7:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1225:7:45"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1225:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1224:11:45"
              },
              "returnParameters": {
                "id": 12363,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12362,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1258:6:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12402,
                    "src": "1250:14:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                      "typeString": "SD21x18"
                    },
                    "typeName": {
                      "id": 12361,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12360,
                        "name": "SD21x18",
                        "nameLocations": [
                          "1250:7:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9041,
                        "src": "1250:7:45"
                      },
                      "referencedDeclaration": 9041,
                      "src": "1250:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD21x18_$9041",
                        "typeString": "SD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1249:16:45"
              },
              "scope": 12678,
              "src": "1204:280:45",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12440,
                "nodeType": "Block",
                "src": "1641:189:45",
                "statements": [
                  {
                    "assignments": [
                      12413
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12413,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "1655:5:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12440,
                        "src": "1647:13:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12412,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1647:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 12418,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 12416,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12406,
                          "src": "1678:1:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        ],
                        "expression": {
                          "id": 12414,
                          "name": "UD60x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14179,
                          "src": "1663:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "type(UD60x18)"
                          }
                        },
                        "id": 12415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1671:6:45",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "1663:14:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 12417,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1663:17:45",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1647:33:45"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12421,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 12419,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12413,
                        "src": "1690:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 12420,
                        "name": "uMAX_UD2x18",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12228,
                        "src": "1698:11:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "src": "1690:19:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 12429,
                    "nodeType": "IfStatement",
                    "src": "1686:101:45",
                    "trueBody": {
                      "id": 12428,
                      "nodeType": "Block",
                      "src": "1711:76:45",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 12425,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12406,
                                "src": "1778:1:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "expression": {
                                "id": 12422,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12281,
                                "src": "1728:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_12956",
                                  "typeString": "module \"@prb/math/src/ud60x18/Errors.sol\""
                                }
                              },
                              "id": 12424,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1742:35:45",
                              "memberName": "PRBMath_UD60x18_IntoUD2x18_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12925,
                              "src": "1728:49:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_error_$",
                                "typeString": "function (UD60x18) pure returns (error)"
                              }
                            },
                            "id": 12426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1728:52:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 12427,
                          "nodeType": "RevertStatement",
                          "src": "1721:59:45"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 12438,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12430,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12410,
                        "src": "1792:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                          "typeString": "UD2x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 12435,
                                "name": "xUint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12413,
                                "src": "1820:5:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 12434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1813:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 12433,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "1813:6:45",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1813:13:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "expression": {
                            "id": 12431,
                            "name": "UD2x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12269,
                            "src": "1801:6:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD2x18_$12269_$",
                              "typeString": "type(UD2x18)"
                            }
                          },
                          "id": 12432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1808:4:45",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "1801:11:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint64_$returns$_t_userDefinedValueType$_UD2x18_$12269_$",
                            "typeString": "function (uint64) pure returns (UD2x18)"
                          }
                        },
                        "id": 12437,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1801:26:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                          "typeString": "UD2x18"
                        }
                      },
                      "src": "1792:35:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                        "typeString": "UD2x18"
                      }
                    },
                    "id": 12439,
                    "nodeType": "ExpressionStatement",
                    "src": "1792:35:45"
                  }
                ]
              },
              "documentation": {
                "id": 12403,
                "nodeType": "StructuredDocumentation",
                "src": "1486:95:45",
                "text": "@notice Casts a UD60x18 number into UD2x18.\n @dev Requirements:\n - x ≤ uMAX_UD2x18"
              },
              "id": 12441,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUD2x18",
              "nameLocation": "1590:10:45",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12407,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12406,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1609:1:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12441,
                    "src": "1601:9:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12405,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12404,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1601:7:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1601:7:45"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1601:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1600:11:45"
              },
              "returnParameters": {
                "id": 12411,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12410,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1633:6:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12441,
                    "src": "1626:13:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                      "typeString": "UD2x18"
                    },
                    "typeName": {
                      "id": 12409,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12408,
                        "name": "UD2x18",
                        "nameLocations": [
                          "1626:6:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12269,
                        "src": "1626:6:45"
                      },
                      "referencedDeclaration": 12269,
                      "src": "1626:6:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD2x18_$12269",
                        "typeString": "UD2x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1625:15:45"
              },
              "scope": 12678,
              "src": "1581:249:45",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12479,
                "nodeType": "Block",
                "src": "1991:193:45",
                "statements": [
                  {
                    "assignments": [
                      12452
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12452,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "2005:5:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12479,
                        "src": "1997:13:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12451,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1997:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 12457,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 12455,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12445,
                          "src": "2028:1:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        ],
                        "expression": {
                          "id": 12453,
                          "name": "UD60x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14179,
                          "src": "2013:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "type(UD60x18)"
                          }
                        },
                        "id": 12454,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "2021:6:45",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "2013:14:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 12456,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2013:17:45",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1997:33:45"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12460,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 12458,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12452,
                        "src": "2040:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 12459,
                        "name": "uMAX_UD21x18",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11974,
                        "src": "2048:12:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "2040:20:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 12468,
                    "nodeType": "IfStatement",
                    "src": "2036:103:45",
                    "trueBody": {
                      "id": 12467,
                      "nodeType": "Block",
                      "src": "2062:77:45",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 12464,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12445,
                                "src": "2130:1:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "expression": {
                                "id": 12461,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12281,
                                "src": "2079:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_12956",
                                  "typeString": "module \"@prb/math/src/ud60x18/Errors.sol\""
                                }
                              },
                              "id": 12463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2093:36:45",
                              "memberName": "PRBMath_UD60x18_IntoUD21x18_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12931,
                              "src": "2079:50:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_error_$",
                                "typeString": "function (UD60x18) pure returns (error)"
                              }
                            },
                            "id": 12465,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2079:53:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 12466,
                          "nodeType": "RevertStatement",
                          "src": "2072:60:45"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 12477,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12469,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12449,
                        "src": "2144:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                          "typeString": "UD21x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 12474,
                                "name": "xUint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12452,
                                "src": "2174:5:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 12473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2166:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 12472,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "2166:7:45",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2166:14:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          ],
                          "expression": {
                            "id": 12470,
                            "name": "UD21x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12015,
                            "src": "2153:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD21x18_$12015_$",
                              "typeString": "type(UD21x18)"
                            }
                          },
                          "id": 12471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2161:4:45",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "2153:12:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint128_$returns$_t_userDefinedValueType$_UD21x18_$12015_$",
                            "typeString": "function (uint128) pure returns (UD21x18)"
                          }
                        },
                        "id": 12476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2153:28:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                          "typeString": "UD21x18"
                        }
                      },
                      "src": "2144:37:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                        "typeString": "UD21x18"
                      }
                    },
                    "id": 12478,
                    "nodeType": "ExpressionStatement",
                    "src": "2144:37:45"
                  }
                ]
              },
              "documentation": {
                "id": 12442,
                "nodeType": "StructuredDocumentation",
                "src": "1832:97:45",
                "text": "@notice Casts a UD60x18 number into UD21x18.\n @dev Requirements:\n - x ≤ uMAX_UD21x18"
              },
              "id": 12480,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUD21x18",
              "nameLocation": "1938:11:45",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12446,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12445,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1958:1:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12480,
                    "src": "1950:9:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12444,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12443,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1950:7:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1950:7:45"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1950:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1949:11:45"
              },
              "returnParameters": {
                "id": 12450,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12449,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1983:6:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12480,
                    "src": "1975:14:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                      "typeString": "UD21x18"
                    },
                    "typeName": {
                      "id": 12448,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12447,
                        "name": "UD21x18",
                        "nameLocations": [
                          "1975:7:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12015,
                        "src": "1975:7:45"
                      },
                      "referencedDeclaration": 12015,
                      "src": "1975:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD21x18_$12015",
                        "typeString": "UD21x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1974:16:45"
              },
              "scope": 12678,
              "src": "1929:255:45",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12521,
                "nodeType": "Block",
                "src": "2345:201:45",
                "statements": [
                  {
                    "assignments": [
                      12491
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12491,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "2359:5:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12521,
                        "src": "2351:13:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12490,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2351:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 12496,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 12494,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12484,
                          "src": "2382:1:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        ],
                        "expression": {
                          "id": 12492,
                          "name": "UD60x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14179,
                          "src": "2367:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "type(UD60x18)"
                          }
                        },
                        "id": 12493,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "2375:6:45",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "2367:14:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 12495,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2367:17:45",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2351:33:45"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12502,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 12497,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12491,
                        "src": "2394:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "arguments": [
                          {
                            "id": 12500,
                            "name": "uMAX_SD59x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9662,
                            "src": "2410:12:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "id": 12499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2402:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12498,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2402:7:45",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12501,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2402:21:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2394:29:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 12510,
                    "nodeType": "IfStatement",
                    "src": "2390:112:45",
                    "trueBody": {
                      "id": 12509,
                      "nodeType": "Block",
                      "src": "2425:77:45",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 12506,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12484,
                                "src": "2493:1:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "expression": {
                                "id": 12503,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12281,
                                "src": "2442:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_12956",
                                  "typeString": "module \"@prb/math/src/ud60x18/Errors.sol\""
                                }
                              },
                              "id": 12505,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2456:36:45",
                              "memberName": "PRBMath_UD60x18_IntoSD59x18_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12919,
                              "src": "2442:50:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_error_$",
                                "typeString": "function (UD60x18) pure returns (error)"
                              }
                            },
                            "id": 12507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2442:53:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 12508,
                          "nodeType": "RevertStatement",
                          "src": "2435:60:45"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 12519,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12511,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12488,
                        "src": "2507:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 12516,
                                "name": "xUint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12491,
                                "src": "2536:5:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 12515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2529:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 12514,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2529:6:45",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2529:13:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "expression": {
                            "id": 12512,
                            "name": "SD59x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11699,
                            "src": "2516:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_SD59x18_$11699_$",
                              "typeString": "type(SD59x18)"
                            }
                          },
                          "id": 12513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2524:4:45",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "2516:12:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_int256_$returns$_t_userDefinedValueType$_SD59x18_$11699_$",
                            "typeString": "function (int256) pure returns (SD59x18)"
                          }
                        },
                        "id": 12518,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2516:27:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                          "typeString": "SD59x18"
                        }
                      },
                      "src": "2507:36:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "id": 12520,
                    "nodeType": "ExpressionStatement",
                    "src": "2507:36:45"
                  }
                ]
              },
              "documentation": {
                "id": 12481,
                "nodeType": "StructuredDocumentation",
                "src": "2186:97:45",
                "text": "@notice Casts a UD60x18 number into SD59x18.\n @dev Requirements:\n - x ≤ uMAX_SD59x18"
              },
              "id": 12522,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoSD59x18",
              "nameLocation": "2292:11:45",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12485,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12484,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2312:1:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12522,
                    "src": "2304:9:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12483,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12482,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2304:7:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2304:7:45"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2304:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2303:11:45"
              },
              "returnParameters": {
                "id": 12489,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12488,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2337:6:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12522,
                    "src": "2329:14:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                      "typeString": "SD59x18"
                    },
                    "typeName": {
                      "id": 12487,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12486,
                        "name": "SD59x18",
                        "nameLocations": [
                          "2329:7:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11699,
                        "src": "2329:7:45"
                      },
                      "referencedDeclaration": 11699,
                      "src": "2329:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_SD59x18_$11699",
                        "typeString": "SD59x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2328:16:45"
              },
              "scope": 12678,
              "src": "2283:263:45",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12538,
                "nodeType": "Block",
                "src": "2709:35:45",
                "statements": [
                  {
                    "expression": {
                      "id": 12536,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12531,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12529,
                        "src": "2715:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 12534,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12526,
                            "src": "2739:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          ],
                          "expression": {
                            "id": 12532,
                            "name": "UD60x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14179,
                            "src": "2724:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "type(UD60x18)"
                            }
                          },
                          "id": 12533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2732:6:45",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "src": "2724:14:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                            "typeString": "function (UD60x18) pure returns (uint256)"
                          }
                        },
                        "id": 12535,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2724:17:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2715:26:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12537,
                    "nodeType": "ExpressionStatement",
                    "src": "2715:26:45"
                  }
                ]
              },
              "documentation": {
                "id": 12523,
                "nodeType": "StructuredDocumentation",
                "src": "2548:99:45",
                "text": "@notice Casts a UD60x18 number into uint128.\n @dev This is basically an alias for {unwrap}."
              },
              "id": 12539,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint256",
              "nameLocation": "2656:11:45",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12527,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12526,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2676:1:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12539,
                    "src": "2668:9:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12525,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12524,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2668:7:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2668:7:45"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2668:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2667:11:45"
              },
              "returnParameters": {
                "id": 12530,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12529,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2701:6:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12539,
                    "src": "2693:14:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 12528,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2693:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2692:16:45"
              },
              "scope": 12678,
              "src": "2647:97:45",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12573,
                "nodeType": "Block",
                "src": "2904:178:45",
                "statements": [
                  {
                    "assignments": [
                      12549
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12549,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "2918:5:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12573,
                        "src": "2910:13:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12548,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2910:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 12554,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 12552,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12543,
                          "src": "2941:1:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        ],
                        "expression": {
                          "id": 12550,
                          "name": "UD60x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14179,
                          "src": "2926:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "type(UD60x18)"
                          }
                        },
                        "id": 12551,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "2934:6:45",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "2926:14:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 12553,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2926:17:45",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2910:33:45"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12557,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 12555,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12549,
                        "src": "2953:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 12556,
                        "name": "MAX_UINT128",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6628,
                        "src": "2961:11:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "2953:19:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 12565,
                    "nodeType": "IfStatement",
                    "src": "2949:102:45",
                    "trueBody": {
                      "id": 12564,
                      "nodeType": "Block",
                      "src": "2974:77:45",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 12561,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12543,
                                "src": "3042:1:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "expression": {
                                "id": 12558,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12281,
                                "src": "2991:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_12956",
                                  "typeString": "module \"@prb/math/src/ud60x18/Errors.sol\""
                                }
                              },
                              "id": 12560,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3005:36:45",
                              "memberName": "PRBMath_UD60x18_IntoUint128_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12937,
                              "src": "2991:50:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_error_$",
                                "typeString": "function (UD60x18) pure returns (error)"
                              }
                            },
                            "id": 12562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2991:53:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 12563,
                          "nodeType": "RevertStatement",
                          "src": "2984:60:45"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 12571,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12566,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12546,
                        "src": "3056:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 12569,
                            "name": "xUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12549,
                            "src": "3073:5:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3065:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint128_$",
                            "typeString": "type(uint128)"
                          },
                          "typeName": {
                            "id": 12567,
                            "name": "uint128",
                            "nodeType": "ElementaryTypeName",
                            "src": "3065:7:45",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12570,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3065:14:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "3056:23:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "id": 12572,
                    "nodeType": "ExpressionStatement",
                    "src": "3056:23:45"
                  }
                ]
              },
              "documentation": {
                "id": 12540,
                "nodeType": "StructuredDocumentation",
                "src": "2746:96:45",
                "text": "@notice Casts a UD60x18 number into uint128.\n @dev Requirements:\n - x ≤ MAX_UINT128"
              },
              "id": 12574,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint128",
              "nameLocation": "2851:11:45",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12544,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12543,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2871:1:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12574,
                    "src": "2863:9:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12542,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12541,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2863:7:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2863:7:45"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2863:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2862:11:45"
              },
              "returnParameters": {
                "id": 12547,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12546,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2896:6:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12574,
                    "src": "2888:14:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "typeName": {
                      "id": 12545,
                      "name": "uint128",
                      "nodeType": "ElementaryTypeName",
                      "src": "2888:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2887:16:45"
              },
              "scope": 12678,
              "src": "2842:240:45",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12608,
                "nodeType": "Block",
                "src": "3238:175:45",
                "statements": [
                  {
                    "assignments": [
                      12584
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12584,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "3252:5:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12608,
                        "src": "3244:13:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12583,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3244:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 12589,
                    "initialValue": {
                      "arguments": [
                        {
                          "id": 12587,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12578,
                          "src": "3275:1:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        ],
                        "expression": {
                          "id": 12585,
                          "name": "UD60x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14179,
                          "src": "3260:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "type(UD60x18)"
                          }
                        },
                        "id": 12586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "3268:6:45",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "3260:14:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 12588,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3260:17:45",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3244:33:45"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12592,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 12590,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12584,
                        "src": "3287:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 12591,
                        "name": "MAX_UINT40",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6636,
                        "src": "3295:10:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "src": "3287:18:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 12600,
                    "nodeType": "IfStatement",
                    "src": "3283:100:45",
                    "trueBody": {
                      "id": 12599,
                      "nodeType": "Block",
                      "src": "3307:76:45",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 12596,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12578,
                                "src": "3374:1:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "expression": {
                                "id": 12593,
                                "name": "CastingErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12281,
                                "src": "3324:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_12956",
                                  "typeString": "module \"@prb/math/src/ud60x18/Errors.sol\""
                                }
                              },
                              "id": 12595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3338:35:45",
                              "memberName": "PRBMath_UD60x18_IntoUint40_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12943,
                              "src": "3324:49:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_error_$",
                                "typeString": "function (UD60x18) pure returns (error)"
                              }
                            },
                            "id": 12597,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3324:52:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 12598,
                          "nodeType": "RevertStatement",
                          "src": "3317:59:45"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "id": 12606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12601,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12581,
                        "src": "3388:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 12604,
                            "name": "xUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12584,
                            "src": "3404:5:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3397:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint40_$",
                            "typeString": "type(uint40)"
                          },
                          "typeName": {
                            "id": 12602,
                            "name": "uint40",
                            "nodeType": "ElementaryTypeName",
                            "src": "3397:6:45",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3397:13:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "src": "3388:22:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "id": 12607,
                    "nodeType": "ExpressionStatement",
                    "src": "3388:22:45"
                  }
                ]
              },
              "documentation": {
                "id": 12575,
                "nodeType": "StructuredDocumentation",
                "src": "3084:94:45",
                "text": "@notice Casts a UD60x18 number into uint40.\n @dev Requirements:\n - x ≤ MAX_UINT40"
              },
              "id": 12609,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "intoUint40",
              "nameLocation": "3187:10:45",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12579,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12578,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3206:1:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12609,
                    "src": "3198:9:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12577,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12576,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3198:7:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3198:7:45"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3198:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3197:11:45"
              },
              "returnParameters": {
                "id": 12582,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12581,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3230:6:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12609,
                    "src": "3223:13:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    },
                    "typeName": {
                      "id": 12580,
                      "name": "uint40",
                      "nodeType": "ElementaryTypeName",
                      "src": "3223:6:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3222:15:45"
              },
              "scope": 12678,
              "src": "3178:235:45",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12625,
                "nodeType": "Block",
                "src": "3498:33:45",
                "statements": [
                  {
                    "expression": {
                      "id": 12623,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12618,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12616,
                        "src": "3504:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 12621,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12612,
                            "src": "3526:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 12619,
                            "name": "UD60x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14179,
                            "src": "3513:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "type(UD60x18)"
                            }
                          },
                          "id": 12620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3521:4:45",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "3513:12:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 12622,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3513:15:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "3504:24:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 12624,
                    "nodeType": "ExpressionStatement",
                    "src": "3504:24:45"
                  }
                ]
              },
              "documentation": {
                "id": 12610,
                "nodeType": "StructuredDocumentation",
                "src": "3415:30:45",
                "text": "@notice Alias for {wrap}."
              },
              "id": 12626,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "ud",
              "nameLocation": "3454:2:45",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12613,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12612,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3465:1:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12626,
                    "src": "3457:9:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 12611,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3457:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3456:11:45"
              },
              "returnParameters": {
                "id": 12617,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12616,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3490:6:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12626,
                    "src": "3482:14:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12615,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12614,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3482:7:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3482:7:45"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3482:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3481:16:45"
              },
              "scope": 12678,
              "src": "3445:86:45",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12642,
                "nodeType": "Block",
                "src": "3621:33:45",
                "statements": [
                  {
                    "expression": {
                      "id": 12640,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12635,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12633,
                        "src": "3627:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 12638,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12629,
                            "src": "3649:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 12636,
                            "name": "UD60x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14179,
                            "src": "3636:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "type(UD60x18)"
                            }
                          },
                          "id": 12637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3644:4:45",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "3636:12:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 12639,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3636:15:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "3627:24:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 12641,
                    "nodeType": "ExpressionStatement",
                    "src": "3627:24:45"
                  }
                ]
              },
              "documentation": {
                "id": 12627,
                "nodeType": "StructuredDocumentation",
                "src": "3533:30:45",
                "text": "@notice Alias for {wrap}."
              },
              "id": 12643,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "ud60x18",
              "nameLocation": "3572:7:45",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12630,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12629,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3588:1:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12643,
                    "src": "3580:9:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 12628,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3580:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3579:11:45"
              },
              "returnParameters": {
                "id": 12634,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12633,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3613:6:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12643,
                    "src": "3605:14:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12632,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12631,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3605:7:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3605:7:45"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3605:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3604:16:45"
              },
              "scope": 12678,
              "src": "3563:91:45",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12659,
                "nodeType": "Block",
                "src": "3764:35:45",
                "statements": [
                  {
                    "expression": {
                      "id": 12657,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12652,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12650,
                        "src": "3770:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 12655,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12647,
                            "src": "3794:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          ],
                          "expression": {
                            "id": 12653,
                            "name": "UD60x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14179,
                            "src": "3779:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "type(UD60x18)"
                            }
                          },
                          "id": 12654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3787:6:45",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "src": "3779:14:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                            "typeString": "function (UD60x18) pure returns (uint256)"
                          }
                        },
                        "id": 12656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3779:17:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3770:26:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12658,
                    "nodeType": "ExpressionStatement",
                    "src": "3770:26:45"
                  }
                ]
              },
              "documentation": {
                "id": 12644,
                "nodeType": "StructuredDocumentation",
                "src": "3656:51:45",
                "text": "@notice Unwraps a UD60x18 number into uint256."
              },
              "id": 12660,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "unwrap",
              "nameLocation": "3716:6:45",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12648,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12647,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3731:1:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12660,
                    "src": "3723:9:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12646,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12645,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3723:7:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3723:7:45"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3723:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3722:11:45"
              },
              "returnParameters": {
                "id": 12651,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12650,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3756:6:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12660,
                    "src": "3748:14:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 12649,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3748:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3747:16:45"
              },
              "scope": 12678,
              "src": "3707:92:45",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12676,
                "nodeType": "Block",
                "src": "3920:33:45",
                "statements": [
                  {
                    "expression": {
                      "id": 12674,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12669,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12667,
                        "src": "3926:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 12672,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12663,
                            "src": "3948:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 12670,
                            "name": "UD60x18",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14179,
                            "src": "3935:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "type(UD60x18)"
                            }
                          },
                          "id": 12671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3943:4:45",
                          "memberName": "wrap",
                          "nodeType": "MemberAccess",
                          "src": "3935:12:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 12673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3935:15:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "3926:24:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 12675,
                    "nodeType": "ExpressionStatement",
                    "src": "3926:24:45"
                  }
                ]
              },
              "documentation": {
                "id": 12661,
                "nodeType": "StructuredDocumentation",
                "src": "3801:64:45",
                "text": "@notice Wraps a uint256 number into the UD60x18 value type."
              },
              "id": 12677,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "wrap",
              "nameLocation": "3874:4:45",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12664,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12663,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3887:1:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12677,
                    "src": "3879:9:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 12662,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3879:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3878:11:45"
              },
              "returnParameters": {
                "id": 12668,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12667,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3912:6:45",
                    "nodeType": "VariableDeclaration",
                    "scope": 12677,
                    "src": "3904:14:45",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12666,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12665,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3904:7:45"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3904:7:45"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3904:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3903:16:45"
              },
              "scope": 12678,
              "src": "3865:88:45",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            }
          ],
          "src": "32:3922:45"
        },
        "id": 45
      },
      "@prb/math/src/ud60x18/Constants.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/ud60x18/Constants.sol",
          "exportedSymbols": {
            "E": [
              12689
            ],
            "EXP2_MAX_INPUT": [
              12713
            ],
            "EXP_MAX_INPUT": [
              12700
            ],
            "HALF_UNIT": [
              12724
            ],
            "LOG2_10": [
              12735
            ],
            "LOG2_E": [
              12746
            ],
            "MAX_UD60x18": [
              12757
            ],
            "MAX_WHOLE_UD60x18": [
              12768
            ],
            "PI": [
              12776
            ],
            "UD60x18": [
              14179
            ],
            "UNIT": [
              12787
            ],
            "UNIT_SQUARED": [
              12798
            ],
            "ZERO": [
              12806
            ],
            "uEXP2_MAX_INPUT": [
              12706
            ],
            "uEXP_MAX_INPUT": [
              12693
            ],
            "uHALF_UNIT": [
              12717
            ],
            "uLOG2_10": [
              12728
            ],
            "uLOG2_E": [
              12739
            ],
            "uMAX_UD60x18": [
              12750
            ],
            "uMAX_WHOLE_UD60x18": [
              12761
            ],
            "uUNIT": [
              12780
            ],
            "uUNIT_SQUARED": [
              12791
            ]
          },
          "id": 12807,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12679,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:46"
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 12681,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12807,
              "sourceUnit": 14250,
              "src": "59:42:46",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12680,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "68:7:46",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "constant": true,
              "id": 12689,
              "mutability": "constant",
              "name": "E",
              "nameLocation": "216:1:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "199:55:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                "typeString": "UD60x18"
              },
              "typeName": {
                "id": 12684,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12683,
                  "name": "UD60x18",
                  "nameLocations": [
                    "199:7:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "199:7:46"
                },
                "referencedDeclaration": 14179,
                "src": "199:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "325f373138323831383238343539303435323335",
                    "id": 12687,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "233:20:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2718281828459045235_by_1",
                      "typeString": "int_const 2718281828459045235"
                    },
                    "value": "2_718281828459045235"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_2718281828459045235_by_1",
                      "typeString": "int_const 2718281828459045235"
                    }
                  ],
                  "expression": {
                    "id": 12685,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "220:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                      "typeString": "type(UD60x18)"
                    }
                  },
                  "id": 12686,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "228:4:46",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "220:12:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                    "typeString": "function (uint256) pure returns (UD60x18)"
                  }
                },
                "id": 12688,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "220:34:46",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12693,
              "mutability": "constant",
              "name": "uEXP_MAX_INPUT",
              "nameLocation": "321:14:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "304:56:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 12691,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "304:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3133335f303834323538363637353039343939343430",
                "id": 12692,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "338:22:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_133084258667509499440_by_1",
                  "typeString": "int_const 133084258667509499440"
                },
                "value": "133_084258667509499440"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12700,
              "mutability": "constant",
              "name": "EXP_MAX_INPUT",
              "nameLocation": "379:13:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "362:61:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                "typeString": "UD60x18"
              },
              "typeName": {
                "id": 12695,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12694,
                  "name": "UD60x18",
                  "nameLocations": [
                    "362:7:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "362:7:46"
                },
                "referencedDeclaration": 14179,
                "src": "362:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 12698,
                    "name": "uEXP_MAX_INPUT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12693,
                    "src": "408:14:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  ],
                  "expression": {
                    "id": 12696,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "395:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                      "typeString": "type(UD60x18)"
                    }
                  },
                  "id": 12697,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "403:4:46",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "395:12:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                    "typeString": "function (uint256) pure returns (UD60x18)"
                  }
                },
                "id": 12699,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "395:28:46",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12706,
              "mutability": "constant",
              "name": "uEXP2_MAX_INPUT",
              "nameLocation": "491:15:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "474:45:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 12702,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "474:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "commonType": {
                  "typeIdentifier": "t_rational_191999999999999999999_by_1",
                  "typeString": "int_const 191999999999999999999"
                },
                "id": 12705,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "leftExpression": {
                  "hexValue": "313932653138",
                  "id": 12703,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "509:6:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_192000000000000000000_by_1",
                    "typeString": "int_const 192000000000000000000"
                  },
                  "value": "192e18"
                },
                "nodeType": "BinaryOperation",
                "operator": "-",
                "rightExpression": {
                  "hexValue": "31",
                  "id": 12704,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "518:1:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_1_by_1",
                    "typeString": "int_const 1"
                  },
                  "value": "1"
                },
                "src": "509:10:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_191999999999999999999_by_1",
                  "typeString": "int_const 191999999999999999999"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12713,
              "mutability": "constant",
              "name": "EXP2_MAX_INPUT",
              "nameLocation": "538:14:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "521:63:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                "typeString": "UD60x18"
              },
              "typeName": {
                "id": 12708,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12707,
                  "name": "UD60x18",
                  "nameLocations": [
                    "521:7:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "521:7:46"
                },
                "referencedDeclaration": 14179,
                "src": "521:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 12711,
                    "name": "uEXP2_MAX_INPUT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12706,
                    "src": "568:15:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  ],
                  "expression": {
                    "id": 12709,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "555:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                      "typeString": "type(UD60x18)"
                    }
                  },
                  "id": 12710,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "563:4:46",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "555:12:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                    "typeString": "function (uint256) pure returns (UD60x18)"
                  }
                },
                "id": 12712,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "555:29:46",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12717,
              "mutability": "constant",
              "name": "uHALF_UNIT",
              "nameLocation": "635:10:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "618:36:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 12715,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "618:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "302e35653138",
                "id": 12716,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "648:6:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_500000000000000000_by_1",
                  "typeString": "int_const 500000000000000000"
                },
                "value": "0.5e18"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12724,
              "mutability": "constant",
              "name": "HALF_UNIT",
              "nameLocation": "673:9:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "656:53:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                "typeString": "UD60x18"
              },
              "typeName": {
                "id": 12719,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12718,
                  "name": "UD60x18",
                  "nameLocations": [
                    "656:7:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "656:7:46"
                },
                "referencedDeclaration": 14179,
                "src": "656:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 12722,
                    "name": "uHALF_UNIT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12717,
                    "src": "698:10:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  ],
                  "expression": {
                    "id": 12720,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "685:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                      "typeString": "type(UD60x18)"
                    }
                  },
                  "id": 12721,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "693:4:46",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "685:12:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                    "typeString": "function (uint256) pure returns (UD60x18)"
                  }
                },
                "id": 12723,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "685:24:46",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12728,
              "mutability": "constant",
              "name": "uLOG2_10",
              "nameLocation": "771:8:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "754:48:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 12726,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "754:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "335f333231393238303934383837333632333437",
                "id": 12727,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "782:20:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_3321928094887362347_by_1",
                  "typeString": "int_const 3321928094887362347"
                },
                "value": "3_321928094887362347"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12735,
              "mutability": "constant",
              "name": "LOG2_10",
              "nameLocation": "821:7:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "804:49:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                "typeString": "UD60x18"
              },
              "typeName": {
                "id": 12730,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12729,
                  "name": "UD60x18",
                  "nameLocations": [
                    "804:7:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "804:7:46"
                },
                "referencedDeclaration": 14179,
                "src": "804:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 12733,
                    "name": "uLOG2_10",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12728,
                    "src": "844:8:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  ],
                  "expression": {
                    "id": 12731,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "831:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                      "typeString": "type(UD60x18)"
                    }
                  },
                  "id": 12732,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "839:4:46",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "831:12:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                    "typeString": "function (uint256) pure returns (UD60x18)"
                  }
                },
                "id": 12734,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "831:22:46",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12739,
              "mutability": "constant",
              "name": "uLOG2_E",
              "nameLocation": "914:7:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "897:47:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 12737,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "897:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "315f343432363935303430383838393633343037",
                "id": 12738,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "924:20:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1442695040888963407_by_1",
                  "typeString": "int_const 1442695040888963407"
                },
                "value": "1_442695040888963407"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12746,
              "mutability": "constant",
              "name": "LOG2_E",
              "nameLocation": "963:6:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "946:47:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                "typeString": "UD60x18"
              },
              "typeName": {
                "id": 12741,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12740,
                  "name": "UD60x18",
                  "nameLocations": [
                    "946:7:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "946:7:46"
                },
                "referencedDeclaration": 14179,
                "src": "946:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 12744,
                    "name": "uLOG2_E",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12739,
                    "src": "985:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  ],
                  "expression": {
                    "id": 12742,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "972:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                      "typeString": "type(UD60x18)"
                    }
                  },
                  "id": 12743,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "980:4:46",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "972:12:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                    "typeString": "function (uint256) pure returns (UD60x18)"
                  }
                },
                "id": 12745,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "972:21:46",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12750,
              "mutability": "constant",
              "name": "uMAX_UD60x18",
              "nameLocation": "1067:12:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "1050:111:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 12748,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1050:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3131353739323038393233373331363139353432333537303938353030383638373930373835333236393938343636353634303536343033393435375f353834303037393133313239363339393335",
                "id": 12749,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1082:79:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1",
                  "typeString": "int_const 1157...(70 digits omitted)...9935"
                },
                "value": "115792089237316195423570985008687907853269984665640564039457_584007913129639935"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12757,
              "mutability": "constant",
              "name": "MAX_UD60x18",
              "nameLocation": "1180:11:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "1163:57:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                "typeString": "UD60x18"
              },
              "typeName": {
                "id": 12752,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12751,
                  "name": "UD60x18",
                  "nameLocations": [
                    "1163:7:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "1163:7:46"
                },
                "referencedDeclaration": 14179,
                "src": "1163:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 12755,
                    "name": "uMAX_UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12750,
                    "src": "1207:12:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  ],
                  "expression": {
                    "id": 12753,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "1194:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                      "typeString": "type(UD60x18)"
                    }
                  },
                  "id": 12754,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "1202:4:46",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "1194:12:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                    "typeString": "function (uint256) pure returns (UD60x18)"
                  }
                },
                "id": 12756,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "1194:26:46",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12761,
              "mutability": "constant",
              "name": "uMAX_WHOLE_UD60x18",
              "nameLocation": "1300:18:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "1283:117:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 12759,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1283:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3131353739323038393233373331363139353432333537303938353030383638373930373835333236393938343636353634303536343033393435375f303030303030303030303030303030303030",
                "id": 12760,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1321:79:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457000000000000000000_by_1",
                  "typeString": "int_const 1157...(70 digits omitted)...0000"
                },
                "value": "115792089237316195423570985008687907853269984665640564039457_000000000000000000"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12768,
              "mutability": "constant",
              "name": "MAX_WHOLE_UD60x18",
              "nameLocation": "1419:17:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "1402:69:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                "typeString": "UD60x18"
              },
              "typeName": {
                "id": 12763,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12762,
                  "name": "UD60x18",
                  "nameLocations": [
                    "1402:7:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "1402:7:46"
                },
                "referencedDeclaration": 14179,
                "src": "1402:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 12766,
                    "name": "uMAX_WHOLE_UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12761,
                    "src": "1452:18:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  ],
                  "expression": {
                    "id": 12764,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "1439:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                      "typeString": "type(UD60x18)"
                    }
                  },
                  "id": 12765,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "1447:4:46",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "1439:12:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                    "typeString": "function (uint256) pure returns (UD60x18)"
                  }
                },
                "id": 12767,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "1439:32:46",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12776,
              "mutability": "constant",
              "name": "PI",
              "nameLocation": "1524:2:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "1507:56:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                "typeString": "UD60x18"
              },
              "typeName": {
                "id": 12771,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12770,
                  "name": "UD60x18",
                  "nameLocations": [
                    "1507:7:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "1507:7:46"
                },
                "referencedDeclaration": 14179,
                "src": "1507:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "335f313431353932363533353839373933323338",
                    "id": 12774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1542:20:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3141592653589793238_by_1",
                      "typeString": "int_const 3141592653589793238"
                    },
                    "value": "3_141592653589793238"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_3141592653589793238_by_1",
                      "typeString": "int_const 3141592653589793238"
                    }
                  ],
                  "expression": {
                    "id": 12772,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "1529:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                      "typeString": "type(UD60x18)"
                    }
                  },
                  "id": 12773,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "1537:4:46",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "1529:12:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                    "typeString": "function (uint256) pure returns (UD60x18)"
                  }
                },
                "id": 12775,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "1529:34:46",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12780,
              "mutability": "constant",
              "name": "uUNIT",
              "nameLocation": "1655:5:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "1638:29:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 12778,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1638:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "31653138",
                "id": 12779,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1663:4:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                  "typeString": "int_const 1000000000000000000"
                },
                "value": "1e18"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12787,
              "mutability": "constant",
              "name": "UNIT",
              "nameLocation": "1686:4:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "1669:43:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                "typeString": "UD60x18"
              },
              "typeName": {
                "id": 12782,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12781,
                  "name": "UD60x18",
                  "nameLocations": [
                    "1669:7:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "1669:7:46"
                },
                "referencedDeclaration": 14179,
                "src": "1669:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 12785,
                    "name": "uUNIT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12780,
                    "src": "1706:5:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  ],
                  "expression": {
                    "id": 12783,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "1693:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                      "typeString": "type(UD60x18)"
                    }
                  },
                  "id": 12784,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "1701:4:46",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "1693:12:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                    "typeString": "function (uint256) pure returns (UD60x18)"
                  }
                },
                "id": 12786,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "1693:19:46",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12791,
              "mutability": "constant",
              "name": "uUNIT_SQUARED",
              "nameLocation": "1766:13:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "1749:37:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 12789,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1749:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "31653336",
                "id": 12790,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1782:4:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1000000000000000000000000000000000000_by_1",
                  "typeString": "int_const 1000...(29 digits omitted)...0000"
                },
                "value": "1e36"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12798,
              "mutability": "constant",
              "name": "UNIT_SQUARED",
              "nameLocation": "1805:12:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "1788:59:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                "typeString": "UD60x18"
              },
              "typeName": {
                "id": 12793,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12792,
                  "name": "UD60x18",
                  "nameLocations": [
                    "1788:7:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "1788:7:46"
                },
                "referencedDeclaration": 14179,
                "src": "1788:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "id": 12796,
                    "name": "uUNIT_SQUARED",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12791,
                    "src": "1833:13:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  ],
                  "expression": {
                    "id": 12794,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "1820:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                      "typeString": "type(UD60x18)"
                    }
                  },
                  "id": 12795,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "1828:4:46",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "1820:12:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                    "typeString": "function (uint256) pure returns (UD60x18)"
                  }
                },
                "id": 12797,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "1820:27:46",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 12806,
              "mutability": "constant",
              "name": "ZERO",
              "nameLocation": "1902:4:46",
              "nodeType": "VariableDeclaration",
              "scope": 12807,
              "src": "1885:39:46",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                "typeString": "UD60x18"
              },
              "typeName": {
                "id": 12801,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 12800,
                  "name": "UD60x18",
                  "nameLocations": [
                    "1885:7:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "1885:7:46"
                },
                "referencedDeclaration": 14179,
                "src": "1885:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "value": {
                "arguments": [
                  {
                    "hexValue": "30",
                    "id": 12804,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1922:1:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    }
                  ],
                  "expression": {
                    "id": 12802,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "1909:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                      "typeString": "type(UD60x18)"
                    }
                  },
                  "id": 12803,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "1917:4:46",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "1909:12:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                    "typeString": "function (uint256) pure returns (UD60x18)"
                  }
                },
                "id": 12805,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "1909:15:46",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "32:1894:46"
        },
        "id": 46
      },
      "@prb/math/src/ud60x18/Conversions.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/ud60x18/Conversions.sol",
          "exportedSymbols": {
            "PRBMath_UD60x18_Convert_Overflow": [
              12880
            ],
            "UD60x18": [
              14179
            ],
            "convert": [
              12834,
              12865
            ],
            "uMAX_UD60x18": [
              12750
            ],
            "uUNIT": [
              12780
            ]
          },
          "id": 12866,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12808,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:47"
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Constants.sol",
              "file": "./Constants.sol",
              "id": 12811,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12866,
              "sourceUnit": 12807,
              "src": "59:54:47",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12809,
                    "name": "uMAX_UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12750,
                    "src": "68:12:47",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 12810,
                    "name": "uUNIT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12780,
                    "src": "82:5:47",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Errors.sol",
              "file": "./Errors.sol",
              "id": 12813,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12866,
              "sourceUnit": 12956,
              "src": "114:64:47",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12812,
                    "name": "PRBMath_UD60x18_Convert_Overflow",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12880,
                    "src": "123:32:47",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 12815,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12866,
              "sourceUnit": 14250,
              "src": "179:42:47",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12814,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "188:7:47",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "body": {
                "id": 12833,
                "nodeType": "Block",
                "src": "511:43:47",
                "statements": [
                  {
                    "expression": {
                      "id": 12831,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12824,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12822,
                        "src": "517:6:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 12827,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12819,
                              "src": "541:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            ],
                            "expression": {
                              "id": 12825,
                              "name": "UD60x18",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14179,
                              "src": "526:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                                "typeString": "type(UD60x18)"
                              }
                            },
                            "id": 12826,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "534:6:47",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "src": "526:14:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 12828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "526:17:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "id": 12829,
                          "name": "uUNIT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12780,
                          "src": "546:5:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "526:25:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "517:34:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12832,
                    "nodeType": "ExpressionStatement",
                    "src": "517:34:47"
                  }
                ]
              },
              "documentation": {
                "id": 12816,
                "nodeType": "StructuredDocumentation",
                "src": "223:230:47",
                "text": "@notice Converts a UD60x18 number to a simple integer by dividing it by `UNIT`.\n @dev The result is rounded toward zero.\n @param x The UD60x18 number to convert.\n @return result The same number in basic integer form."
              },
              "id": 12834,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "convert",
              "nameLocation": "462:7:47",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12820,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12819,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "478:1:47",
                    "nodeType": "VariableDeclaration",
                    "scope": 12834,
                    "src": "470:9:47",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12818,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12817,
                        "name": "UD60x18",
                        "nameLocations": [
                          "470:7:47"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "470:7:47"
                      },
                      "referencedDeclaration": 14179,
                      "src": "470:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "469:11:47"
              },
              "returnParameters": {
                "id": 12823,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12822,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "503:6:47",
                    "nodeType": "VariableDeclaration",
                    "scope": 12834,
                    "src": "495:14:47",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 12821,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "495:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "494:16:47"
              },
              "scope": 12866,
              "src": "453:101:47",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 12864,
                "nodeType": "Block",
                "src": "854:161:47",
                "statements": [
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12847,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 12843,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12837,
                        "src": "864:1:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12846,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 12844,
                          "name": "uMAX_UD60x18",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12750,
                          "src": "868:12:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "id": 12845,
                          "name": "uUNIT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12780,
                          "src": "883:5:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "868:20:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "864:24:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 12853,
                    "nodeType": "IfStatement",
                    "src": "860:89:47",
                    "trueBody": {
                      "id": 12852,
                      "nodeType": "Block",
                      "src": "890:59:47",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 12849,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12837,
                                "src": "940:1:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 12848,
                              "name": "PRBMath_UD60x18_Convert_Overflow",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12880,
                              "src": "907:32:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$",
                                "typeString": "function (uint256) pure returns (error)"
                              }
                            },
                            "id": 12850,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "907:35:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 12851,
                          "nodeType": "RevertStatement",
                          "src": "900:42:47"
                        }
                      ]
                    }
                  },
                  {
                    "id": 12863,
                    "nodeType": "UncheckedBlock",
                    "src": "954:59:47",
                    "statements": [
                      {
                        "expression": {
                          "id": 12861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12854,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12841,
                            "src": "974:6:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 12859,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 12857,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12837,
                                  "src": "996:1:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 12858,
                                  "name": "uUNIT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12780,
                                  "src": "1000:5:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "996:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 12855,
                                "name": "UD60x18",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14179,
                                "src": "983:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "type(UD60x18)"
                                }
                              },
                              "id": 12856,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "991:4:47",
                              "memberName": "wrap",
                              "nodeType": "MemberAccess",
                              "src": "983:12:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                "typeString": "function (uint256) pure returns (UD60x18)"
                              }
                            },
                            "id": 12860,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "983:23:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "src": "974:32:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 12862,
                        "nodeType": "ExpressionStatement",
                        "src": "974:32:47"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 12835,
                "nodeType": "StructuredDocumentation",
                "src": "556:240:47",
                "text": "@notice Converts a simple integer to UD60x18 by multiplying it by `UNIT`.\n @dev Requirements:\n - x ≤ MAX_UD60x18 / UNIT\n @param x The basic integer to convert.\n @return result The same number converted to UD60x18."
              },
              "id": 12865,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "convert",
              "nameLocation": "805:7:47",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12838,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12837,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "821:1:47",
                    "nodeType": "VariableDeclaration",
                    "scope": 12865,
                    "src": "813:9:47",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 12836,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "813:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "812:11:47"
              },
              "returnParameters": {
                "id": 12842,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12841,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "846:6:47",
                    "nodeType": "VariableDeclaration",
                    "scope": 12865,
                    "src": "838:14:47",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12840,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12839,
                        "name": "UD60x18",
                        "nameLocations": [
                          "838:7:47"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "838:7:47"
                      },
                      "referencedDeclaration": 14179,
                      "src": "838:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "837:16:47"
              },
              "scope": 12866,
              "src": "796:219:47",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            }
          ],
          "src": "32:984:47"
        },
        "id": 47
      },
      "@prb/math/src/ud60x18/Errors.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/ud60x18/Errors.sol",
          "exportedSymbols": {
            "PRBMath_UD60x18_Ceil_Overflow": [
              12875
            ],
            "PRBMath_UD60x18_Convert_Overflow": [
              12880
            ],
            "PRBMath_UD60x18_Exp2_InputTooBig": [
              12892
            ],
            "PRBMath_UD60x18_Exp_InputTooBig": [
              12886
            ],
            "PRBMath_UD60x18_Gm_Overflow": [
              12901
            ],
            "PRBMath_UD60x18_IntoSD1x18_Overflow": [
              12907
            ],
            "PRBMath_UD60x18_IntoSD21x18_Overflow": [
              12913
            ],
            "PRBMath_UD60x18_IntoSD59x18_Overflow": [
              12919
            ],
            "PRBMath_UD60x18_IntoUD21x18_Overflow": [
              12931
            ],
            "PRBMath_UD60x18_IntoUD2x18_Overflow": [
              12925
            ],
            "PRBMath_UD60x18_IntoUint128_Overflow": [
              12937
            ],
            "PRBMath_UD60x18_IntoUint40_Overflow": [
              12943
            ],
            "PRBMath_UD60x18_Log_InputTooSmall": [
              12949
            ],
            "PRBMath_UD60x18_Sqrt_Overflow": [
              12955
            ],
            "UD60x18": [
              14179
            ]
          },
          "id": 12956,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12867,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:48"
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 12869,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12956,
              "sourceUnit": 14250,
              "src": "59:42:48",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12868,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "68:7:48",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "documentation": {
                "id": 12870,
                "nodeType": "StructuredDocumentation",
                "src": "103:60:48",
                "text": "@notice Thrown when ceiling a number overflows UD60x18."
              },
              "errorSelector": "6149f6b9",
              "id": 12875,
              "name": "PRBMath_UD60x18_Ceil_Overflow",
              "nameLocation": "169:29:48",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12874,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12873,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "207:1:48",
                    "nodeType": "VariableDeclaration",
                    "scope": 12875,
                    "src": "199:9:48",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12872,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12871,
                        "name": "UD60x18",
                        "nameLocations": [
                          "199:7:48"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "199:7:48"
                      },
                      "referencedDeclaration": 14179,
                      "src": "199:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "198:11:48"
              },
              "src": "163:47:48"
            },
            {
              "documentation": {
                "id": 12876,
                "nodeType": "StructuredDocumentation",
                "src": "212:96:48",
                "text": "@notice Thrown when converting a basic integer to the fixed-point format overflows UD60x18."
              },
              "errorSelector": "1cd951a7",
              "id": 12880,
              "name": "PRBMath_UD60x18_Convert_Overflow",
              "nameLocation": "314:32:48",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12879,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12878,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "355:1:48",
                    "nodeType": "VariableDeclaration",
                    "scope": 12880,
                    "src": "347:9:48",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 12877,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "347:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "346:11:48"
              },
              "src": "308:50:48"
            },
            {
              "documentation": {
                "id": 12881,
                "nodeType": "StructuredDocumentation",
                "src": "360:99:48",
                "text": "@notice Thrown when taking the natural exponent of a base greater than 133_084258667509499441."
              },
              "errorSelector": "1af63aca",
              "id": 12886,
              "name": "PRBMath_UD60x18_Exp_InputTooBig",
              "nameLocation": "465:31:48",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12885,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12884,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "505:1:48",
                    "nodeType": "VariableDeclaration",
                    "scope": 12886,
                    "src": "497:9:48",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12883,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12882,
                        "name": "UD60x18",
                        "nameLocations": [
                          "497:7:48"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "497:7:48"
                      },
                      "referencedDeclaration": 14179,
                      "src": "497:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "496:11:48"
              },
              "src": "459:49:48"
            },
            {
              "documentation": {
                "id": 12887,
                "nodeType": "StructuredDocumentation",
                "src": "510:82:48",
                "text": "@notice Thrown when taking the binary exponent of a base greater than 192e18."
              },
              "errorSelector": "b3b6ba1f",
              "id": 12892,
              "name": "PRBMath_UD60x18_Exp2_InputTooBig",
              "nameLocation": "598:32:48",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12891,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12890,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "639:1:48",
                    "nodeType": "VariableDeclaration",
                    "scope": 12892,
                    "src": "631:9:48",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12889,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12888,
                        "name": "UD60x18",
                        "nameLocations": [
                          "631:7:48"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "631:7:48"
                      },
                      "referencedDeclaration": 14179,
                      "src": "631:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "630:11:48"
              },
              "src": "592:50:48"
            },
            {
              "documentation": {
                "id": 12893,
                "nodeType": "StructuredDocumentation",
                "src": "644:105:48",
                "text": "@notice Thrown when taking the geometric mean of two numbers and multiplying them overflows UD60x18."
              },
              "errorSelector": "ae7f3b37",
              "id": 12901,
              "name": "PRBMath_UD60x18_Gm_Overflow",
              "nameLocation": "755:27:48",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12900,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12896,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "791:1:48",
                    "nodeType": "VariableDeclaration",
                    "scope": 12901,
                    "src": "783:9:48",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12895,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12894,
                        "name": "UD60x18",
                        "nameLocations": [
                          "783:7:48"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "783:7:48"
                      },
                      "referencedDeclaration": 14179,
                      "src": "783:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 12899,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "802:1:48",
                    "nodeType": "VariableDeclaration",
                    "scope": 12901,
                    "src": "794:9:48",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12898,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12897,
                        "name": "UD60x18",
                        "nameLocations": [
                          "794:7:48"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "794:7:48"
                      },
                      "referencedDeclaration": 14179,
                      "src": "794:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "782:22:48"
              },
              "src": "749:56:48"
            },
            {
              "documentation": {
                "id": 12902,
                "nodeType": "StructuredDocumentation",
                "src": "807:84:48",
                "text": "@notice Thrown when trying to cast a UD60x18 number that doesn't fit in SD1x18."
              },
              "errorSelector": "381af80b",
              "id": 12907,
              "name": "PRBMath_UD60x18_IntoSD1x18_Overflow",
              "nameLocation": "897:35:48",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12906,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12905,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "941:1:48",
                    "nodeType": "VariableDeclaration",
                    "scope": 12907,
                    "src": "933:9:48",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12904,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12903,
                        "name": "UD60x18",
                        "nameLocations": [
                          "933:7:48"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "933:7:48"
                      },
                      "referencedDeclaration": 14179,
                      "src": "933:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "932:11:48"
              },
              "src": "891:53:48"
            },
            {
              "documentation": {
                "id": 12908,
                "nodeType": "StructuredDocumentation",
                "src": "946:85:48",
                "text": "@notice Thrown when trying to cast a UD60x18 number that doesn't fit in SD21x18."
              },
              "errorSelector": "447e1485",
              "id": 12913,
              "name": "PRBMath_UD60x18_IntoSD21x18_Overflow",
              "nameLocation": "1037:36:48",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12912,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12911,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1082:1:48",
                    "nodeType": "VariableDeclaration",
                    "scope": 12913,
                    "src": "1074:9:48",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12910,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12909,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1074:7:48"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1074:7:48"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1074:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1073:11:48"
              },
              "src": "1031:54:48"
            },
            {
              "documentation": {
                "id": 12914,
                "nodeType": "StructuredDocumentation",
                "src": "1087:85:48",
                "text": "@notice Thrown when trying to cast a UD60x18 number that doesn't fit in SD59x18."
              },
              "errorSelector": "f4618684",
              "id": 12919,
              "name": "PRBMath_UD60x18_IntoSD59x18_Overflow",
              "nameLocation": "1178:36:48",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12918,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12917,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1223:1:48",
                    "nodeType": "VariableDeclaration",
                    "scope": 12919,
                    "src": "1215:9:48",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12916,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12915,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1215:7:48"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1215:7:48"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1215:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1214:11:48"
              },
              "src": "1172:54:48"
            },
            {
              "documentation": {
                "id": 12920,
                "nodeType": "StructuredDocumentation",
                "src": "1228:84:48",
                "text": "@notice Thrown when trying to cast a UD60x18 number that doesn't fit in UD2x18."
              },
              "errorSelector": "f59b8dd0",
              "id": 12925,
              "name": "PRBMath_UD60x18_IntoUD2x18_Overflow",
              "nameLocation": "1318:35:48",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12924,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12923,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1362:1:48",
                    "nodeType": "VariableDeclaration",
                    "scope": 12925,
                    "src": "1354:9:48",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12922,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12921,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1354:7:48"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1354:7:48"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1354:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1353:11:48"
              },
              "src": "1312:53:48"
            },
            {
              "documentation": {
                "id": 12926,
                "nodeType": "StructuredDocumentation",
                "src": "1367:85:48",
                "text": "@notice Thrown when trying to cast a UD60x18 number that doesn't fit in UD21x18."
              },
              "errorSelector": "760e15a3",
              "id": 12931,
              "name": "PRBMath_UD60x18_IntoUD21x18_Overflow",
              "nameLocation": "1458:36:48",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12930,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12929,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1503:1:48",
                    "nodeType": "VariableDeclaration",
                    "scope": 12931,
                    "src": "1495:9:48",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12928,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12927,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1495:7:48"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1495:7:48"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1495:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1494:11:48"
              },
              "src": "1452:54:48"
            },
            {
              "documentation": {
                "id": 12932,
                "nodeType": "StructuredDocumentation",
                "src": "1508:85:48",
                "text": "@notice Thrown when trying to cast a UD60x18 number that doesn't fit in uint128."
              },
              "errorSelector": "4916adce",
              "id": 12937,
              "name": "PRBMath_UD60x18_IntoUint128_Overflow",
              "nameLocation": "1599:36:48",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12936,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12935,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1644:1:48",
                    "nodeType": "VariableDeclaration",
                    "scope": 12937,
                    "src": "1636:9:48",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12934,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12933,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1636:7:48"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1636:7:48"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1636:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1635:11:48"
              },
              "src": "1593:54:48"
            },
            {
              "documentation": {
                "id": 12938,
                "nodeType": "StructuredDocumentation",
                "src": "1649:84:48",
                "text": "@notice Thrown when trying to cast a UD60x18 number that doesn't fit in uint40."
              },
              "errorSelector": "583c666a",
              "id": 12943,
              "name": "PRBMath_UD60x18_IntoUint40_Overflow",
              "nameLocation": "1739:35:48",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12942,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12941,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1783:1:48",
                    "nodeType": "VariableDeclaration",
                    "scope": 12943,
                    "src": "1775:9:48",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12940,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12939,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1775:7:48"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1775:7:48"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1775:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1774:11:48"
              },
              "src": "1733:53:48"
            },
            {
              "documentation": {
                "id": 12944,
                "nodeType": "StructuredDocumentation",
                "src": "1788:73:48",
                "text": "@notice Thrown when taking the logarithm of a number less than UNIT."
              },
              "errorSelector": "36d32ef0",
              "id": 12949,
              "name": "PRBMath_UD60x18_Log_InputTooSmall",
              "nameLocation": "1867:33:48",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12948,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12947,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1909:1:48",
                    "nodeType": "VariableDeclaration",
                    "scope": 12949,
                    "src": "1901:9:48",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12946,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12945,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1901:7:48"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1901:7:48"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1901:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1900:11:48"
              },
              "src": "1861:51:48"
            },
            {
              "documentation": {
                "id": 12950,
                "nodeType": "StructuredDocumentation",
                "src": "1914:71:48",
                "text": "@notice Thrown when calculating the square root overflows UD60x18."
              },
              "errorSelector": "edc236ad",
              "id": 12955,
              "name": "PRBMath_UD60x18_Sqrt_Overflow",
              "nameLocation": "1991:29:48",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12954,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12953,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2029:1:48",
                    "nodeType": "VariableDeclaration",
                    "scope": 12955,
                    "src": "2021:9:48",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12952,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12951,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2021:7:48"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2021:7:48"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2021:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2020:11:48"
              },
              "src": "1985:47:48"
            }
          ],
          "src": "32:2001:48"
        },
        "id": 48
      },
      "@prb/math/src/ud60x18/Helpers.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/ud60x18/Helpers.sol",
          "exportedSymbols": {
            "UD60x18": [
              14179
            ],
            "add": [
              12987
            ],
            "and": [
              13010
            ],
            "and2": [
              13036
            ],
            "eq": [
              13059
            ],
            "gt": [
              13082
            ],
            "gte": [
              13105
            ],
            "isZero": [
              13123
            ],
            "lshift": [
              13146
            ],
            "lt": [
              13169
            ],
            "lte": [
              13192
            ],
            "mod": [
              13218
            ],
            "neq": [
              13241
            ],
            "not": [
              13261
            ],
            "or": [
              13287
            ],
            "rshift": [
              13310
            ],
            "sub": [
              13336
            ],
            "uncheckedAdd": [
              13363
            ],
            "uncheckedSub": [
              13390
            ],
            "wrap": [
              12677
            ],
            "xor": [
              13416
            ]
          },
          "id": 13417,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12957,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:49"
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Casting.sol",
              "file": "./Casting.sol",
              "id": 12959,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13417,
              "sourceUnit": 12678,
              "src": "59:37:49",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12958,
                    "name": "wrap",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12677,
                    "src": "68:4:49",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 12961,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13417,
              "sourceUnit": 14250,
              "src": "97:42:49",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 12960,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "106:7:49",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "body": {
                "id": 12986,
                "nodeType": "Block",
                "src": "285:47:49",
                "statements": [
                  {
                    "expression": {
                      "id": 12984,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12974,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12972,
                        "src": "291:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 12982,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 12976,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12965,
                                  "src": "305:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 12977,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "307:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "305:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 12978,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "305:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 12979,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12968,
                                  "src": "318:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 12980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "320:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "318:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 12981,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "318:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "305:23:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12975,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12677,
                          "src": "300:4:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 12983,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "300:29:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "291:38:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 12985,
                    "nodeType": "ExpressionStatement",
                    "src": "291:38:49"
                  }
                ]
              },
              "documentation": {
                "id": 12962,
                "nodeType": "StructuredDocumentation",
                "src": "141:79:49",
                "text": "@notice Implements the checked addition operation (+) in the UD60x18 type."
              },
              "id": 12987,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "add",
              "nameLocation": "229:3:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12969,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12965,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "241:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 12987,
                    "src": "233:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12964,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12963,
                        "name": "UD60x18",
                        "nameLocations": [
                          "233:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "233:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "233:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 12968,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "252:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 12987,
                    "src": "244:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12967,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12966,
                        "name": "UD60x18",
                        "nameLocations": [
                          "244:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "244:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "244:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "232:22:49"
              },
              "returnParameters": {
                "id": 12973,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12972,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "277:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 12987,
                    "src": "269:14:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12971,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12970,
                        "name": "UD60x18",
                        "nameLocations": [
                          "269:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "269:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "269:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "268:16:49"
              },
              "scope": 13417,
              "src": "220:112:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13009,
                "nodeType": "Block",
                "src": "476:41:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13007,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 12999,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12997,
                        "src": "482:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13005,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13001,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12991,
                                  "src": "496:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 13002,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "498:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "496:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 13003,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "496:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 13004,
                              "name": "bits",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12993,
                              "src": "509:4:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "496:17:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13000,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12677,
                          "src": "491:4:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 13006,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "491:23:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "482:32:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 13008,
                    "nodeType": "ExpressionStatement",
                    "src": "482:32:49"
                  }
                ]
              },
              "documentation": {
                "id": 12988,
                "nodeType": "StructuredDocumentation",
                "src": "334:74:49",
                "text": "@notice Implements the AND (&) bitwise operation in the UD60x18 type."
              },
              "id": 13010,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "and",
              "nameLocation": "417:3:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 12994,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12991,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "429:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13010,
                    "src": "421:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12990,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12989,
                        "name": "UD60x18",
                        "nameLocations": [
                          "421:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "421:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "421:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 12993,
                    "mutability": "mutable",
                    "name": "bits",
                    "nameLocation": "440:4:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13010,
                    "src": "432:12:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 12992,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "432:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "420:25:49"
              },
              "returnParameters": {
                "id": 12998,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 12997,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "468:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13010,
                    "src": "460:14:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 12996,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12995,
                        "name": "UD60x18",
                        "nameLocations": [
                          "460:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "460:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "460:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "459:16:49"
              },
              "scope": 13417,
              "src": "408:109:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13035,
                "nodeType": "Block",
                "src": "659:47:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13033,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13023,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13021,
                        "src": "665:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13031,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13025,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13014,
                                  "src": "679:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 13026,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "681:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "679:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 13027,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "679:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13028,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13017,
                                  "src": "692:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 13029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "694:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "692:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 13030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "692:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "679:23:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13024,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12677,
                          "src": "674:4:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 13032,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "674:29:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "665:38:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 13034,
                    "nodeType": "ExpressionStatement",
                    "src": "665:38:49"
                  }
                ]
              },
              "documentation": {
                "id": 13011,
                "nodeType": "StructuredDocumentation",
                "src": "519:74:49",
                "text": "@notice Implements the AND (&) bitwise operation in the UD60x18 type."
              },
              "id": 13036,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "and2",
              "nameLocation": "602:4:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13018,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13014,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "615:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13036,
                    "src": "607:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13013,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13012,
                        "name": "UD60x18",
                        "nameLocations": [
                          "607:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "607:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "607:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13017,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "626:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13036,
                    "src": "618:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13016,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13015,
                        "name": "UD60x18",
                        "nameLocations": [
                          "618:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "618:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "618:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "606:22:49"
              },
              "returnParameters": {
                "id": 13022,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13021,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "651:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13036,
                    "src": "643:14:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13020,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13019,
                        "name": "UD60x18",
                        "nameLocations": [
                          "643:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "643:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "643:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "642:16:49"
              },
              "scope": 13417,
              "src": "593:113:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13058,
                "nodeType": "Block",
                "src": "838:42:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13056,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13048,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13046,
                        "src": "844:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13049,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13040,
                              "src": "853:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "id": 13050,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "855:6:49",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12660,
                            "src": "853:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 13051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "853:10:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13052,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13043,
                              "src": "867:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "id": 13053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "869:6:49",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12660,
                            "src": "867:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 13054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "867:10:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "853:24:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "844:33:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 13057,
                    "nodeType": "ExpressionStatement",
                    "src": "844:33:49"
                  }
                ]
              },
              "documentation": {
                "id": 13037,
                "nodeType": "StructuredDocumentation",
                "src": "708:69:49",
                "text": "@notice Implements the equal operation (==) in the UD60x18 type."
              },
              "id": 13059,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "eq",
              "nameLocation": "786:2:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13044,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13040,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "797:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13059,
                    "src": "789:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13039,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13038,
                        "name": "UD60x18",
                        "nameLocations": [
                          "789:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "789:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "789:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13043,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "808:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13059,
                    "src": "800:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13042,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13041,
                        "name": "UD60x18",
                        "nameLocations": [
                          "800:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "800:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "800:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "788:22:49"
              },
              "returnParameters": {
                "id": 13047,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13046,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "830:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13059,
                    "src": "825:11:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 13045,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "825:4:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "824:13:49"
              },
              "scope": 13417,
              "src": "777:103:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13081,
                "nodeType": "Block",
                "src": "1018:41:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13079,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13071,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13069,
                        "src": "1024:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13078,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13072,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13063,
                              "src": "1033:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "id": 13073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1035:6:49",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12660,
                            "src": "1033:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 13074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1033:10:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13075,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13066,
                              "src": "1046:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "id": 13076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1048:6:49",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12660,
                            "src": "1046:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 13077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1046:10:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1033:23:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1024:32:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 13080,
                    "nodeType": "ExpressionStatement",
                    "src": "1024:32:49"
                  }
                ]
              },
              "documentation": {
                "id": 13060,
                "nodeType": "StructuredDocumentation",
                "src": "882:75:49",
                "text": "@notice Implements the greater than operation (>) in the UD60x18 type."
              },
              "id": 13082,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "gt",
              "nameLocation": "966:2:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13067,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13063,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "977:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13082,
                    "src": "969:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13062,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13061,
                        "name": "UD60x18",
                        "nameLocations": [
                          "969:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "969:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "969:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13066,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "988:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13082,
                    "src": "980:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13065,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13064,
                        "name": "UD60x18",
                        "nameLocations": [
                          "980:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "980:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "980:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "968:22:49"
              },
              "returnParameters": {
                "id": 13070,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13069,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1010:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13082,
                    "src": "1005:11:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 13068,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1005:4:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1004:13:49"
              },
              "scope": 13417,
              "src": "957:102:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13104,
                "nodeType": "Block",
                "src": "1211:42:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13102,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13094,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13092,
                        "src": "1217:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13095,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13086,
                              "src": "1226:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "id": 13096,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1228:6:49",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12660,
                            "src": "1226:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 13097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1226:10:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13098,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13089,
                              "src": "1240:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "id": 13099,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1242:6:49",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12660,
                            "src": "1240:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 13100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1240:10:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1226:24:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1217:33:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 13103,
                    "nodeType": "ExpressionStatement",
                    "src": "1217:33:49"
                  }
                ]
              },
              "documentation": {
                "id": 13083,
                "nodeType": "StructuredDocumentation",
                "src": "1061:88:49",
                "text": "@notice Implements the greater than or equal to operation (>=) in the UD60x18 type."
              },
              "id": 13105,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "gte",
              "nameLocation": "1158:3:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13090,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13086,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1170:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13105,
                    "src": "1162:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13085,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13084,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1162:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1162:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1162:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13089,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "1181:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13105,
                    "src": "1173:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13088,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13087,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1173:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1173:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1173:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1161:22:49"
              },
              "returnParameters": {
                "id": 13093,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13092,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1203:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13105,
                    "src": "1198:11:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 13091,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1198:4:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1197:13:49"
              },
              "scope": 13417,
              "src": "1149:104:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13122,
                "nodeType": "Block",
                "src": "1386:83:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13120,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13114,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13112,
                        "src": "1442:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13119,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13115,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13109,
                              "src": "1451:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "id": 13116,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1453:6:49",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12660,
                            "src": "1451:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 13117,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1451:10:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 13118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1465:1:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1451:15:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1442:24:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 13121,
                    "nodeType": "ExpressionStatement",
                    "src": "1442:24:49"
                  }
                ]
              },
              "documentation": {
                "id": 13106,
                "nodeType": "StructuredDocumentation",
                "src": "1255:77:49",
                "text": "@notice Implements a zero comparison check function in the UD60x18 type."
              },
              "id": 13123,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "isZero",
              "nameLocation": "1341:6:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13110,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13109,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1356:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13123,
                    "src": "1348:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13108,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13107,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1348:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1348:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1348:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1347:11:49"
              },
              "returnParameters": {
                "id": 13113,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13112,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1378:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13123,
                    "src": "1373:11:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 13111,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1373:4:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1372:13:49"
              },
              "scope": 13417,
              "src": "1332:137:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13145,
                "nodeType": "Block",
                "src": "1616:42:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13143,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13135,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13133,
                        "src": "1622:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13141,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13137,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13127,
                                  "src": "1636:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 13138,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1638:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "1636:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 13139,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1636:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "id": 13140,
                              "name": "bits",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13129,
                              "src": "1650:4:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1636:18:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13136,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12677,
                          "src": "1631:4:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 13142,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1631:24:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "1622:33:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 13144,
                    "nodeType": "ExpressionStatement",
                    "src": "1622:33:49"
                  }
                ]
              },
              "documentation": {
                "id": 13124,
                "nodeType": "StructuredDocumentation",
                "src": "1471:74:49",
                "text": "@notice Implements the left shift operation (<<) in the UD60x18 type."
              },
              "id": 13146,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "lshift",
              "nameLocation": "1554:6:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13130,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13127,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1569:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13146,
                    "src": "1561:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13126,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13125,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1561:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1561:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1561:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13129,
                    "mutability": "mutable",
                    "name": "bits",
                    "nameLocation": "1580:4:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13146,
                    "src": "1572:12:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 13128,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1572:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1560:25:49"
              },
              "returnParameters": {
                "id": 13134,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13133,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1608:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13146,
                    "src": "1600:14:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13132,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13131,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1600:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1600:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1600:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1599:16:49"
              },
              "scope": 13417,
              "src": "1545:113:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13168,
                "nodeType": "Block",
                "src": "1794:41:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13158,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13156,
                        "src": "1800:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13159,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13150,
                              "src": "1809:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "id": 13160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1811:6:49",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12660,
                            "src": "1809:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 13161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1809:10:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13162,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13153,
                              "src": "1822:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "id": 13163,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1824:6:49",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12660,
                            "src": "1822:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 13164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1822:10:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1809:23:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1800:32:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 13167,
                    "nodeType": "ExpressionStatement",
                    "src": "1800:32:49"
                  }
                ]
              },
              "documentation": {
                "id": 13147,
                "nodeType": "StructuredDocumentation",
                "src": "1660:73:49",
                "text": "@notice Implements the lower than operation (<) in the UD60x18 type."
              },
              "id": 13169,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "lt",
              "nameLocation": "1742:2:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13154,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13150,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1753:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13169,
                    "src": "1745:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13149,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13148,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1745:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1745:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1745:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13153,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "1764:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13169,
                    "src": "1756:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13152,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13151,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1756:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1756:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1756:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1744:22:49"
              },
              "returnParameters": {
                "id": 13157,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13156,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1786:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13169,
                    "src": "1781:11:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 13155,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1781:4:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1780:13:49"
              },
              "scope": 13417,
              "src": "1733:102:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13191,
                "nodeType": "Block",
                "src": "1985:42:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13189,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13181,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13179,
                        "src": "1991:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13188,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13182,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13173,
                              "src": "2000:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "id": 13183,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2002:6:49",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12660,
                            "src": "2000:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 13184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2000:10:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13185,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13176,
                              "src": "2014:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "id": 13186,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2016:6:49",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12660,
                            "src": "2014:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 13187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2014:10:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2000:24:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1991:33:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 13190,
                    "nodeType": "ExpressionStatement",
                    "src": "1991:33:49"
                  }
                ]
              },
              "documentation": {
                "id": 13170,
                "nodeType": "StructuredDocumentation",
                "src": "1837:86:49",
                "text": "@notice Implements the lower than or equal to operation (<=) in the UD60x18 type."
              },
              "id": 13192,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "lte",
              "nameLocation": "1932:3:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13177,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13173,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1944:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13192,
                    "src": "1936:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13172,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13171,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1936:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1936:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1936:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13176,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "1955:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13192,
                    "src": "1947:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13175,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13174,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1947:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1947:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1947:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1935:22:49"
              },
              "returnParameters": {
                "id": 13180,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13179,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1977:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13192,
                    "src": "1972:11:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 13178,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1972:4:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1971:13:49"
              },
              "scope": 13417,
              "src": "1923:104:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13217,
                "nodeType": "Block",
                "src": "2171:47:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13215,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13205,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13203,
                        "src": "2177:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13213,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13207,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13196,
                                  "src": "2191:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 13208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2193:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "2191:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 13209,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2191:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13210,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13199,
                                  "src": "2204:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 13211,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2206:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "2204:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 13212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2204:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2191:23:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13206,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12677,
                          "src": "2186:4:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 13214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2186:29:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "2177:38:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 13216,
                    "nodeType": "ExpressionStatement",
                    "src": "2177:38:49"
                  }
                ]
              },
              "documentation": {
                "id": 13193,
                "nodeType": "StructuredDocumentation",
                "src": "2029:77:49",
                "text": "@notice Implements the checked modulo operation (%) in the UD60x18 type."
              },
              "id": 13218,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "mod",
              "nameLocation": "2115:3:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13200,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13196,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2127:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13218,
                    "src": "2119:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13195,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13194,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2119:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2119:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2119:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13199,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "2138:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13218,
                    "src": "2130:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13198,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13197,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2130:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2130:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2130:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2118:22:49"
              },
              "returnParameters": {
                "id": 13204,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13203,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2163:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13218,
                    "src": "2155:14:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13202,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13201,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2155:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2155:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2155:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2154:16:49"
              },
              "scope": 13417,
              "src": "2106:112:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13240,
                "nodeType": "Block",
                "src": "2355:42:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13238,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13230,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13228,
                        "src": "2361:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13237,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13231,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13222,
                              "src": "2370:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "id": 13232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2372:6:49",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12660,
                            "src": "2370:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 13233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2370:10:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13234,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13225,
                              "src": "2384:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "id": 13235,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2386:6:49",
                            "memberName": "unwrap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12660,
                            "src": "2384:8:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 13236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2384:10:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2370:24:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "2361:33:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 13239,
                    "nodeType": "ExpressionStatement",
                    "src": "2361:33:49"
                  }
                ]
              },
              "documentation": {
                "id": 13219,
                "nodeType": "StructuredDocumentation",
                "src": "2220:73:49",
                "text": "@notice Implements the not equal operation (!=) in the UD60x18 type."
              },
              "id": 13241,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "neq",
              "nameLocation": "2302:3:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13226,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13222,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2314:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13241,
                    "src": "2306:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13221,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13220,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2306:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2306:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2306:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13225,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "2325:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13241,
                    "src": "2317:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13224,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13223,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2317:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2317:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2317:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2305:22:49"
              },
              "returnParameters": {
                "id": 13229,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13228,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2347:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13241,
                    "src": "2342:11:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 13227,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2342:4:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2341:13:49"
              },
              "scope": 13417,
              "src": "2293:104:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13260,
                "nodeType": "Block",
                "src": "2527:35:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13258,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13251,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13249,
                        "src": "2533:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 13256,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "~",
                            "prefix": true,
                            "src": "2547:11:49",
                            "subExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13253,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13245,
                                  "src": "2548:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 13254,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2550:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "2548:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 13255,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2548:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13252,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12677,
                          "src": "2542:4:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 13257,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2542:17:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "2533:26:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 13259,
                    "nodeType": "ExpressionStatement",
                    "src": "2533:26:49"
                  }
                ]
              },
              "documentation": {
                "id": 13242,
                "nodeType": "StructuredDocumentation",
                "src": "2399:74:49",
                "text": "@notice Implements the NOT (~) bitwise operation in the UD60x18 type."
              },
              "id": 13261,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "not",
              "nameLocation": "2482:3:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13246,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13245,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2494:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13261,
                    "src": "2486:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13244,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13243,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2486:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2486:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2486:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2485:11:49"
              },
              "returnParameters": {
                "id": 13250,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13249,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2519:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13261,
                    "src": "2511:14:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13248,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13247,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2511:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2511:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2511:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2510:16:49"
              },
              "scope": 13417,
              "src": "2473:89:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13286,
                "nodeType": "Block",
                "src": "2701:47:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13284,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13274,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13272,
                        "src": "2707:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13276,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13265,
                                  "src": "2721:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 13277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2723:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "2721:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 13278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2721:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13279,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13268,
                                  "src": "2734:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 13280,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2736:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "2734:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 13281,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2734:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2721:23:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13275,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12677,
                          "src": "2716:4:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 13283,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2716:29:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "2707:38:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 13285,
                    "nodeType": "ExpressionStatement",
                    "src": "2707:38:49"
                  }
                ]
              },
              "documentation": {
                "id": 13262,
                "nodeType": "StructuredDocumentation",
                "src": "2564:73:49",
                "text": "@notice Implements the OR (|) bitwise operation in the UD60x18 type."
              },
              "id": 13287,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "or",
              "nameLocation": "2646:2:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13269,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13265,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2657:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13287,
                    "src": "2649:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13264,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13263,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2649:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2649:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2649:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13268,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "2668:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13287,
                    "src": "2660:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13267,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13266,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2660:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2660:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2660:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2648:22:49"
              },
              "returnParameters": {
                "id": 13273,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13272,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2693:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13287,
                    "src": "2685:14:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13271,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13270,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2685:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2685:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2685:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2684:16:49"
              },
              "scope": 13417,
              "src": "2637:111:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13309,
                "nodeType": "Block",
                "src": "2896:42:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13299,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13297,
                        "src": "2902:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13301,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13291,
                                  "src": "2916:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 13302,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2918:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "2916:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 13303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2916:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "id": 13304,
                              "name": "bits",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13293,
                              "src": "2930:4:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2916:18:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13300,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12677,
                          "src": "2911:4:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 13306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2911:24:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "2902:33:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 13308,
                    "nodeType": "ExpressionStatement",
                    "src": "2902:33:49"
                  }
                ]
              },
              "documentation": {
                "id": 13288,
                "nodeType": "StructuredDocumentation",
                "src": "2750:75:49",
                "text": "@notice Implements the right shift operation (>>) in the UD60x18 type."
              },
              "id": 13310,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "rshift",
              "nameLocation": "2834:6:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13294,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13291,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2849:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13310,
                    "src": "2841:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13290,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13289,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2841:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2841:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2841:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13293,
                    "mutability": "mutable",
                    "name": "bits",
                    "nameLocation": "2860:4:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13310,
                    "src": "2852:12:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 13292,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2852:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2840:25:49"
              },
              "returnParameters": {
                "id": 13298,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13297,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2888:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13310,
                    "src": "2880:14:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13296,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13295,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2880:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2880:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2880:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2879:16:49"
              },
              "scope": 13417,
              "src": "2825:113:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13335,
                "nodeType": "Block",
                "src": "3087:47:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13333,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13323,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13321,
                        "src": "3093:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13331,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13325,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13314,
                                  "src": "3107:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 13326,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3109:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "3107:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 13327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3107:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13328,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13317,
                                  "src": "3120:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 13329,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3122:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "3120:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 13330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3120:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3107:23:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13324,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12677,
                          "src": "3102:4:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 13332,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3102:29:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "3093:38:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 13334,
                    "nodeType": "ExpressionStatement",
                    "src": "3093:38:49"
                  }
                ]
              },
              "documentation": {
                "id": 13311,
                "nodeType": "StructuredDocumentation",
                "src": "2940:82:49",
                "text": "@notice Implements the checked subtraction operation (-) in the UD60x18 type."
              },
              "id": 13336,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "sub",
              "nameLocation": "3031:3:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13318,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13314,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3043:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13336,
                    "src": "3035:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13313,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13312,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3035:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3035:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3035:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13317,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "3054:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13336,
                    "src": "3046:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13316,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13315,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3046:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3046:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3046:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3034:22:49"
              },
              "returnParameters": {
                "id": 13322,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13321,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3079:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13336,
                    "src": "3071:14:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13320,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13319,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3071:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3071:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3071:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3070:16:49"
              },
              "scope": 13417,
              "src": "3022:112:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13362,
                "nodeType": "Block",
                "src": "3291:73:49",
                "statements": [
                  {
                    "id": 13361,
                    "nodeType": "UncheckedBlock",
                    "src": "3297:65:49",
                    "statements": [
                      {
                        "expression": {
                          "id": 13359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13349,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13347,
                            "src": "3317:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13357,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 13351,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13340,
                                      "src": "3331:1:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    },
                                    "id": 13352,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3333:6:49",
                                    "memberName": "unwrap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12660,
                                    "src": "3331:8:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (UD60x18) pure returns (uint256)"
                                    }
                                  },
                                  "id": 13353,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3331:10:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 13354,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13343,
                                      "src": "3344:1:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    },
                                    "id": 13355,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3346:6:49",
                                    "memberName": "unwrap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12660,
                                    "src": "3344:8:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (UD60x18) pure returns (uint256)"
                                    }
                                  },
                                  "id": 13356,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3344:10:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3331:23:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 13350,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12677,
                              "src": "3326:4:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                "typeString": "function (uint256) pure returns (UD60x18)"
                              }
                            },
                            "id": 13358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3326:29:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "src": "3317:38:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13360,
                        "nodeType": "ExpressionStatement",
                        "src": "3317:38:49"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 13337,
                "nodeType": "StructuredDocumentation",
                "src": "3136:81:49",
                "text": "@notice Implements the unchecked addition operation (+) in the UD60x18 type."
              },
              "id": 13363,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "uncheckedAdd",
              "nameLocation": "3226:12:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13344,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13340,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3247:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13363,
                    "src": "3239:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13339,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13338,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3239:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3239:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3239:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13343,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "3258:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13363,
                    "src": "3250:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13342,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13341,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3250:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3250:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3250:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3238:22:49"
              },
              "returnParameters": {
                "id": 13348,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13347,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3283:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13363,
                    "src": "3275:14:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13346,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13345,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3275:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3275:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3275:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3274:16:49"
              },
              "scope": 13417,
              "src": "3217:147:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13389,
                "nodeType": "Block",
                "src": "3524:73:49",
                "statements": [
                  {
                    "id": 13388,
                    "nodeType": "UncheckedBlock",
                    "src": "3530:65:49",
                    "statements": [
                      {
                        "expression": {
                          "id": 13386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13376,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13374,
                            "src": "3550:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13384,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 13378,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13367,
                                      "src": "3564:1:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    },
                                    "id": 13379,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3566:6:49",
                                    "memberName": "unwrap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12660,
                                    "src": "3564:8:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (UD60x18) pure returns (uint256)"
                                    }
                                  },
                                  "id": 13380,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3564:10:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 13381,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13370,
                                      "src": "3577:1:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    },
                                    "id": 13382,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3579:6:49",
                                    "memberName": "unwrap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12660,
                                    "src": "3577:8:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (UD60x18) pure returns (uint256)"
                                    }
                                  },
                                  "id": 13383,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3577:10:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3564:23:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 13377,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12677,
                              "src": "3559:4:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                "typeString": "function (uint256) pure returns (UD60x18)"
                              }
                            },
                            "id": 13385,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3559:29:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "src": "3550:38:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13387,
                        "nodeType": "ExpressionStatement",
                        "src": "3550:38:49"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 13364,
                "nodeType": "StructuredDocumentation",
                "src": "3366:84:49",
                "text": "@notice Implements the unchecked subtraction operation (-) in the UD60x18 type."
              },
              "id": 13390,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "uncheckedSub",
              "nameLocation": "3459:12:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13371,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13367,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3480:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13390,
                    "src": "3472:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13366,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13365,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3472:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3472:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3472:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13370,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "3491:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13390,
                    "src": "3483:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13369,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13368,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3483:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3483:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3483:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3471:22:49"
              },
              "returnParameters": {
                "id": 13375,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13374,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3516:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13390,
                    "src": "3508:14:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13373,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13372,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3508:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3508:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3508:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3507:16:49"
              },
              "scope": 13417,
              "src": "3450:147:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13415,
                "nodeType": "Block",
                "src": "3738:47:49",
                "statements": [
                  {
                    "expression": {
                      "id": 13413,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13403,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13401,
                        "src": "3744:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13405,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13394,
                                  "src": "3758:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 13406,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3760:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "3758:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 13407,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3758:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "^",
                            "rightExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13408,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13397,
                                  "src": "3771:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 13409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3773:6:49",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "3771:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 13410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3771:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3758:23:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13404,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12677,
                          "src": "3753:4:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 13412,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3753:29:49",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "3744:38:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 13414,
                    "nodeType": "ExpressionStatement",
                    "src": "3744:38:49"
                  }
                ]
              },
              "documentation": {
                "id": 13391,
                "nodeType": "StructuredDocumentation",
                "src": "3599:74:49",
                "text": "@notice Implements the XOR (^) bitwise operation in the UD60x18 type."
              },
              "id": 13416,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "xor",
              "nameLocation": "3682:3:49",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13398,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13394,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3694:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13416,
                    "src": "3686:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13393,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13392,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3686:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3686:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3686:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13397,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "3705:1:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13416,
                    "src": "3697:9:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13396,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13395,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3697:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3697:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3697:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3685:22:49"
              },
              "returnParameters": {
                "id": 13402,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13401,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3730:6:49",
                    "nodeType": "VariableDeclaration",
                    "scope": 13416,
                    "src": "3722:14:49",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13400,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13399,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3722:7:49"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3722:7:49"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3722:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3721:16:49"
              },
              "scope": 13417,
              "src": "3673:112:49",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            }
          ],
          "src": "32:3754:49"
        },
        "id": 49
      },
      "@prb/math/src/ud60x18/Math.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/ud60x18/Math.sol",
          "exportedSymbols": {
            "Common": [
              13419
            ],
            "Errors": [
              13420
            ],
            "UD60x18": [
              14179
            ],
            "UNIT": [
              12787
            ],
            "ZERO": [
              12806
            ],
            "avg": [
              13480
            ],
            "ceil": [
              13509
            ],
            "div": [
              13538
            ],
            "exp": [
              13583
            ],
            "exp2": [
              13629
            ],
            "floor": [
              13641
            ],
            "frac": [
              13653
            ],
            "gm": [
              13720
            ],
            "inv": [
              13742
            ],
            "ln": [
              13768
            ],
            "log10": [
              13819
            ],
            "log2": [
              13923
            ],
            "mul": [
              13951
            ],
            "pow": [
              14058
            ],
            "powu": [
              14130
            ],
            "sqrt": [
              14172
            ],
            "uEXP2_MAX_INPUT": [
              12706
            ],
            "uEXP_MAX_INPUT": [
              12693
            ],
            "uHALF_UNIT": [
              12717
            ],
            "uLOG2_10": [
              12728
            ],
            "uLOG2_E": [
              12739
            ],
            "uMAX_UD60x18": [
              12750
            ],
            "uMAX_WHOLE_UD60x18": [
              12761
            ],
            "uUNIT": [
              12780
            ],
            "uUNIT_SQUARED": [
              12791
            ],
            "wrap": [
              12677
            ]
          },
          "id": 14173,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13418,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:50"
            },
            {
              "absolutePath": "@prb/math/src/Common.sol",
              "file": "../Common.sol",
              "id": 13419,
              "nameLocation": "85:6:50",
              "nodeType": "ImportDirective",
              "scope": 14173,
              "sourceUnit": 8329,
              "src": "59:33:50",
              "symbolAliases": [],
              "unitAlias": "Common"
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Errors.sol",
              "file": "./Errors.sol",
              "id": 13420,
              "nameLocation": "118:6:50",
              "nodeType": "ImportDirective",
              "scope": 14173,
              "sourceUnit": 12956,
              "src": "93:32:50",
              "symbolAliases": [],
              "unitAlias": "Errors"
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Casting.sol",
              "file": "./Casting.sol",
              "id": 13422,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14173,
              "sourceUnit": 12678,
              "src": "126:37:50",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 13421,
                    "name": "wrap",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12677,
                    "src": "135:4:50",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Constants.sol",
              "file": "./Constants.sol",
              "id": 13434,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14173,
              "sourceUnit": 12807,
              "src": "164:209:50",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 13423,
                    "name": "uEXP_MAX_INPUT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12693,
                    "src": "177:14:50",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 13424,
                    "name": "uEXP2_MAX_INPUT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12706,
                    "src": "197:15:50",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 13425,
                    "name": "uHALF_UNIT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12717,
                    "src": "218:10:50",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 13426,
                    "name": "uLOG2_10",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12728,
                    "src": "234:8:50",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 13427,
                    "name": "uLOG2_E",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12739,
                    "src": "248:7:50",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 13428,
                    "name": "uMAX_UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12750,
                    "src": "261:12:50",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 13429,
                    "name": "uMAX_WHOLE_UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12761,
                    "src": "279:18:50",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 13430,
                    "name": "UNIT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12787,
                    "src": "303:4:50",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 13431,
                    "name": "uUNIT",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12780,
                    "src": "313:5:50",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 13432,
                    "name": "uUNIT_SQUARED",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12791,
                    "src": "324:13:50",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 13433,
                    "name": "ZERO",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12806,
                    "src": "343:4:50",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/ValueType.sol",
              "file": "./ValueType.sol",
              "id": 13436,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14173,
              "sourceUnit": 14250,
              "src": "374:42:50",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 13435,
                    "name": "UD60x18",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14179,
                    "src": "383:7:50",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "body": {
                "id": 13479,
                "nodeType": "Block",
                "src": "1459:154:50",
                "statements": [
                  {
                    "assignments": [
                      13450
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13450,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "1473:5:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 13479,
                        "src": "1465:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13449,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1465:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 13454,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 13451,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13440,
                          "src": "1481:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13452,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1483:6:50",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12660,
                        "src": "1481:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 13453,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1481:10:50",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1465:26:50"
                  },
                  {
                    "assignments": [
                      13456
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13456,
                        "mutability": "mutable",
                        "name": "yUint",
                        "nameLocation": "1505:5:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 13479,
                        "src": "1497:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13455,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1497:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 13460,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 13457,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13443,
                          "src": "1513:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13458,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1515:6:50",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12660,
                        "src": "1513:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 13459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1513:10:50",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1497:26:50"
                  },
                  {
                    "id": 13478,
                    "nodeType": "UncheckedBlock",
                    "src": "1529:82:50",
                    "statements": [
                      {
                        "expression": {
                          "id": 13476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13461,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13447,
                            "src": "1549:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13474,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 13465,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 13463,
                                        "name": "xUint",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13450,
                                        "src": "1564:5:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&",
                                      "rightExpression": {
                                        "id": 13464,
                                        "name": "yUint",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13456,
                                        "src": "1572:5:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1564:13:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 13466,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1563:15:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 13472,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 13469,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 13467,
                                              "name": "xUint",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13450,
                                              "src": "1583:5:50",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "^",
                                            "rightExpression": {
                                              "id": 13468,
                                              "name": "yUint",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13456,
                                              "src": "1591:5:50",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "1583:13:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 13470,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1582:15:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 13471,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1601:1:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "1582:20:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 13473,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1581:22:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1563:40:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 13462,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12677,
                              "src": "1558:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                "typeString": "function (uint256) pure returns (UD60x18)"
                              }
                            },
                            "id": 13475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1558:46:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "src": "1549:55:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13477,
                        "nodeType": "ExpressionStatement",
                        "src": "1549:55:50"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 13437,
                "nodeType": "StructuredDocumentation",
                "src": "624:770:50",
                "text": "@notice Calculates the arithmetic average of x and y using the following formula:\n $$\n avg(x, y) = (x & y) + ((xUint ^ yUint) / 2)\n $$\n In English, this is what this formula does:\n 1. AND x and y.\n 2. Calculate half of XOR x and y.\n 3. Add the two results together.\n This technique is known as SWAR, which stands for \"SIMD within a register\". You can read more about it here:\n https://devblogs.microsoft.com/oldnewthing/20220207-00/?p=106223\n @dev Notes:\n - The result is rounded toward zero.\n @param x The first operand as a UD60x18 number.\n @param y The second operand as a UD60x18 number.\n @return result The arithmetic average as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 13480,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "avg",
              "nameLocation": "1403:3:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13444,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13440,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "1415:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13480,
                    "src": "1407:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13439,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13438,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1407:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1407:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1407:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13443,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "1426:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13480,
                    "src": "1418:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13442,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13441,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1418:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1418:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1418:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1406:22:50"
              },
              "returnParameters": {
                "id": 13448,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13447,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "1451:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13480,
                    "src": "1443:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13446,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13445,
                        "name": "UD60x18",
                        "nameLocations": [
                          "1443:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "1443:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "1443:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1442:16:50"
              },
              "scope": 14173,
              "src": "1394:219:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13508,
                "nodeType": "Block",
                "src": "2185:452:50",
                "statements": [
                  {
                    "assignments": [
                      13491
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13491,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "2199:5:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 13508,
                        "src": "2191:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13490,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2191:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 13495,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 13492,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13484,
                          "src": "2207:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13493,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2209:6:50",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12660,
                        "src": "2207:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 13494,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2207:10:50",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2191:26:50"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13498,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 13496,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13491,
                        "src": "2227:5:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 13497,
                        "name": "uMAX_WHOLE_UD60x18",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12761,
                        "src": "2235:18:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2227:26:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 13506,
                    "nodeType": "IfStatement",
                    "src": "2223:95:50",
                    "trueBody": {
                      "id": 13505,
                      "nodeType": "Block",
                      "src": "2255:63:50",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 13502,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13484,
                                "src": "2309:1:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "expression": {
                                "id": 13499,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13420,
                                "src": "2272:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_12956",
                                  "typeString": "module \"@prb/math/src/ud60x18/Errors.sol\""
                                }
                              },
                              "id": 13501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2279:29:50",
                              "memberName": "PRBMath_UD60x18_Ceil_Overflow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12875,
                              "src": "2272:36:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_error_$",
                                "typeString": "function (UD60x18) pure returns (error)"
                              }
                            },
                            "id": 13503,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2272:39:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 13504,
                          "nodeType": "RevertStatement",
                          "src": "2265:46:50"
                        }
                      ]
                    }
                  },
                  {
                    "AST": {
                      "nativeSrc": "2349:286:50",
                      "nodeType": "YulBlock",
                      "src": "2349:286:50",
                      "statements": [
                        {
                          "nativeSrc": "2396:30:50",
                          "nodeType": "YulVariableDeclaration",
                          "src": "2396:30:50",
                          "value": {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "2417:1:50",
                                "nodeType": "YulIdentifier",
                                "src": "2417:1:50"
                              },
                              {
                                "name": "uUNIT",
                                "nativeSrc": "2420:5:50",
                                "nodeType": "YulIdentifier",
                                "src": "2420:5:50"
                              }
                            ],
                            "functionName": {
                              "name": "mod",
                              "nativeSrc": "2413:3:50",
                              "nodeType": "YulIdentifier",
                              "src": "2413:3:50"
                            },
                            "nativeSrc": "2413:13:50",
                            "nodeType": "YulFunctionCall",
                            "src": "2413:13:50"
                          },
                          "variables": [
                            {
                              "name": "remainder",
                              "nativeSrc": "2400:9:50",
                              "nodeType": "YulTypedName",
                              "src": "2400:9:50",
                              "type": ""
                            }
                          ]
                        },
                        {
                          "nativeSrc": "2481:34:50",
                          "nodeType": "YulVariableDeclaration",
                          "src": "2481:34:50",
                          "value": {
                            "arguments": [
                              {
                                "name": "uUNIT",
                                "nativeSrc": "2498:5:50",
                                "nodeType": "YulIdentifier",
                                "src": "2498:5:50"
                              },
                              {
                                "name": "remainder",
                                "nativeSrc": "2505:9:50",
                                "nodeType": "YulIdentifier",
                                "src": "2505:9:50"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "2494:3:50",
                              "nodeType": "YulIdentifier",
                              "src": "2494:3:50"
                            },
                            "nativeSrc": "2494:21:50",
                            "nodeType": "YulFunctionCall",
                            "src": "2494:21:50"
                          },
                          "variables": [
                            {
                              "name": "delta",
                              "nativeSrc": "2485:5:50",
                              "nodeType": "YulTypedName",
                              "src": "2485:5:50",
                              "type": ""
                            }
                          ]
                        },
                        {
                          "nativeSrc": "2583:46:50",
                          "nodeType": "YulAssignment",
                          "src": "2583:46:50",
                          "value": {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "2597:1:50",
                                "nodeType": "YulIdentifier",
                                "src": "2597:1:50"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "delta",
                                    "nativeSrc": "2604:5:50",
                                    "nodeType": "YulIdentifier",
                                    "src": "2604:5:50"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "remainder",
                                        "nativeSrc": "2614:9:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "2614:9:50"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "2625:1:50",
                                        "nodeType": "YulLiteral",
                                        "src": "2625:1:50",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nativeSrc": "2611:2:50",
                                      "nodeType": "YulIdentifier",
                                      "src": "2611:2:50"
                                    },
                                    "nativeSrc": "2611:16:50",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2611:16:50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nativeSrc": "2600:3:50",
                                  "nodeType": "YulIdentifier",
                                  "src": "2600:3:50"
                                },
                                "nativeSrc": "2600:28:50",
                                "nodeType": "YulFunctionCall",
                                "src": "2600:28:50"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "2593:3:50",
                              "nodeType": "YulIdentifier",
                              "src": "2593:3:50"
                            },
                            "nativeSrc": "2593:36:50",
                            "nodeType": "YulFunctionCall",
                            "src": "2593:36:50"
                          },
                          "variableNames": [
                            {
                              "name": "result",
                              "nativeSrc": "2583:6:50",
                              "nodeType": "YulIdentifier",
                              "src": "2583:6:50"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 13488,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2583:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2420:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2498:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13484,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2417:1:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13484,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2597:1:50",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 13507,
                    "nodeType": "InlineAssembly",
                    "src": "2324:311:50"
                  }
                ]
              },
              "documentation": {
                "id": 13481,
                "nodeType": "StructuredDocumentation",
                "src": "1615:515:50",
                "text": "@notice Yields the smallest whole number greater than or equal to x.\n @dev This is optimized for fractional value inputs, because for every whole value there are (1e18 - 1) fractional\n counterparts. See https://en.wikipedia.org/wiki/Floor_and_ceiling_functions.\n Requirements:\n - x ≤ MAX_WHOLE_UD60x18\n @param x The UD60x18 number to ceil.\n @return result The smallest whole number greater than or equal to x, as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 13509,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "ceil",
              "nameLocation": "2139:4:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13485,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13484,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "2152:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13509,
                    "src": "2144:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13483,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13482,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2144:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2144:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2144:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2143:11:50"
              },
              "returnParameters": {
                "id": 13489,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13488,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "2177:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13509,
                    "src": "2169:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13487,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13486,
                        "name": "UD60x18",
                        "nameLocations": [
                          "2169:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "2169:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "2169:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "2168:16:50"
              },
              "scope": 14173,
              "src": "2130:507:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13537,
                "nodeType": "Block",
                "src": "3201:68:50",
                "statements": [
                  {
                    "expression": {
                      "id": 13535,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13522,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13520,
                        "src": "3207:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 13526,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13513,
                                    "src": "3235:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  "id": 13527,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3237:6:50",
                                  "memberName": "unwrap",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12660,
                                  "src": "3235:8:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                    "typeString": "function (UD60x18) pure returns (uint256)"
                                  }
                                },
                                "id": 13528,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3235:10:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 13529,
                                "name": "uUNIT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12780,
                                "src": "3247:5:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 13530,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13516,
                                    "src": "3254:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  "id": 13531,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3256:6:50",
                                  "memberName": "unwrap",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12660,
                                  "src": "3254:8:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                    "typeString": "function (UD60x18) pure returns (uint256)"
                                  }
                                },
                                "id": 13532,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3254:10:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 13524,
                                "name": "Common",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13419,
                                "src": "3221:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_8329",
                                  "typeString": "module \"@prb/math/src/Common.sol\""
                                }
                              },
                              "id": 13525,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3228:6:50",
                              "memberName": "mulDiv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7910,
                              "src": "3221:13:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 13533,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3221:44:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13523,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12677,
                          "src": "3216:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 13534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3216:50:50",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "3207:59:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 13536,
                    "nodeType": "ExpressionStatement",
                    "src": "3207:59:50"
                  }
                ]
              },
              "documentation": {
                "id": 13510,
                "nodeType": "StructuredDocumentation",
                "src": "2639:497:50",
                "text": "@notice Divides two UD60x18 numbers, returning a new UD60x18 number.\n @dev Uses {Common.mulDiv} to enable overflow-safe multiplication and division.\n Notes:\n - Refer to the notes in {Common.mulDiv}.\n Requirements:\n - Refer to the requirements in {Common.mulDiv}.\n @param x The numerator as a UD60x18 number.\n @param y The denominator as a UD60x18 number.\n @return result The quotient as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 13538,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "div",
              "nameLocation": "3145:3:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13517,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13513,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3157:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13538,
                    "src": "3149:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13512,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13511,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3149:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3149:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3149:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13516,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "3168:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13538,
                    "src": "3160:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13515,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13514,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3160:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3160:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3160:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3148:22:50"
              },
              "returnParameters": {
                "id": 13521,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13520,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3193:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13538,
                    "src": "3185:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13519,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13518,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3185:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3185:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3185:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3184:16:50"
              },
              "scope": 14173,
              "src": "3136:133:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13582,
                "nodeType": "Block",
                "src": "3660:411:50",
                "statements": [
                  {
                    "assignments": [
                      13549
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13549,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "3674:5:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 13582,
                        "src": "3666:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13548,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3666:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 13553,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 13550,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13542,
                          "src": "3682:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13551,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "3684:6:50",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12660,
                        "src": "3682:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 13552,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3682:10:50",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3666:26:50"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13556,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 13554,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13549,
                        "src": "3786:5:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 13555,
                        "name": "uEXP_MAX_INPUT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12693,
                        "src": "3794:14:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3786:22:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 13564,
                    "nodeType": "IfStatement",
                    "src": "3782:93:50",
                    "trueBody": {
                      "id": 13563,
                      "nodeType": "Block",
                      "src": "3810:65:50",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 13560,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13542,
                                "src": "3866:1:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "expression": {
                                "id": 13557,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13420,
                                "src": "3827:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_12956",
                                  "typeString": "module \"@prb/math/src/ud60x18/Errors.sol\""
                                }
                              },
                              "id": 13559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3834:31:50",
                              "memberName": "PRBMath_UD60x18_Exp_InputTooBig",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12886,
                              "src": "3827:38:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_error_$",
                                "typeString": "function (UD60x18) pure returns (error)"
                              }
                            },
                            "id": 13561,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3827:41:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 13562,
                          "nodeType": "RevertStatement",
                          "src": "3820:48:50"
                        }
                      ]
                    }
                  },
                  {
                    "id": 13581,
                    "nodeType": "UncheckedBlock",
                    "src": "3881:188:50",
                    "statements": [
                      {
                        "assignments": [
                          13566
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13566,
                            "mutability": "mutable",
                            "name": "doubleUnitProduct",
                            "nameLocation": "3971:17:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 13581,
                            "src": "3963:25:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13565,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3963:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13570,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13567,
                            "name": "xUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13549,
                            "src": "3991:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 13568,
                            "name": "uLOG2_E",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12739,
                            "src": "3999:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3991:15:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3963:43:50"
                      },
                      {
                        "expression": {
                          "id": 13579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13571,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13546,
                            "src": "4016:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 13576,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 13574,
                                      "name": "doubleUnitProduct",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13566,
                                      "src": "4035:17:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 13575,
                                      "name": "uUNIT",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12780,
                                      "src": "4055:5:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4035:25:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 13573,
                                  "name": "wrap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12677,
                                  "src": "4030:4:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                    "typeString": "function (uint256) pure returns (UD60x18)"
                                  }
                                },
                                "id": 13577,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4030:31:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "id": 13572,
                              "name": "exp2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13629,
                              "src": "4025:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                "typeString": "function (UD60x18) pure returns (UD60x18)"
                              }
                            },
                            "id": 13578,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4025:37:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "src": "4016:46:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13580,
                        "nodeType": "ExpressionStatement",
                        "src": "4016:46:50"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 13539,
                "nodeType": "StructuredDocumentation",
                "src": "3271:335:50",
                "text": "@notice Calculates the natural exponent of x using the following formula:\n $$\n e^x = 2^{x * log_2{e}}\n $$\n @dev Requirements:\n - x ≤ 133_084258667509499440\n @param x The exponent as a UD60x18 number.\n @return result The result as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 13583,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "exp",
              "nameLocation": "3615:3:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13543,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13542,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "3627:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13583,
                    "src": "3619:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13541,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13540,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3619:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3619:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3619:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3618:11:50"
              },
              "returnParameters": {
                "id": 13547,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13546,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "3652:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13583,
                    "src": "3644:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13545,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13544,
                        "name": "UD60x18",
                        "nameLocations": [
                          "3644:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "3644:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "3644:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "3643:16:50"
              },
              "scope": 14173,
              "src": "3606:465:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13628,
                "nodeType": "Block",
                "src": "4503:470:50",
                "statements": [
                  {
                    "assignments": [
                      13594
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13594,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "4517:5:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 13628,
                        "src": "4509:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13593,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4509:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 13598,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 13595,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13587,
                          "src": "4525:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13596,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4527:6:50",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12660,
                        "src": "4525:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 13597,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4525:10:50",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4509:26:50"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13601,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 13599,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13594,
                        "src": "4629:5:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 13600,
                        "name": "uEXP2_MAX_INPUT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12706,
                        "src": "4637:15:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4629:23:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 13609,
                    "nodeType": "IfStatement",
                    "src": "4625:95:50",
                    "trueBody": {
                      "id": 13608,
                      "nodeType": "Block",
                      "src": "4654:66:50",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 13605,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13587,
                                "src": "4711:1:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "expression": {
                                "id": 13602,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13420,
                                "src": "4671:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_12956",
                                  "typeString": "module \"@prb/math/src/ud60x18/Errors.sol\""
                                }
                              },
                              "id": 13604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4678:32:50",
                              "memberName": "PRBMath_UD60x18_Exp2_InputTooBig",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12892,
                              "src": "4671:39:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_error_$",
                                "typeString": "function (UD60x18) pure returns (error)"
                              }
                            },
                            "id": 13606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4671:42:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 13607,
                          "nodeType": "RevertStatement",
                          "src": "4664:49:50"
                        }
                      ]
                    }
                  },
                  {
                    "assignments": [
                      13611
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13611,
                        "mutability": "mutable",
                        "name": "x_192x64",
                        "nameLocation": "4789:8:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 13628,
                        "src": "4781:16:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13610,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4781:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 13618,
                    "initialValue": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13617,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 13612,
                              "name": "xUint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13594,
                              "src": "4801:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "3634",
                              "id": 13613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4810:2:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_64_by_1",
                                "typeString": "int_const 64"
                              },
                              "value": "64"
                            },
                            "src": "4801:11:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 13615,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4800:13:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "id": 13616,
                        "name": "uUNIT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12780,
                        "src": "4816:5:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4800:21:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4781:40:50"
                  },
                  {
                    "expression": {
                      "id": 13626,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13619,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13591,
                        "src": "4934:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 13623,
                                "name": "x_192x64",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13611,
                                "src": "4960:8:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 13621,
                                "name": "Common",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13419,
                                "src": "4948:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_8329",
                                  "typeString": "module \"@prb/math/src/Common.sol\""
                                }
                              },
                              "id": 13622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4955:4:50",
                              "memberName": "exp2",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7764,
                              "src": "4948:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256)"
                              }
                            },
                            "id": 13624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4948:21:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13620,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12677,
                          "src": "4943:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 13625,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4943:27:50",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "4934:36:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 13627,
                    "nodeType": "ExpressionStatement",
                    "src": "4934:36:50"
                  }
                ]
              },
              "documentation": {
                "id": 13584,
                "nodeType": "StructuredDocumentation",
                "src": "4073:375:50",
                "text": "@notice Calculates the binary exponent of x using the binary fraction method.\n @dev See https://ethereum.stackexchange.com/q/79903/24693\n Requirements:\n - x < 192e18\n - The result must fit in UD60x18.\n @param x The exponent as a UD60x18 number.\n @return result The result as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 13629,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "exp2",
              "nameLocation": "4457:4:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13588,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13587,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "4470:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13629,
                    "src": "4462:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13586,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13585,
                        "name": "UD60x18",
                        "nameLocations": [
                          "4462:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "4462:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "4462:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4461:11:50"
              },
              "returnParameters": {
                "id": 13592,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13591,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "4495:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13629,
                    "src": "4487:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13590,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13589,
                        "name": "UD60x18",
                        "nameLocations": [
                          "4487:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "4487:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "4487:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "4486:16:50"
              },
              "scope": 14173,
              "src": "4448:525:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13640,
                "nodeType": "Block",
                "src": "5463:239:50",
                "statements": [
                  {
                    "AST": {
                      "nativeSrc": "5494:206:50",
                      "nodeType": "YulBlock",
                      "src": "5494:206:50",
                      "statements": [
                        {
                          "nativeSrc": "5541:30:50",
                          "nodeType": "YulVariableDeclaration",
                          "src": "5541:30:50",
                          "value": {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "5562:1:50",
                                "nodeType": "YulIdentifier",
                                "src": "5562:1:50"
                              },
                              {
                                "name": "uUNIT",
                                "nativeSrc": "5565:5:50",
                                "nodeType": "YulIdentifier",
                                "src": "5565:5:50"
                              }
                            ],
                            "functionName": {
                              "name": "mod",
                              "nativeSrc": "5558:3:50",
                              "nodeType": "YulIdentifier",
                              "src": "5558:3:50"
                            },
                            "nativeSrc": "5558:13:50",
                            "nodeType": "YulFunctionCall",
                            "src": "5558:13:50"
                          },
                          "variables": [
                            {
                              "name": "remainder",
                              "nativeSrc": "5545:9:50",
                              "nodeType": "YulTypedName",
                              "src": "5545:9:50",
                              "type": ""
                            }
                          ]
                        },
                        {
                          "nativeSrc": "5644:50:50",
                          "nodeType": "YulAssignment",
                          "src": "5644:50:50",
                          "value": {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "5658:1:50",
                                "nodeType": "YulIdentifier",
                                "src": "5658:1:50"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "remainder",
                                    "nativeSrc": "5665:9:50",
                                    "nodeType": "YulIdentifier",
                                    "src": "5665:9:50"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "remainder",
                                        "nativeSrc": "5679:9:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "5679:9:50"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "5690:1:50",
                                        "nodeType": "YulLiteral",
                                        "src": "5690:1:50",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nativeSrc": "5676:2:50",
                                      "nodeType": "YulIdentifier",
                                      "src": "5676:2:50"
                                    },
                                    "nativeSrc": "5676:16:50",
                                    "nodeType": "YulFunctionCall",
                                    "src": "5676:16:50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nativeSrc": "5661:3:50",
                                  "nodeType": "YulIdentifier",
                                  "src": "5661:3:50"
                                },
                                "nativeSrc": "5661:32:50",
                                "nodeType": "YulFunctionCall",
                                "src": "5661:32:50"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "5654:3:50",
                              "nodeType": "YulIdentifier",
                              "src": "5654:3:50"
                            },
                            "nativeSrc": "5654:40:50",
                            "nodeType": "YulFunctionCall",
                            "src": "5654:40:50"
                          },
                          "variableNames": [
                            {
                              "name": "result",
                              "nativeSrc": "5644:6:50",
                              "nodeType": "YulIdentifier",
                              "src": "5644:6:50"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 13637,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "5644:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "5565:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13633,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "5562:1:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13633,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "5658:1:50",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 13639,
                    "nodeType": "InlineAssembly",
                    "src": "5469:231:50"
                  }
                ]
              },
              "documentation": {
                "id": 13630,
                "nodeType": "StructuredDocumentation",
                "src": "4975:432:50",
                "text": "@notice Yields the greatest whole number less than or equal to x.\n @dev Optimized for fractional value inputs, because every whole value has (1e18 - 1) fractional counterparts.\n See https://en.wikipedia.org/wiki/Floor_and_ceiling_functions.\n @param x The UD60x18 number to floor.\n @return result The greatest whole number less than or equal to x, as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 13641,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "floor",
              "nameLocation": "5416:5:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13634,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13633,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "5430:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13641,
                    "src": "5422:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13632,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13631,
                        "name": "UD60x18",
                        "nameLocations": [
                          "5422:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "5422:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "5422:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "5421:11:50"
              },
              "returnParameters": {
                "id": 13638,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13637,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "5455:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13641,
                    "src": "5447:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13636,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13635,
                        "name": "UD60x18",
                        "nameLocations": [
                          "5447:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "5447:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "5447:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "5446:16:50"
              },
              "scope": 14173,
              "src": "5407:295:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13652,
                "nodeType": "Block",
                "src": "6082:72:50",
                "statements": [
                  {
                    "AST": {
                      "nativeSrc": "6113:39:50",
                      "nodeType": "YulBlock",
                      "src": "6113:39:50",
                      "statements": [
                        {
                          "nativeSrc": "6123:23:50",
                          "nodeType": "YulAssignment",
                          "src": "6123:23:50",
                          "value": {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "6137:1:50",
                                "nodeType": "YulIdentifier",
                                "src": "6137:1:50"
                              },
                              {
                                "name": "uUNIT",
                                "nativeSrc": "6140:5:50",
                                "nodeType": "YulIdentifier",
                                "src": "6140:5:50"
                              }
                            ],
                            "functionName": {
                              "name": "mod",
                              "nativeSrc": "6133:3:50",
                              "nodeType": "YulIdentifier",
                              "src": "6133:3:50"
                            },
                            "nativeSrc": "6133:13:50",
                            "nodeType": "YulFunctionCall",
                            "src": "6133:13:50"
                          },
                          "variableNames": [
                            {
                              "name": "result",
                              "nativeSrc": "6123:6:50",
                              "nodeType": "YulIdentifier",
                              "src": "6123:6:50"
                            }
                          ]
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 13649,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "6123:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "6140:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13645,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "6137:1:50",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 13651,
                    "nodeType": "InlineAssembly",
                    "src": "6088:64:50"
                  }
                ]
              },
              "documentation": {
                "id": 13642,
                "nodeType": "StructuredDocumentation",
                "src": "5704:323:50",
                "text": "@notice Yields the excess beyond the floor of x using the odd function definition.\n @dev See https://en.wikipedia.org/wiki/Fractional_part.\n @param x The UD60x18 number to get the fractional part of.\n @return result The fractional part of x as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 13653,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "frac",
              "nameLocation": "6036:4:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13646,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13645,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "6049:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13653,
                    "src": "6041:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13644,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13643,
                        "name": "UD60x18",
                        "nameLocations": [
                          "6041:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "6041:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "6041:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "6040:11:50"
              },
              "returnParameters": {
                "id": 13650,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13649,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "6074:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13653,
                    "src": "6066:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13648,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13647,
                        "name": "UD60x18",
                        "nameLocations": [
                          "6066:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "6066:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "6066:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "6065:16:50"
              },
              "scope": 14173,
              "src": "6027:127:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13719,
                "nodeType": "Block",
                "src": "6578:614:50",
                "statements": [
                  {
                    "assignments": [
                      13667
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13667,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "6592:5:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 13719,
                        "src": "6584:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13666,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6584:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 13671,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 13668,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13657,
                          "src": "6600:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13669,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "6602:6:50",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12660,
                        "src": "6600:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 13670,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6600:10:50",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6584:26:50"
                  },
                  {
                    "assignments": [
                      13673
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13673,
                        "mutability": "mutable",
                        "name": "yUint",
                        "nameLocation": "6624:5:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 13719,
                        "src": "6616:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13672,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6616:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 13677,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 13674,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13660,
                          "src": "6632:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13675,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "6634:6:50",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12660,
                        "src": "6632:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 13676,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6632:10:50",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6616:26:50"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 13684,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13680,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 13678,
                          "name": "xUint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13667,
                          "src": "6652:5:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 13679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6661:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "6652:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13683,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 13681,
                          "name": "yUint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13673,
                          "src": "6666:5:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 13682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6675:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "6666:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "6652:24:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 13688,
                    "nodeType": "IfStatement",
                    "src": "6648:58:50",
                    "trueBody": {
                      "id": 13687,
                      "nodeType": "Block",
                      "src": "6678:28:50",
                      "statements": [
                        {
                          "expression": {
                            "id": 13685,
                            "name": "ZERO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12806,
                            "src": "6695:4:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "functionReturnParameters": 13665,
                          "id": 13686,
                          "nodeType": "Return",
                          "src": "6688:11:50"
                        }
                      ]
                    }
                  },
                  {
                    "id": 13718,
                    "nodeType": "UncheckedBlock",
                    "src": "6712:478:50",
                    "statements": [
                      {
                        "assignments": [
                          13690
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13690,
                            "mutability": "mutable",
                            "name": "xyUint",
                            "nameLocation": "6821:6:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 13718,
                            "src": "6813:14:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13689,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6813:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13694,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13691,
                            "name": "xUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13667,
                            "src": "6830:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 13692,
                            "name": "yUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13673,
                            "src": "6838:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6830:13:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6813:30:50"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13697,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 13695,
                              "name": "xyUint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13690,
                              "src": "6857:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 13696,
                              "name": "xUint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13667,
                              "src": "6866:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6857:14:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 13698,
                            "name": "yUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13673,
                            "src": "6875:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6857:23:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13708,
                        "nodeType": "IfStatement",
                        "src": "6853:101:50",
                        "trueBody": {
                          "id": 13707,
                          "nodeType": "Block",
                          "src": "6882:72:50",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 13703,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13657,
                                    "src": "6938:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  {
                                    "id": 13704,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13660,
                                    "src": "6941:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    },
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  ],
                                  "expression": {
                                    "id": 13700,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13420,
                                    "src": "6903:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_module_12956",
                                      "typeString": "module \"@prb/math/src/ud60x18/Errors.sol\""
                                    }
                                  },
                                  "id": 13702,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "6910:27:50",
                                  "memberName": "PRBMath_UD60x18_Gm_Overflow",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12901,
                                  "src": "6903:34:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_error_$",
                                    "typeString": "function (UD60x18,UD60x18) pure returns (error)"
                                  }
                                },
                                "id": 13705,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6903:40:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 13706,
                              "nodeType": "RevertStatement",
                              "src": "6896:47:50"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 13716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13709,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13664,
                            "src": "7149:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 13713,
                                    "name": "xyUint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13690,
                                    "src": "7175:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 13711,
                                    "name": "Common",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13419,
                                    "src": "7163:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_module_8329",
                                      "typeString": "module \"@prb/math/src/Common.sol\""
                                    }
                                  },
                                  "id": 13712,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "7170:4:50",
                                  "memberName": "sqrt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8328,
                                  "src": "7163:11:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 13714,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7163:19:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 13710,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12677,
                              "src": "7158:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                "typeString": "function (uint256) pure returns (UD60x18)"
                              }
                            },
                            "id": 13715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7158:25:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "src": "7149:34:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13717,
                        "nodeType": "ExpressionStatement",
                        "src": "7149:34:50"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 13654,
                "nodeType": "StructuredDocumentation",
                "src": "6156:358:50",
                "text": "@notice Calculates the geometric mean of x and y, i.e. $\\sqrt{x * y}$, rounding down.\n @dev Requirements:\n - x * y must fit in UD60x18.\n @param x The first operand as a UD60x18 number.\n @param y The second operand as a UD60x18 number.\n @return result The result as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 13720,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "gm",
              "nameLocation": "6523:2:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13661,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13657,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "6534:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13720,
                    "src": "6526:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13656,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13655,
                        "name": "UD60x18",
                        "nameLocations": [
                          "6526:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "6526:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "6526:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13660,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "6545:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13720,
                    "src": "6537:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13659,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13658,
                        "name": "UD60x18",
                        "nameLocations": [
                          "6537:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "6537:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "6537:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "6525:22:50"
              },
              "returnParameters": {
                "id": 13665,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13664,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "6570:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13720,
                    "src": "6562:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13663,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13662,
                        "name": "UD60x18",
                        "nameLocations": [
                          "6562:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "6562:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "6562:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "6561:16:50"
              },
              "scope": 14173,
              "src": "6514:678:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13741,
                "nodeType": "Block",
                "src": "7570:76:50",
                "statements": [
                  {
                    "id": 13740,
                    "nodeType": "UncheckedBlock",
                    "src": "7576:68:50",
                    "statements": [
                      {
                        "expression": {
                          "id": 13738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13730,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13728,
                            "src": "7596:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13736,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 13732,
                                  "name": "uUNIT_SQUARED",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12791,
                                  "src": "7610:13:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 13733,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13724,
                                      "src": "7626:1:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    },
                                    "id": 13734,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "7628:6:50",
                                    "memberName": "unwrap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12660,
                                    "src": "7626:8:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (UD60x18) pure returns (uint256)"
                                    }
                                  },
                                  "id": 13735,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7626:10:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7610:26:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 13731,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12677,
                              "src": "7605:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                "typeString": "function (uint256) pure returns (UD60x18)"
                              }
                            },
                            "id": 13737,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7605:32:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "src": "7596:41:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13739,
                        "nodeType": "ExpressionStatement",
                        "src": "7596:41:50"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 13721,
                "nodeType": "StructuredDocumentation",
                "src": "7194:322:50",
                "text": "@notice Calculates the inverse of x.\n @dev Notes:\n - The result is rounded toward zero.\n Requirements:\n - x must not be zero.\n @param x The UD60x18 number for which to calculate the inverse.\n @return result The inverse as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 13742,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "inv",
              "nameLocation": "7525:3:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13725,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13724,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "7537:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13742,
                    "src": "7529:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13723,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13722,
                        "name": "UD60x18",
                        "nameLocations": [
                          "7529:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "7529:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "7529:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "7528:11:50"
              },
              "returnParameters": {
                "id": 13729,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13728,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "7562:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13742,
                    "src": "7554:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13727,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13726,
                        "name": "UD60x18",
                        "nameLocations": [
                          "7554:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "7554:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "7554:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "7553:16:50"
              },
              "scope": 14173,
              "src": "7516:130:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13767,
                "nodeType": "Block",
                "src": "8243:256:50",
                "statements": [
                  {
                    "id": 13766,
                    "nodeType": "UncheckedBlock",
                    "src": "8249:248:50",
                    "statements": [
                      {
                        "expression": {
                          "id": 13764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13752,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13750,
                            "src": "8441:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13760,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 13755,
                                            "name": "x",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13746,
                                            "src": "8460:1:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                              "typeString": "UD60x18"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                              "typeString": "UD60x18"
                                            }
                                          ],
                                          "id": 13754,
                                          "name": "log2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13923,
                                          "src": "8455:4:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                            "typeString": "function (UD60x18) pure returns (UD60x18)"
                                          }
                                        },
                                        "id": 13756,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8455:7:50",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                          "typeString": "UD60x18"
                                        }
                                      },
                                      "id": 13757,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "8463:6:50",
                                      "memberName": "unwrap",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12660,
                                      "src": "8455:14:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (UD60x18) pure returns (uint256)"
                                      }
                                    },
                                    "id": 13758,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8455:16:50",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 13759,
                                    "name": "uUNIT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12780,
                                    "src": "8474:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8455:24:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 13761,
                                  "name": "uLOG2_E",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12739,
                                  "src": "8482:7:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8455:34:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 13753,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12677,
                              "src": "8450:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                "typeString": "function (uint256) pure returns (UD60x18)"
                              }
                            },
                            "id": 13763,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8450:40:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "src": "8441:49:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13765,
                        "nodeType": "ExpressionStatement",
                        "src": "8441:49:50"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 13743,
                "nodeType": "StructuredDocumentation",
                "src": "7648:542:50",
                "text": "@notice Calculates the natural logarithm of x using the following formula:\n $$\n ln{x} = log_2{x} / log_2{e}\n $$\n @dev Notes:\n - Refer to the notes in {log2}.\n - The precision isn't sufficiently fine-grained to return exactly `UNIT` when the input is `E`.\n Requirements:\n - Refer to the requirements in {log2}.\n @param x The UD60x18 number for which to calculate the natural logarithm.\n @return result The natural logarithm as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 13768,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "ln",
              "nameLocation": "8199:2:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13747,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13746,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "8210:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13768,
                    "src": "8202:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13745,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13744,
                        "name": "UD60x18",
                        "nameLocations": [
                          "8202:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "8202:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "8202:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "8201:11:50"
              },
              "returnParameters": {
                "id": 13751,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13750,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "8235:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13768,
                    "src": "8227:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13749,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13748,
                        "name": "UD60x18",
                        "nameLocations": [
                          "8227:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "8227:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "8227:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "8226:16:50"
              },
              "scope": 14173,
              "src": "8190:309:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13818,
                "nodeType": "Block",
                "src": "9083:7119:50",
                "statements": [
                  {
                    "assignments": [
                      13779
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13779,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "9097:5:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 13818,
                        "src": "9089:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13778,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9089:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 13783,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 13780,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13772,
                          "src": "9105:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13781,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "9107:6:50",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12660,
                        "src": "9105:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 13782,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9105:10:50",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9089:26:50"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13786,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 13784,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13779,
                        "src": "9125:5:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "id": 13785,
                        "name": "uUNIT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12780,
                        "src": "9133:5:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "9125:13:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 13794,
                    "nodeType": "IfStatement",
                    "src": "9121:86:50",
                    "trueBody": {
                      "id": 13793,
                      "nodeType": "Block",
                      "src": "9140:67:50",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 13790,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13772,
                                "src": "9198:1:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "expression": {
                                "id": 13787,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13420,
                                "src": "9157:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_12956",
                                  "typeString": "module \"@prb/math/src/ud60x18/Errors.sol\""
                                }
                              },
                              "id": 13789,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "9164:33:50",
                              "memberName": "PRBMath_UD60x18_Log_InputTooSmall",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12949,
                              "src": "9157:40:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_error_$",
                                "typeString": "function (UD60x18) pure returns (error)"
                              }
                            },
                            "id": 13791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9157:43:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 13792,
                          "nodeType": "RevertStatement",
                          "src": "9150:50:50"
                        }
                      ]
                    }
                  },
                  {
                    "AST": {
                      "nativeSrc": "9372:6624:50",
                      "nodeType": "YulBlock",
                      "src": "9372:6624:50",
                      "statements": [
                        {
                          "cases": [
                            {
                              "body": {
                                "nativeSrc": "9406:36:50",
                                "nodeType": "YulBlock",
                                "src": "9406:36:50",
                                "statements": [
                                  {
                                    "nativeSrc": "9408:32:50",
                                    "nodeType": "YulAssignment",
                                    "src": "9408:32:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "9422:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "9422:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9433:1:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9433:1:50",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9436:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9436:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "9429:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "9429:3:50"
                                          },
                                          "nativeSrc": "9429:10:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "9429:10:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "9418:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9418:3:50"
                                      },
                                      "nativeSrc": "9418:22:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "9418:22:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "9408:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9408:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "9399:43:50",
                              "nodeType": "YulCase",
                              "src": "9399:43:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "9404:1:50",
                                "nodeType": "YulLiteral",
                                "src": "9404:1:50",
                                "type": "",
                                "value": "1"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "9459:36:50",
                                "nodeType": "YulBlock",
                                "src": "9459:36:50",
                                "statements": [
                                  {
                                    "nativeSrc": "9461:32:50",
                                    "nodeType": "YulAssignment",
                                    "src": "9461:32:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "9475:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "9475:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9486:1:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9486:1:50",
                                              "type": "",
                                              "value": "1"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9489:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9489:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "9482:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "9482:3:50"
                                          },
                                          "nativeSrc": "9482:10:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "9482:10:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "9471:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9471:3:50"
                                      },
                                      "nativeSrc": "9471:22:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "9471:22:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "9461:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9461:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "9451:44:50",
                              "nodeType": "YulCase",
                              "src": "9451:44:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "9456:2:50",
                                "nodeType": "YulLiteral",
                                "src": "9456:2:50",
                                "type": "",
                                "value": "10"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "9513:36:50",
                                "nodeType": "YulBlock",
                                "src": "9513:36:50",
                                "statements": [
                                  {
                                    "nativeSrc": "9515:32:50",
                                    "nodeType": "YulAssignment",
                                    "src": "9515:32:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "9529:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "9529:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9540:1:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9540:1:50",
                                              "type": "",
                                              "value": "2"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9543:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9543:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "9536:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "9536:3:50"
                                          },
                                          "nativeSrc": "9536:10:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "9536:10:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "9525:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9525:3:50"
                                      },
                                      "nativeSrc": "9525:22:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "9525:22:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "9515:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9515:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "9504:45:50",
                              "nodeType": "YulCase",
                              "src": "9504:45:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "9509:3:50",
                                "nodeType": "YulLiteral",
                                "src": "9509:3:50",
                                "type": "",
                                "value": "100"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "9568:36:50",
                                "nodeType": "YulBlock",
                                "src": "9568:36:50",
                                "statements": [
                                  {
                                    "nativeSrc": "9570:32:50",
                                    "nodeType": "YulAssignment",
                                    "src": "9570:32:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "9584:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "9584:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9595:1:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9595:1:50",
                                              "type": "",
                                              "value": "3"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9598:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9598:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "9591:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "9591:3:50"
                                          },
                                          "nativeSrc": "9591:10:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "9591:10:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "9580:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9580:3:50"
                                      },
                                      "nativeSrc": "9580:22:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "9580:22:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "9570:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9570:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "9558:46:50",
                              "nodeType": "YulCase",
                              "src": "9558:46:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "9563:4:50",
                                "nodeType": "YulLiteral",
                                "src": "9563:4:50",
                                "type": "",
                                "value": "1000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "9624:36:50",
                                "nodeType": "YulBlock",
                                "src": "9624:36:50",
                                "statements": [
                                  {
                                    "nativeSrc": "9626:32:50",
                                    "nodeType": "YulAssignment",
                                    "src": "9626:32:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "9640:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "9640:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9651:1:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9651:1:50",
                                              "type": "",
                                              "value": "4"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9654:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9654:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "9647:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "9647:3:50"
                                          },
                                          "nativeSrc": "9647:10:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "9647:10:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "9636:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9636:3:50"
                                      },
                                      "nativeSrc": "9636:22:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "9636:22:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "9626:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9626:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "9613:47:50",
                              "nodeType": "YulCase",
                              "src": "9613:47:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "9618:5:50",
                                "nodeType": "YulLiteral",
                                "src": "9618:5:50",
                                "type": "",
                                "value": "10000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "9681:36:50",
                                "nodeType": "YulBlock",
                                "src": "9681:36:50",
                                "statements": [
                                  {
                                    "nativeSrc": "9683:32:50",
                                    "nodeType": "YulAssignment",
                                    "src": "9683:32:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "9697:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "9697:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9708:1:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9708:1:50",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9711:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9711:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "9704:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "9704:3:50"
                                          },
                                          "nativeSrc": "9704:10:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "9704:10:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "9693:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9693:3:50"
                                      },
                                      "nativeSrc": "9693:22:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "9693:22:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "9683:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9683:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "9669:48:50",
                              "nodeType": "YulCase",
                              "src": "9669:48:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "9674:6:50",
                                "nodeType": "YulLiteral",
                                "src": "9674:6:50",
                                "type": "",
                                "value": "100000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "9739:36:50",
                                "nodeType": "YulBlock",
                                "src": "9739:36:50",
                                "statements": [
                                  {
                                    "nativeSrc": "9741:32:50",
                                    "nodeType": "YulAssignment",
                                    "src": "9741:32:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "9755:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "9755:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9766:1:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9766:1:50",
                                              "type": "",
                                              "value": "6"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9769:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9769:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "9762:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "9762:3:50"
                                          },
                                          "nativeSrc": "9762:10:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "9762:10:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "9751:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9751:3:50"
                                      },
                                      "nativeSrc": "9751:22:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "9751:22:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "9741:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9741:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "9726:49:50",
                              "nodeType": "YulCase",
                              "src": "9726:49:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "9731:7:50",
                                "nodeType": "YulLiteral",
                                "src": "9731:7:50",
                                "type": "",
                                "value": "1000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "9798:36:50",
                                "nodeType": "YulBlock",
                                "src": "9798:36:50",
                                "statements": [
                                  {
                                    "nativeSrc": "9800:32:50",
                                    "nodeType": "YulAssignment",
                                    "src": "9800:32:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "9814:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "9814:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9825:1:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9825:1:50",
                                              "type": "",
                                              "value": "7"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9828:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9828:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "9821:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "9821:3:50"
                                          },
                                          "nativeSrc": "9821:10:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "9821:10:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "9810:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9810:3:50"
                                      },
                                      "nativeSrc": "9810:22:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "9810:22:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "9800:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9800:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "9784:50:50",
                              "nodeType": "YulCase",
                              "src": "9784:50:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "9789:8:50",
                                "nodeType": "YulLiteral",
                                "src": "9789:8:50",
                                "type": "",
                                "value": "10000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "9858:36:50",
                                "nodeType": "YulBlock",
                                "src": "9858:36:50",
                                "statements": [
                                  {
                                    "nativeSrc": "9860:32:50",
                                    "nodeType": "YulAssignment",
                                    "src": "9860:32:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "9874:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "9874:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9885:1:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9885:1:50",
                                              "type": "",
                                              "value": "8"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9888:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9888:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "9881:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "9881:3:50"
                                          },
                                          "nativeSrc": "9881:10:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "9881:10:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "9870:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9870:3:50"
                                      },
                                      "nativeSrc": "9870:22:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "9870:22:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "9860:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9860:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "9843:51:50",
                              "nodeType": "YulCase",
                              "src": "9843:51:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "9848:9:50",
                                "nodeType": "YulLiteral",
                                "src": "9848:9:50",
                                "type": "",
                                "value": "100000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "9919:36:50",
                                "nodeType": "YulBlock",
                                "src": "9919:36:50",
                                "statements": [
                                  {
                                    "nativeSrc": "9921:32:50",
                                    "nodeType": "YulAssignment",
                                    "src": "9921:32:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "9935:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "9935:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9946:1:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9946:1:50",
                                              "type": "",
                                              "value": "9"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9949:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "9949:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "9942:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "9942:3:50"
                                          },
                                          "nativeSrc": "9942:10:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "9942:10:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "9931:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9931:3:50"
                                      },
                                      "nativeSrc": "9931:22:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "9931:22:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "9921:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9921:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "9903:52:50",
                              "nodeType": "YulCase",
                              "src": "9903:52:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "9908:10:50",
                                "nodeType": "YulLiteral",
                                "src": "9908:10:50",
                                "type": "",
                                "value": "1000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "9981:37:50",
                                "nodeType": "YulBlock",
                                "src": "9981:37:50",
                                "statements": [
                                  {
                                    "nativeSrc": "9983:33:50",
                                    "nodeType": "YulAssignment",
                                    "src": "9983:33:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "9997:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "9997:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10008:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10008:2:50",
                                              "type": "",
                                              "value": "10"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10012:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10012:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "10004:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "10004:3:50"
                                          },
                                          "nativeSrc": "10004:11:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "10004:11:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "9993:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9993:3:50"
                                      },
                                      "nativeSrc": "9993:23:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "9993:23:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "9983:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "9983:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "9964:54:50",
                              "nodeType": "YulCase",
                              "src": "9964:54:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "9969:11:50",
                                "nodeType": "YulLiteral",
                                "src": "9969:11:50",
                                "type": "",
                                "value": "10000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "10045:37:50",
                                "nodeType": "YulBlock",
                                "src": "10045:37:50",
                                "statements": [
                                  {
                                    "nativeSrc": "10047:33:50",
                                    "nodeType": "YulAssignment",
                                    "src": "10047:33:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "10061:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "10061:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10072:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10072:2:50",
                                              "type": "",
                                              "value": "11"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10076:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10076:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "10068:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "10068:3:50"
                                          },
                                          "nativeSrc": "10068:11:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "10068:11:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "10057:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10057:3:50"
                                      },
                                      "nativeSrc": "10057:23:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "10057:23:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "10047:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10047:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10027:55:50",
                              "nodeType": "YulCase",
                              "src": "10027:55:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10032:12:50",
                                "nodeType": "YulLiteral",
                                "src": "10032:12:50",
                                "type": "",
                                "value": "100000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "10110:37:50",
                                "nodeType": "YulBlock",
                                "src": "10110:37:50",
                                "statements": [
                                  {
                                    "nativeSrc": "10112:33:50",
                                    "nodeType": "YulAssignment",
                                    "src": "10112:33:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "10126:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "10126:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10137:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10137:2:50",
                                              "type": "",
                                              "value": "12"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10141:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10141:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "10133:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "10133:3:50"
                                          },
                                          "nativeSrc": "10133:11:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "10133:11:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "10122:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10122:3:50"
                                      },
                                      "nativeSrc": "10122:23:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "10122:23:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "10112:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10112:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10091:56:50",
                              "nodeType": "YulCase",
                              "src": "10091:56:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10096:13:50",
                                "nodeType": "YulLiteral",
                                "src": "10096:13:50",
                                "type": "",
                                "value": "1000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "10176:37:50",
                                "nodeType": "YulBlock",
                                "src": "10176:37:50",
                                "statements": [
                                  {
                                    "nativeSrc": "10178:33:50",
                                    "nodeType": "YulAssignment",
                                    "src": "10178:33:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "10192:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "10192:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10203:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10203:2:50",
                                              "type": "",
                                              "value": "13"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10207:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10207:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "10199:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "10199:3:50"
                                          },
                                          "nativeSrc": "10199:11:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "10199:11:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "10188:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10188:3:50"
                                      },
                                      "nativeSrc": "10188:23:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "10188:23:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "10178:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10178:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10156:57:50",
                              "nodeType": "YulCase",
                              "src": "10156:57:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10161:14:50",
                                "nodeType": "YulLiteral",
                                "src": "10161:14:50",
                                "type": "",
                                "value": "10000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "10243:37:50",
                                "nodeType": "YulBlock",
                                "src": "10243:37:50",
                                "statements": [
                                  {
                                    "nativeSrc": "10245:33:50",
                                    "nodeType": "YulAssignment",
                                    "src": "10245:33:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "10259:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "10259:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10270:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10270:2:50",
                                              "type": "",
                                              "value": "14"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10274:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10274:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "10266:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "10266:3:50"
                                          },
                                          "nativeSrc": "10266:11:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "10266:11:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "10255:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10255:3:50"
                                      },
                                      "nativeSrc": "10255:23:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "10255:23:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "10245:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10245:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10222:58:50",
                              "nodeType": "YulCase",
                              "src": "10222:58:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10227:15:50",
                                "nodeType": "YulLiteral",
                                "src": "10227:15:50",
                                "type": "",
                                "value": "100000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "10311:37:50",
                                "nodeType": "YulBlock",
                                "src": "10311:37:50",
                                "statements": [
                                  {
                                    "nativeSrc": "10313:33:50",
                                    "nodeType": "YulAssignment",
                                    "src": "10313:33:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "10327:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "10327:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10338:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10338:2:50",
                                              "type": "",
                                              "value": "15"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10342:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10342:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "10334:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "10334:3:50"
                                          },
                                          "nativeSrc": "10334:11:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "10334:11:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "10323:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10323:3:50"
                                      },
                                      "nativeSrc": "10323:23:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "10323:23:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "10313:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10313:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10289:59:50",
                              "nodeType": "YulCase",
                              "src": "10289:59:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10294:16:50",
                                "nodeType": "YulLiteral",
                                "src": "10294:16:50",
                                "type": "",
                                "value": "1000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "10380:37:50",
                                "nodeType": "YulBlock",
                                "src": "10380:37:50",
                                "statements": [
                                  {
                                    "nativeSrc": "10382:33:50",
                                    "nodeType": "YulAssignment",
                                    "src": "10382:33:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "10396:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "10396:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10407:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10407:2:50",
                                              "type": "",
                                              "value": "16"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10411:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10411:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "10403:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "10403:3:50"
                                          },
                                          "nativeSrc": "10403:11:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "10403:11:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "10392:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10392:3:50"
                                      },
                                      "nativeSrc": "10392:23:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "10392:23:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "10382:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10382:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10357:60:50",
                              "nodeType": "YulCase",
                              "src": "10357:60:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10362:17:50",
                                "nodeType": "YulLiteral",
                                "src": "10362:17:50",
                                "type": "",
                                "value": "10000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "10450:37:50",
                                "nodeType": "YulBlock",
                                "src": "10450:37:50",
                                "statements": [
                                  {
                                    "nativeSrc": "10452:33:50",
                                    "nodeType": "YulAssignment",
                                    "src": "10452:33:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "10466:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "10466:5:50"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10477:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10477:2:50",
                                              "type": "",
                                              "value": "17"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "10481:2:50",
                                              "nodeType": "YulLiteral",
                                              "src": "10481:2:50",
                                              "type": "",
                                              "value": "18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "10473:3:50",
                                            "nodeType": "YulIdentifier",
                                            "src": "10473:3:50"
                                          },
                                          "nativeSrc": "10473:11:50",
                                          "nodeType": "YulFunctionCall",
                                          "src": "10473:11:50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "10462:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10462:3:50"
                                      },
                                      "nativeSrc": "10462:23:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "10462:23:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "10452:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10452:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10426:61:50",
                              "nodeType": "YulCase",
                              "src": "10426:61:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10431:18:50",
                                "nodeType": "YulLiteral",
                                "src": "10431:18:50",
                                "type": "",
                                "value": "100000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "10521:15:50",
                                "nodeType": "YulBlock",
                                "src": "10521:15:50",
                                "statements": [
                                  {
                                    "nativeSrc": "10523:11:50",
                                    "nodeType": "YulAssignment",
                                    "src": "10523:11:50",
                                    "value": {
                                      "kind": "number",
                                      "nativeSrc": "10533:1:50",
                                      "nodeType": "YulLiteral",
                                      "src": "10533:1:50",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "10523:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10523:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10496:40:50",
                              "nodeType": "YulCase",
                              "src": "10496:40:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10501:19:50",
                                "nodeType": "YulLiteral",
                                "src": "10501:19:50",
                                "type": "",
                                "value": "1000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "10571:19:50",
                                "nodeType": "YulBlock",
                                "src": "10571:19:50",
                                "statements": [
                                  {
                                    "nativeSrc": "10573:15:50",
                                    "nodeType": "YulAssignment",
                                    "src": "10573:15:50",
                                    "value": {
                                      "name": "uUNIT",
                                      "nativeSrc": "10583:5:50",
                                      "nodeType": "YulIdentifier",
                                      "src": "10583:5:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "10573:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10573:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10545:45:50",
                              "nodeType": "YulCase",
                              "src": "10545:45:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10550:20:50",
                                "nodeType": "YulLiteral",
                                "src": "10550:20:50",
                                "type": "",
                                "value": "10000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "10626:27:50",
                                "nodeType": "YulBlock",
                                "src": "10626:27:50",
                                "statements": [
                                  {
                                    "nativeSrc": "10628:23:50",
                                    "nodeType": "YulAssignment",
                                    "src": "10628:23:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "10642:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "10642:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "10649:1:50",
                                          "nodeType": "YulLiteral",
                                          "src": "10649:1:50",
                                          "type": "",
                                          "value": "2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "10638:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10638:3:50"
                                      },
                                      "nativeSrc": "10638:13:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "10638:13:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "10628:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10628:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10599:54:50",
                              "nodeType": "YulCase",
                              "src": "10599:54:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10604:21:50",
                                "nodeType": "YulLiteral",
                                "src": "10604:21:50",
                                "type": "",
                                "value": "100000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "10690:27:50",
                                "nodeType": "YulBlock",
                                "src": "10690:27:50",
                                "statements": [
                                  {
                                    "nativeSrc": "10692:23:50",
                                    "nodeType": "YulAssignment",
                                    "src": "10692:23:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "10706:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "10706:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "10713:1:50",
                                          "nodeType": "YulLiteral",
                                          "src": "10713:1:50",
                                          "type": "",
                                          "value": "3"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "10702:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10702:3:50"
                                      },
                                      "nativeSrc": "10702:13:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "10702:13:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "10692:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10692:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10662:55:50",
                              "nodeType": "YulCase",
                              "src": "10662:55:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10667:22:50",
                                "nodeType": "YulLiteral",
                                "src": "10667:22:50",
                                "type": "",
                                "value": "1000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "10755:27:50",
                                "nodeType": "YulBlock",
                                "src": "10755:27:50",
                                "statements": [
                                  {
                                    "nativeSrc": "10757:23:50",
                                    "nodeType": "YulAssignment",
                                    "src": "10757:23:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "10771:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "10771:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "10778:1:50",
                                          "nodeType": "YulLiteral",
                                          "src": "10778:1:50",
                                          "type": "",
                                          "value": "4"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "10767:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10767:3:50"
                                      },
                                      "nativeSrc": "10767:13:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "10767:13:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "10757:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10757:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10726:56:50",
                              "nodeType": "YulCase",
                              "src": "10726:56:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10731:23:50",
                                "nodeType": "YulLiteral",
                                "src": "10731:23:50",
                                "type": "",
                                "value": "10000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "10821:27:50",
                                "nodeType": "YulBlock",
                                "src": "10821:27:50",
                                "statements": [
                                  {
                                    "nativeSrc": "10823:23:50",
                                    "nodeType": "YulAssignment",
                                    "src": "10823:23:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "10837:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "10837:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "10844:1:50",
                                          "nodeType": "YulLiteral",
                                          "src": "10844:1:50",
                                          "type": "",
                                          "value": "5"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "10833:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10833:3:50"
                                      },
                                      "nativeSrc": "10833:13:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "10833:13:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "10823:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10823:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10791:57:50",
                              "nodeType": "YulCase",
                              "src": "10791:57:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10796:24:50",
                                "nodeType": "YulLiteral",
                                "src": "10796:24:50",
                                "type": "",
                                "value": "100000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "10888:27:50",
                                "nodeType": "YulBlock",
                                "src": "10888:27:50",
                                "statements": [
                                  {
                                    "nativeSrc": "10890:23:50",
                                    "nodeType": "YulAssignment",
                                    "src": "10890:23:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "10904:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "10904:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "10911:1:50",
                                          "nodeType": "YulLiteral",
                                          "src": "10911:1:50",
                                          "type": "",
                                          "value": "6"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "10900:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10900:3:50"
                                      },
                                      "nativeSrc": "10900:13:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "10900:13:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "10890:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10890:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10857:58:50",
                              "nodeType": "YulCase",
                              "src": "10857:58:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10862:25:50",
                                "nodeType": "YulLiteral",
                                "src": "10862:25:50",
                                "type": "",
                                "value": "1000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "10956:27:50",
                                "nodeType": "YulBlock",
                                "src": "10956:27:50",
                                "statements": [
                                  {
                                    "nativeSrc": "10958:23:50",
                                    "nodeType": "YulAssignment",
                                    "src": "10958:23:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "10972:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "10972:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "10979:1:50",
                                          "nodeType": "YulLiteral",
                                          "src": "10979:1:50",
                                          "type": "",
                                          "value": "7"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "10968:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10968:3:50"
                                      },
                                      "nativeSrc": "10968:13:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "10968:13:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "10958:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "10958:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10924:59:50",
                              "nodeType": "YulCase",
                              "src": "10924:59:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10929:26:50",
                                "nodeType": "YulLiteral",
                                "src": "10929:26:50",
                                "type": "",
                                "value": "10000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "11025:27:50",
                                "nodeType": "YulBlock",
                                "src": "11025:27:50",
                                "statements": [
                                  {
                                    "nativeSrc": "11027:23:50",
                                    "nodeType": "YulAssignment",
                                    "src": "11027:23:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "11041:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "11041:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "11048:1:50",
                                          "nodeType": "YulLiteral",
                                          "src": "11048:1:50",
                                          "type": "",
                                          "value": "8"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "11037:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11037:3:50"
                                      },
                                      "nativeSrc": "11037:13:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "11037:13:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "11027:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11027:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "10992:60:50",
                              "nodeType": "YulCase",
                              "src": "10992:60:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "10997:27:50",
                                "nodeType": "YulLiteral",
                                "src": "10997:27:50",
                                "type": "",
                                "value": "100000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "11095:27:50",
                                "nodeType": "YulBlock",
                                "src": "11095:27:50",
                                "statements": [
                                  {
                                    "nativeSrc": "11097:23:50",
                                    "nodeType": "YulAssignment",
                                    "src": "11097:23:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "11111:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "11111:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "11118:1:50",
                                          "nodeType": "YulLiteral",
                                          "src": "11118:1:50",
                                          "type": "",
                                          "value": "9"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "11107:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11107:3:50"
                                      },
                                      "nativeSrc": "11107:13:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "11107:13:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "11097:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11097:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "11061:61:50",
                              "nodeType": "YulCase",
                              "src": "11061:61:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "11066:28:50",
                                "nodeType": "YulLiteral",
                                "src": "11066:28:50",
                                "type": "",
                                "value": "1000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "11166:28:50",
                                "nodeType": "YulBlock",
                                "src": "11166:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "11168:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "11168:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "11182:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "11182:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "11189:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "11189:2:50",
                                          "type": "",
                                          "value": "10"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "11178:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11178:3:50"
                                      },
                                      "nativeSrc": "11178:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "11178:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "11168:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11168:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "11131:63:50",
                              "nodeType": "YulCase",
                              "src": "11131:63:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "11136:29:50",
                                "nodeType": "YulLiteral",
                                "src": "11136:29:50",
                                "type": "",
                                "value": "10000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "11239:28:50",
                                "nodeType": "YulBlock",
                                "src": "11239:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "11241:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "11241:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "11255:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "11255:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "11262:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "11262:2:50",
                                          "type": "",
                                          "value": "11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "11251:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11251:3:50"
                                      },
                                      "nativeSrc": "11251:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "11251:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "11241:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11241:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "11203:64:50",
                              "nodeType": "YulCase",
                              "src": "11203:64:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "11208:30:50",
                                "nodeType": "YulLiteral",
                                "src": "11208:30:50",
                                "type": "",
                                "value": "100000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "11313:28:50",
                                "nodeType": "YulBlock",
                                "src": "11313:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "11315:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "11315:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "11329:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "11329:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "11336:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "11336:2:50",
                                          "type": "",
                                          "value": "12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "11325:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11325:3:50"
                                      },
                                      "nativeSrc": "11325:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "11325:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "11315:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11315:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "11276:65:50",
                              "nodeType": "YulCase",
                              "src": "11276:65:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "11281:31:50",
                                "nodeType": "YulLiteral",
                                "src": "11281:31:50",
                                "type": "",
                                "value": "1000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "11388:28:50",
                                "nodeType": "YulBlock",
                                "src": "11388:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "11390:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "11390:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "11404:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "11404:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "11411:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "11411:2:50",
                                          "type": "",
                                          "value": "13"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "11400:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11400:3:50"
                                      },
                                      "nativeSrc": "11400:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "11400:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "11390:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11390:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "11350:66:50",
                              "nodeType": "YulCase",
                              "src": "11350:66:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "11355:32:50",
                                "nodeType": "YulLiteral",
                                "src": "11355:32:50",
                                "type": "",
                                "value": "10000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "11464:28:50",
                                "nodeType": "YulBlock",
                                "src": "11464:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "11466:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "11466:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "11480:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "11480:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "11487:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "11487:2:50",
                                          "type": "",
                                          "value": "14"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "11476:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11476:3:50"
                                      },
                                      "nativeSrc": "11476:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "11476:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "11466:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11466:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "11425:67:50",
                              "nodeType": "YulCase",
                              "src": "11425:67:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "11430:33:50",
                                "nodeType": "YulLiteral",
                                "src": "11430:33:50",
                                "type": "",
                                "value": "100000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "11541:28:50",
                                "nodeType": "YulBlock",
                                "src": "11541:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "11543:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "11543:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "11557:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "11557:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "11564:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "11564:2:50",
                                          "type": "",
                                          "value": "15"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "11553:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11553:3:50"
                                      },
                                      "nativeSrc": "11553:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "11553:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "11543:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11543:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "11501:68:50",
                              "nodeType": "YulCase",
                              "src": "11501:68:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "11506:34:50",
                                "nodeType": "YulLiteral",
                                "src": "11506:34:50",
                                "type": "",
                                "value": "1000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "11619:28:50",
                                "nodeType": "YulBlock",
                                "src": "11619:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "11621:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "11621:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "11635:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "11635:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "11642:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "11642:2:50",
                                          "type": "",
                                          "value": "16"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "11631:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11631:3:50"
                                      },
                                      "nativeSrc": "11631:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "11631:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "11621:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11621:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "11578:69:50",
                              "nodeType": "YulCase",
                              "src": "11578:69:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "11583:35:50",
                                "nodeType": "YulLiteral",
                                "src": "11583:35:50",
                                "type": "",
                                "value": "10000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "11698:28:50",
                                "nodeType": "YulBlock",
                                "src": "11698:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "11700:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "11700:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "11714:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "11714:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "11721:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "11721:2:50",
                                          "type": "",
                                          "value": "17"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "11710:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11710:3:50"
                                      },
                                      "nativeSrc": "11710:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "11710:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "11700:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11700:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "11656:70:50",
                              "nodeType": "YulCase",
                              "src": "11656:70:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "11661:36:50",
                                "nodeType": "YulLiteral",
                                "src": "11661:36:50",
                                "type": "",
                                "value": "100000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "11778:28:50",
                                "nodeType": "YulBlock",
                                "src": "11778:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "11780:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "11780:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "11794:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "11794:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "11801:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "11801:2:50",
                                          "type": "",
                                          "value": "18"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "11790:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11790:3:50"
                                      },
                                      "nativeSrc": "11790:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "11790:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "11780:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11780:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "11735:71:50",
                              "nodeType": "YulCase",
                              "src": "11735:71:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "11740:37:50",
                                "nodeType": "YulLiteral",
                                "src": "11740:37:50",
                                "type": "",
                                "value": "1000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "11859:28:50",
                                "nodeType": "YulBlock",
                                "src": "11859:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "11861:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "11861:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "11875:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "11875:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "11882:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "11882:2:50",
                                          "type": "",
                                          "value": "19"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "11871:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11871:3:50"
                                      },
                                      "nativeSrc": "11871:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "11871:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "11861:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11861:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "11815:72:50",
                              "nodeType": "YulCase",
                              "src": "11815:72:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "11820:38:50",
                                "nodeType": "YulLiteral",
                                "src": "11820:38:50",
                                "type": "",
                                "value": "10000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "11941:28:50",
                                "nodeType": "YulBlock",
                                "src": "11941:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "11943:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "11943:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "11957:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "11957:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "11964:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "11964:2:50",
                                          "type": "",
                                          "value": "20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "11953:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11953:3:50"
                                      },
                                      "nativeSrc": "11953:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "11953:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "11943:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "11943:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "11896:73:50",
                              "nodeType": "YulCase",
                              "src": "11896:73:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "11901:39:50",
                                "nodeType": "YulLiteral",
                                "src": "11901:39:50",
                                "type": "",
                                "value": "100000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "12024:28:50",
                                "nodeType": "YulBlock",
                                "src": "12024:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "12026:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "12026:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "12040:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "12040:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "12047:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "12047:2:50",
                                          "type": "",
                                          "value": "21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "12036:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12036:3:50"
                                      },
                                      "nativeSrc": "12036:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "12036:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "12026:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12026:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "11978:74:50",
                              "nodeType": "YulCase",
                              "src": "11978:74:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "11983:40:50",
                                "nodeType": "YulLiteral",
                                "src": "11983:40:50",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "12108:28:50",
                                "nodeType": "YulBlock",
                                "src": "12108:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "12110:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "12110:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "12124:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "12124:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "12131:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "12131:2:50",
                                          "type": "",
                                          "value": "22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "12120:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12120:3:50"
                                      },
                                      "nativeSrc": "12120:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "12120:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "12110:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12110:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "12061:75:50",
                              "nodeType": "YulCase",
                              "src": "12061:75:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "12066:41:50",
                                "nodeType": "YulLiteral",
                                "src": "12066:41:50",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "12193:28:50",
                                "nodeType": "YulBlock",
                                "src": "12193:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "12195:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "12195:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "12209:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "12209:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "12216:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "12216:2:50",
                                          "type": "",
                                          "value": "23"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "12205:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12205:3:50"
                                      },
                                      "nativeSrc": "12205:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "12205:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "12195:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12195:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "12145:76:50",
                              "nodeType": "YulCase",
                              "src": "12145:76:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "12150:42:50",
                                "nodeType": "YulLiteral",
                                "src": "12150:42:50",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "12279:28:50",
                                "nodeType": "YulBlock",
                                "src": "12279:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "12281:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "12281:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "12295:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "12295:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "12302:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "12302:2:50",
                                          "type": "",
                                          "value": "24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "12291:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12291:3:50"
                                      },
                                      "nativeSrc": "12291:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "12291:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "12281:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12281:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "12230:77:50",
                              "nodeType": "YulCase",
                              "src": "12230:77:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "12235:43:50",
                                "nodeType": "YulLiteral",
                                "src": "12235:43:50",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "12366:28:50",
                                "nodeType": "YulBlock",
                                "src": "12366:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "12368:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "12368:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "12382:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "12382:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "12389:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "12389:2:50",
                                          "type": "",
                                          "value": "25"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "12378:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12378:3:50"
                                      },
                                      "nativeSrc": "12378:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "12378:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "12368:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12368:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "12316:78:50",
                              "nodeType": "YulCase",
                              "src": "12316:78:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "12321:44:50",
                                "nodeType": "YulLiteral",
                                "src": "12321:44:50",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "12454:28:50",
                                "nodeType": "YulBlock",
                                "src": "12454:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "12456:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "12456:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "12470:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "12470:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "12477:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "12477:2:50",
                                          "type": "",
                                          "value": "26"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "12466:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12466:3:50"
                                      },
                                      "nativeSrc": "12466:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "12466:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "12456:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12456:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "12403:79:50",
                              "nodeType": "YulCase",
                              "src": "12403:79:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "12408:45:50",
                                "nodeType": "YulLiteral",
                                "src": "12408:45:50",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "12543:28:50",
                                "nodeType": "YulBlock",
                                "src": "12543:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "12545:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "12545:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "12559:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "12559:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "12566:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "12566:2:50",
                                          "type": "",
                                          "value": "27"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "12555:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12555:3:50"
                                      },
                                      "nativeSrc": "12555:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "12555:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "12545:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12545:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "12491:80:50",
                              "nodeType": "YulCase",
                              "src": "12491:80:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "12496:46:50",
                                "nodeType": "YulLiteral",
                                "src": "12496:46:50",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "12633:28:50",
                                "nodeType": "YulBlock",
                                "src": "12633:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "12635:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "12635:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "12649:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "12649:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "12656:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "12656:2:50",
                                          "type": "",
                                          "value": "28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "12645:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12645:3:50"
                                      },
                                      "nativeSrc": "12645:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "12645:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "12635:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12635:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "12580:81:50",
                              "nodeType": "YulCase",
                              "src": "12580:81:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "12585:47:50",
                                "nodeType": "YulLiteral",
                                "src": "12585:47:50",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "12724:28:50",
                                "nodeType": "YulBlock",
                                "src": "12724:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "12726:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "12726:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "12740:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "12740:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "12747:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "12747:2:50",
                                          "type": "",
                                          "value": "29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "12736:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12736:3:50"
                                      },
                                      "nativeSrc": "12736:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "12736:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "12726:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12726:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "12670:82:50",
                              "nodeType": "YulCase",
                              "src": "12670:82:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "12675:48:50",
                                "nodeType": "YulLiteral",
                                "src": "12675:48:50",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "12816:28:50",
                                "nodeType": "YulBlock",
                                "src": "12816:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "12818:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "12818:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "12832:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "12832:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "12839:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "12839:2:50",
                                          "type": "",
                                          "value": "30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "12828:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12828:3:50"
                                      },
                                      "nativeSrc": "12828:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "12828:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "12818:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12818:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "12761:83:50",
                              "nodeType": "YulCase",
                              "src": "12761:83:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "12766:49:50",
                                "nodeType": "YulLiteral",
                                "src": "12766:49:50",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "12909:28:50",
                                "nodeType": "YulBlock",
                                "src": "12909:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "12911:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "12911:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "12925:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "12925:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "12932:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "12932:2:50",
                                          "type": "",
                                          "value": "31"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "12921:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12921:3:50"
                                      },
                                      "nativeSrc": "12921:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "12921:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "12911:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "12911:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "12853:84:50",
                              "nodeType": "YulCase",
                              "src": "12853:84:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "12858:50:50",
                                "nodeType": "YulLiteral",
                                "src": "12858:50:50",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13003:28:50",
                                "nodeType": "YulBlock",
                                "src": "13003:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "13005:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "13005:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13019:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "13019:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "13026:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "13026:2:50",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13015:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13015:3:50"
                                      },
                                      "nativeSrc": "13015:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13015:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13005:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13005:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "12946:85:50",
                              "nodeType": "YulCase",
                              "src": "12946:85:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "12951:51:50",
                                "nodeType": "YulLiteral",
                                "src": "12951:51:50",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13098:28:50",
                                "nodeType": "YulBlock",
                                "src": "13098:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "13100:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "13100:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13114:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "13114:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "13121:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "13121:2:50",
                                          "type": "",
                                          "value": "33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13110:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13110:3:50"
                                      },
                                      "nativeSrc": "13110:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13110:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13100:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13100:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13040:86:50",
                              "nodeType": "YulCase",
                              "src": "13040:86:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13045:52:50",
                                "nodeType": "YulLiteral",
                                "src": "13045:52:50",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13194:28:50",
                                "nodeType": "YulBlock",
                                "src": "13194:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "13196:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "13196:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13210:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "13210:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "13217:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "13217:2:50",
                                          "type": "",
                                          "value": "34"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13206:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13206:3:50"
                                      },
                                      "nativeSrc": "13206:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13206:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13196:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13196:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13135:87:50",
                              "nodeType": "YulCase",
                              "src": "13135:87:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13140:53:50",
                                "nodeType": "YulLiteral",
                                "src": "13140:53:50",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13291:28:50",
                                "nodeType": "YulBlock",
                                "src": "13291:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "13293:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "13293:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13307:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "13307:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "13314:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "13314:2:50",
                                          "type": "",
                                          "value": "35"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13303:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13303:3:50"
                                      },
                                      "nativeSrc": "13303:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13303:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13293:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13293:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13231:88:50",
                              "nodeType": "YulCase",
                              "src": "13231:88:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13236:54:50",
                                "nodeType": "YulLiteral",
                                "src": "13236:54:50",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13389:28:50",
                                "nodeType": "YulBlock",
                                "src": "13389:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "13391:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "13391:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13405:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "13405:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "13412:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "13412:2:50",
                                          "type": "",
                                          "value": "36"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13401:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13401:3:50"
                                      },
                                      "nativeSrc": "13401:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13401:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13391:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13391:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13328:89:50",
                              "nodeType": "YulCase",
                              "src": "13328:89:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13333:55:50",
                                "nodeType": "YulLiteral",
                                "src": "13333:55:50",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13488:28:50",
                                "nodeType": "YulBlock",
                                "src": "13488:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "13490:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "13490:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13504:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "13504:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "13511:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "13511:2:50",
                                          "type": "",
                                          "value": "37"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13500:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13500:3:50"
                                      },
                                      "nativeSrc": "13500:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13500:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13490:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13490:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13426:90:50",
                              "nodeType": "YulCase",
                              "src": "13426:90:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13431:56:50",
                                "nodeType": "YulLiteral",
                                "src": "13431:56:50",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13588:28:50",
                                "nodeType": "YulBlock",
                                "src": "13588:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "13590:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "13590:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13604:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "13604:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "13611:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "13611:2:50",
                                          "type": "",
                                          "value": "38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13600:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13600:3:50"
                                      },
                                      "nativeSrc": "13600:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13600:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13590:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13590:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13525:91:50",
                              "nodeType": "YulCase",
                              "src": "13525:91:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13530:57:50",
                                "nodeType": "YulLiteral",
                                "src": "13530:57:50",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13689:28:50",
                                "nodeType": "YulBlock",
                                "src": "13689:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "13691:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "13691:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13705:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "13705:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "13712:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "13712:2:50",
                                          "type": "",
                                          "value": "39"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13701:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13701:3:50"
                                      },
                                      "nativeSrc": "13701:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13701:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13691:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13691:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13625:92:50",
                              "nodeType": "YulCase",
                              "src": "13625:92:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13630:58:50",
                                "nodeType": "YulLiteral",
                                "src": "13630:58:50",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13791:28:50",
                                "nodeType": "YulBlock",
                                "src": "13791:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "13793:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "13793:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13807:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "13807:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "13814:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "13814:2:50",
                                          "type": "",
                                          "value": "40"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13803:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13803:3:50"
                                      },
                                      "nativeSrc": "13803:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13803:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13793:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13793:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13726:93:50",
                              "nodeType": "YulCase",
                              "src": "13726:93:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13731:59:50",
                                "nodeType": "YulLiteral",
                                "src": "13731:59:50",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13894:28:50",
                                "nodeType": "YulBlock",
                                "src": "13894:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "13896:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "13896:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "13910:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "13910:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "13917:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "13917:2:50",
                                          "type": "",
                                          "value": "41"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "13906:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13906:3:50"
                                      },
                                      "nativeSrc": "13906:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "13906:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "13896:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "13896:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13828:94:50",
                              "nodeType": "YulCase",
                              "src": "13828:94:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13833:60:50",
                                "nodeType": "YulLiteral",
                                "src": "13833:60:50",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "13998:28:50",
                                "nodeType": "YulBlock",
                                "src": "13998:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "14000:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "14000:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14014:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "14014:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14021:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "14021:2:50",
                                          "type": "",
                                          "value": "42"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14010:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14010:3:50"
                                      },
                                      "nativeSrc": "14010:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14010:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14000:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14000:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "13931:95:50",
                              "nodeType": "YulCase",
                              "src": "13931:95:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "13936:61:50",
                                "nodeType": "YulLiteral",
                                "src": "13936:61:50",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14103:28:50",
                                "nodeType": "YulBlock",
                                "src": "14103:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "14105:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "14105:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14119:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "14119:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14126:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "14126:2:50",
                                          "type": "",
                                          "value": "43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14115:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14115:3:50"
                                      },
                                      "nativeSrc": "14115:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14115:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14105:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14105:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14035:96:50",
                              "nodeType": "YulCase",
                              "src": "14035:96:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14040:62:50",
                                "nodeType": "YulLiteral",
                                "src": "14040:62:50",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14209:28:50",
                                "nodeType": "YulBlock",
                                "src": "14209:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "14211:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "14211:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14225:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "14225:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14232:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "14232:2:50",
                                          "type": "",
                                          "value": "44"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14221:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14221:3:50"
                                      },
                                      "nativeSrc": "14221:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14221:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14211:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14211:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14140:97:50",
                              "nodeType": "YulCase",
                              "src": "14140:97:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14145:63:50",
                                "nodeType": "YulLiteral",
                                "src": "14145:63:50",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14316:28:50",
                                "nodeType": "YulBlock",
                                "src": "14316:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "14318:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "14318:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14332:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "14332:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14339:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "14339:2:50",
                                          "type": "",
                                          "value": "45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14328:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14328:3:50"
                                      },
                                      "nativeSrc": "14328:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14328:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14318:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14318:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14246:98:50",
                              "nodeType": "YulCase",
                              "src": "14246:98:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14251:64:50",
                                "nodeType": "YulLiteral",
                                "src": "14251:64:50",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14424:28:50",
                                "nodeType": "YulBlock",
                                "src": "14424:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "14426:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "14426:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14440:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "14440:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14447:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "14447:2:50",
                                          "type": "",
                                          "value": "46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14436:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14436:3:50"
                                      },
                                      "nativeSrc": "14436:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14436:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14426:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14426:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14353:99:50",
                              "nodeType": "YulCase",
                              "src": "14353:99:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14358:65:50",
                                "nodeType": "YulLiteral",
                                "src": "14358:65:50",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14533:28:50",
                                "nodeType": "YulBlock",
                                "src": "14533:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "14535:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "14535:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14549:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "14549:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14556:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "14556:2:50",
                                          "type": "",
                                          "value": "47"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14545:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14545:3:50"
                                      },
                                      "nativeSrc": "14545:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14545:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14535:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14535:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14461:100:50",
                              "nodeType": "YulCase",
                              "src": "14461:100:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14466:66:50",
                                "nodeType": "YulLiteral",
                                "src": "14466:66:50",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14643:28:50",
                                "nodeType": "YulBlock",
                                "src": "14643:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "14645:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "14645:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14659:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "14659:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14666:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "14666:2:50",
                                          "type": "",
                                          "value": "48"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14655:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14655:3:50"
                                      },
                                      "nativeSrc": "14655:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14655:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14645:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14645:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14570:101:50",
                              "nodeType": "YulCase",
                              "src": "14570:101:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14575:67:50",
                                "nodeType": "YulLiteral",
                                "src": "14575:67:50",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14754:28:50",
                                "nodeType": "YulBlock",
                                "src": "14754:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "14756:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "14756:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14770:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "14770:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14777:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "14777:2:50",
                                          "type": "",
                                          "value": "49"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14766:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14766:3:50"
                                      },
                                      "nativeSrc": "14766:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14766:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14756:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14756:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14680:102:50",
                              "nodeType": "YulCase",
                              "src": "14680:102:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14685:68:50",
                                "nodeType": "YulLiteral",
                                "src": "14685:68:50",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14866:28:50",
                                "nodeType": "YulBlock",
                                "src": "14866:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "14868:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "14868:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14882:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "14882:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "14889:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "14889:2:50",
                                          "type": "",
                                          "value": "50"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14878:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14878:3:50"
                                      },
                                      "nativeSrc": "14878:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14878:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14868:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14868:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14791:103:50",
                              "nodeType": "YulCase",
                              "src": "14791:103:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14796:69:50",
                                "nodeType": "YulLiteral",
                                "src": "14796:69:50",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "14979:28:50",
                                "nodeType": "YulBlock",
                                "src": "14979:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "14981:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "14981:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "14995:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "14995:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15002:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "15002:2:50",
                                          "type": "",
                                          "value": "51"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "14991:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14991:3:50"
                                      },
                                      "nativeSrc": "14991:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "14991:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "14981:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "14981:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "14903:104:50",
                              "nodeType": "YulCase",
                              "src": "14903:104:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "14908:70:50",
                                "nodeType": "YulLiteral",
                                "src": "14908:70:50",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15093:28:50",
                                "nodeType": "YulBlock",
                                "src": "15093:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "15095:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "15095:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15109:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "15109:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15116:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "15116:2:50",
                                          "type": "",
                                          "value": "52"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15105:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15105:3:50"
                                      },
                                      "nativeSrc": "15105:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15105:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15095:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15095:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15016:105:50",
                              "nodeType": "YulCase",
                              "src": "15016:105:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15021:71:50",
                                "nodeType": "YulLiteral",
                                "src": "15021:71:50",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15208:28:50",
                                "nodeType": "YulBlock",
                                "src": "15208:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "15210:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "15210:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15224:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "15224:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15231:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "15231:2:50",
                                          "type": "",
                                          "value": "53"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15220:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15220:3:50"
                                      },
                                      "nativeSrc": "15220:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15220:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15210:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15210:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15130:106:50",
                              "nodeType": "YulCase",
                              "src": "15130:106:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15135:72:50",
                                "nodeType": "YulLiteral",
                                "src": "15135:72:50",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15324:28:50",
                                "nodeType": "YulBlock",
                                "src": "15324:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "15326:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "15326:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15340:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "15340:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15347:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "15347:2:50",
                                          "type": "",
                                          "value": "54"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15336:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15336:3:50"
                                      },
                                      "nativeSrc": "15336:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15336:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15326:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15326:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15245:107:50",
                              "nodeType": "YulCase",
                              "src": "15245:107:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15250:73:50",
                                "nodeType": "YulLiteral",
                                "src": "15250:73:50",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15441:28:50",
                                "nodeType": "YulBlock",
                                "src": "15441:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "15443:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "15443:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15457:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "15457:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15464:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "15464:2:50",
                                          "type": "",
                                          "value": "55"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15453:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15453:3:50"
                                      },
                                      "nativeSrc": "15453:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15453:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15443:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15443:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15361:108:50",
                              "nodeType": "YulCase",
                              "src": "15361:108:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15366:74:50",
                                "nodeType": "YulLiteral",
                                "src": "15366:74:50",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15559:28:50",
                                "nodeType": "YulBlock",
                                "src": "15559:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "15561:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "15561:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15575:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "15575:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15582:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "15582:2:50",
                                          "type": "",
                                          "value": "56"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15571:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15571:3:50"
                                      },
                                      "nativeSrc": "15571:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15571:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15561:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15561:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15478:109:50",
                              "nodeType": "YulCase",
                              "src": "15478:109:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15483:75:50",
                                "nodeType": "YulLiteral",
                                "src": "15483:75:50",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15678:28:50",
                                "nodeType": "YulBlock",
                                "src": "15678:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "15680:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "15680:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15694:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "15694:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15701:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "15701:2:50",
                                          "type": "",
                                          "value": "57"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15690:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15690:3:50"
                                      },
                                      "nativeSrc": "15690:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15690:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15680:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15680:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15596:110:50",
                              "nodeType": "YulCase",
                              "src": "15596:110:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15601:76:50",
                                "nodeType": "YulLiteral",
                                "src": "15601:76:50",
                                "type": "",
                                "value": "1000000000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15798:28:50",
                                "nodeType": "YulBlock",
                                "src": "15798:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "15800:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "15800:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15814:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "15814:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15821:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "15821:2:50",
                                          "type": "",
                                          "value": "58"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15810:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15810:3:50"
                                      },
                                      "nativeSrc": "15810:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15810:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15800:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15800:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15715:111:50",
                              "nodeType": "YulCase",
                              "src": "15715:111:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15720:77:50",
                                "nodeType": "YulLiteral",
                                "src": "15720:77:50",
                                "type": "",
                                "value": "10000000000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15919:28:50",
                                "nodeType": "YulBlock",
                                "src": "15919:28:50",
                                "statements": [
                                  {
                                    "nativeSrc": "15921:24:50",
                                    "nodeType": "YulAssignment",
                                    "src": "15921:24:50",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "uUNIT",
                                          "nativeSrc": "15935:5:50",
                                          "nodeType": "YulIdentifier",
                                          "src": "15935:5:50"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "15942:2:50",
                                          "nodeType": "YulLiteral",
                                          "src": "15942:2:50",
                                          "type": "",
                                          "value": "59"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nativeSrc": "15931:3:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15931:3:50"
                                      },
                                      "nativeSrc": "15931:14:50",
                                      "nodeType": "YulFunctionCall",
                                      "src": "15931:14:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15921:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15921:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15835:112:50",
                              "nodeType": "YulCase",
                              "src": "15835:112:50",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "15840:78:50",
                                "nodeType": "YulLiteral",
                                "src": "15840:78:50",
                                "type": "",
                                "value": "100000000000000000000000000000000000000000000000000000000000000000000000000000"
                              }
                            },
                            {
                              "body": {
                                "nativeSrc": "15964:26:50",
                                "nodeType": "YulBlock",
                                "src": "15964:26:50",
                                "statements": [
                                  {
                                    "nativeSrc": "15966:22:50",
                                    "nodeType": "YulAssignment",
                                    "src": "15966:22:50",
                                    "value": {
                                      "name": "uMAX_UD60x18",
                                      "nativeSrc": "15976:12:50",
                                      "nodeType": "YulIdentifier",
                                      "src": "15976:12:50"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "15966:6:50",
                                        "nodeType": "YulIdentifier",
                                        "src": "15966:6:50"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "nativeSrc": "15956:34:50",
                              "nodeType": "YulCase",
                              "src": "15956:34:50",
                              "value": "default"
                            }
                          ],
                          "expression": {
                            "name": "x",
                            "nativeSrc": "9389:1:50",
                            "nodeType": "YulIdentifier",
                            "src": "9389:1:50"
                          },
                          "nativeSrc": "9382:6608:50",
                          "nodeType": "YulSwitch",
                          "src": "9382:6608:50"
                        }
                      ]
                    },
                    "evmVersion": "paris",
                    "externalReferences": [
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10047:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10112:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10178:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10245:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10313:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10382:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10452:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10523:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10573:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10628:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10692:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10757:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10823:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10890:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10958:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11027:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11097:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11168:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11241:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11315:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11390:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11466:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11543:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11621:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11700:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11780:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11861:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11943:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12026:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12110:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12195:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12281:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12368:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12456:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12545:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12635:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12726:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12818:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12911:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13005:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13100:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13196:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13293:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13391:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13490:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13590:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13691:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13793:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13896:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14000:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14105:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14211:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14318:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14426:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14535:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14645:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14756:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14868:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14981:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15095:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15210:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15326:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15443:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15561:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15680:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15800:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15921:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15966:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9408:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9461:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9515:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9570:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9626:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9683:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9741:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9800:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9860:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9921:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13776,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9983:6:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12750,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15976:12:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10061:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10126:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10192:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10259:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10327:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10396:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10466:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10583:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10642:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10706:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10771:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10837:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10904:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10972:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11041:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11111:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11182:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11255:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11329:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11404:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11480:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11557:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11635:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11714:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11794:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11875:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "11957:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12040:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12124:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12209:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12295:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12382:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12470:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12559:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12649:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12740:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12832:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "12925:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13019:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13114:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13210:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13307:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13405:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13504:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13604:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13705:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13807:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "13910:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14014:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14119:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14225:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14332:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14440:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14549:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14659:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14770:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14882:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "14995:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15109:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15224:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15340:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15457:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15575:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15694:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15814:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15935:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9422:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9475:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9529:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9584:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9640:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9697:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9755:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9814:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9874:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9935:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 12780,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9997:5:50",
                        "valueSize": 1
                      },
                      {
                        "declaration": 13772,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "9389:1:50",
                        "valueSize": 1
                      }
                    ],
                    "flags": [
                      "memory-safe"
                    ],
                    "id": 13795,
                    "nodeType": "InlineAssembly",
                    "src": "9347:6649:50"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13800,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 13796,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13776,
                            "src": "16006:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "id": 13797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "16013:6:50",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12660,
                          "src": "16006:13:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (UD60x18) pure returns (uint256)"
                          }
                        },
                        "id": 13798,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16006:15:50",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "id": 13799,
                        "name": "uMAX_UD60x18",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12750,
                        "src": "16025:12:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "16006:31:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 13817,
                    "nodeType": "IfStatement",
                    "src": "16002:198:50",
                    "trueBody": {
                      "id": 13816,
                      "nodeType": "Block",
                      "src": "16039:161:50",
                      "statements": [
                        {
                          "id": 13815,
                          "nodeType": "UncheckedBlock",
                          "src": "16049:145:50",
                          "statements": [
                            {
                              "expression": {
                                "id": 13813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 13801,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13776,
                                  "src": "16133:6:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 13811,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 13809,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                              "arguments": [
                                                {
                                                  "id": 13804,
                                                  "name": "x",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13772,
                                                  "src": "16152:1:50",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                    "typeString": "UD60x18"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                    "typeString": "UD60x18"
                                                  }
                                                ],
                                                "id": 13803,
                                                "name": "log2",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13923,
                                                "src": "16147:4:50",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                  "typeString": "function (UD60x18) pure returns (UD60x18)"
                                                }
                                              },
                                              "id": 13805,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "16147:7:50",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                "typeString": "UD60x18"
                                              }
                                            },
                                            "id": 13806,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "16155:6:50",
                                            "memberName": "unwrap",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12660,
                                            "src": "16147:14:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                              "typeString": "function (UD60x18) pure returns (uint256)"
                                            }
                                          },
                                          "id": 13807,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16147:16:50",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 13808,
                                          "name": "uUNIT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12780,
                                          "src": "16166:5:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16147:24:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "id": 13810,
                                        "name": "uLOG2_10",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12728,
                                        "src": "16174:8:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "16147:35:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 13802,
                                    "name": "wrap",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12677,
                                    "src": "16142:4:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (uint256) pure returns (UD60x18)"
                                    }
                                  },
                                  "id": 13812,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16142:41:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "src": "16133:50:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              },
                              "id": 13814,
                              "nodeType": "ExpressionStatement",
                              "src": "16133:50:50"
                            }
                          ]
                        }
                      ]
                    }
                  }
                ]
              },
              "documentation": {
                "id": 13769,
                "nodeType": "StructuredDocumentation",
                "src": "8501:526:50",
                "text": "@notice Calculates the common logarithm of x using the following formula:\n $$\n log_{10}{x} = log_2{x} / log_2{10}\n $$\n However, if x is an exact power of ten, a hard coded value is returned.\n @dev Notes:\n - Refer to the notes in {log2}.\n Requirements:\n - Refer to the requirements in {log2}.\n @param x The UD60x18 number for which to calculate the common logarithm.\n @return result The common logarithm as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 13819,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "log10",
              "nameLocation": "9036:5:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13773,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13772,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "9050:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13819,
                    "src": "9042:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13771,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13770,
                        "name": "UD60x18",
                        "nameLocations": [
                          "9042:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "9042:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "9042:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "9041:11:50"
              },
              "returnParameters": {
                "id": 13777,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13776,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "9075:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13819,
                    "src": "9067:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13775,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13774,
                        "name": "UD60x18",
                        "nameLocations": [
                          "9067:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "9067:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "9067:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "9066:16:50"
              },
              "scope": 14173,
              "src": "9027:7175:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13922,
                "nodeType": "Block",
                "src": "17007:1342:50",
                "statements": [
                  {
                    "assignments": [
                      13830
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13830,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "17021:5:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 13922,
                        "src": "17013:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13829,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17013:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 13834,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 13831,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13823,
                          "src": "17029:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13832,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "17031:6:50",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12660,
                        "src": "17029:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 13833,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17029:10:50",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "17013:26:50"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13837,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 13835,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13830,
                        "src": "17050:5:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "id": 13836,
                        "name": "uUNIT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12780,
                        "src": "17058:5:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "17050:13:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 13845,
                    "nodeType": "IfStatement",
                    "src": "17046:86:50",
                    "trueBody": {
                      "id": 13844,
                      "nodeType": "Block",
                      "src": "17065:67:50",
                      "statements": [
                        {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 13841,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13823,
                                "src": "17123:1:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "expression": {
                                "id": 13838,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13420,
                                "src": "17082:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_12956",
                                  "typeString": "module \"@prb/math/src/ud60x18/Errors.sol\""
                                }
                              },
                              "id": 13840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "17089:33:50",
                              "memberName": "PRBMath_UD60x18_Log_InputTooSmall",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12949,
                              "src": "17082:40:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_error_$",
                                "typeString": "function (UD60x18) pure returns (error)"
                              }
                            },
                            "id": 13842,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17082:43:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 13843,
                          "nodeType": "RevertStatement",
                          "src": "17075:50:50"
                        }
                      ]
                    }
                  },
                  {
                    "id": 13921,
                    "nodeType": "UncheckedBlock",
                    "src": "17138:1209:50",
                    "statements": [
                      {
                        "assignments": [
                          13847
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13847,
                            "mutability": "mutable",
                            "name": "n",
                            "nameLocation": "17222:1:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 13921,
                            "src": "17214:9:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13846,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17214:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13854,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13852,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 13850,
                                "name": "xUint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13830,
                                "src": "17237:5:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "id": 13851,
                                "name": "uUNIT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12780,
                                "src": "17245:5:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "17237:13:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 13848,
                              "name": "Common",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13419,
                              "src": "17226:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_module_8329",
                                "typeString": "module \"@prb/math/src/Common.sol\""
                              }
                            },
                            "id": 13849,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "17233:3:50",
                            "memberName": "msb",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7781,
                            "src": "17226:10:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 13853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17226:25:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17214:37:50"
                      },
                      {
                        "assignments": [
                          13856
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13856,
                            "mutability": "mutable",
                            "name": "resultUint",
                            "nameLocation": "17429:10:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 13921,
                            "src": "17421:18:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13855,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17421:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13860,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13857,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13847,
                            "src": "17442:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 13858,
                            "name": "uUNIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12780,
                            "src": "17446:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17442:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17421:30:50"
                      },
                      {
                        "assignments": [
                          13862
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13862,
                            "mutability": "mutable",
                            "name": "y",
                            "nameLocation": "17509:1:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 13921,
                            "src": "17501:9:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13861,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17501:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13866,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13863,
                            "name": "xUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13830,
                            "src": "17513:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "id": 13864,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13847,
                            "src": "17522:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17513:10:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17501:22:50"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13867,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13862,
                            "src": "17603:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 13868,
                            "name": "uUNIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12780,
                            "src": "17608:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17603:10:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13875,
                        "nodeType": "IfStatement",
                        "src": "17599:64:50",
                        "trueBody": {
                          "id": 13874,
                          "nodeType": "Block",
                          "src": "17615:48:50",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13871,
                                    "name": "resultUint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13856,
                                    "src": "17641:10:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 13870,
                                  "name": "wrap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12677,
                                  "src": "17636:4:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                    "typeString": "function (uint256) pure returns (UD60x18)"
                                  }
                                },
                                "id": 13872,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17636:16:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              },
                              "functionReturnParameters": 13828,
                              "id": 13873,
                              "nodeType": "Return",
                              "src": "17629:23:50"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          13877
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13877,
                            "mutability": "mutable",
                            "name": "DOUBLE_UNIT",
                            "nameLocation": "17861:11:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 13921,
                            "src": "17853:19:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13876,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17853:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13879,
                        "initialValue": {
                          "hexValue": "32653138",
                          "id": 13878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17875:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2000000000000000000_by_1",
                            "typeString": "int_const 2000000000000000000"
                          },
                          "value": "2e18"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17853:26:50"
                      },
                      {
                        "body": {
                          "id": 13913,
                          "nodeType": "Block",
                          "src": "17946:360:50",
                          "statements": [
                            {
                              "expression": {
                                "id": 13898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 13891,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13862,
                                  "src": "17960:1:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13897,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 13894,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 13892,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13862,
                                          "src": "17965:1:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 13893,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13862,
                                          "src": "17969:1:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "17965:5:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 13895,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "17964:7:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 13896,
                                    "name": "uUNIT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12780,
                                    "src": "17974:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "17964:15:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17960:19:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13899,
                              "nodeType": "ExpressionStatement",
                              "src": "17960:19:50"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13902,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 13900,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13862,
                                  "src": "18062:1:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "id": 13901,
                                  "name": "DOUBLE_UNIT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13877,
                                  "src": "18067:11:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18062:16:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 13912,
                              "nodeType": "IfStatement",
                              "src": "18058:238:50",
                              "trueBody": {
                                "id": 13911,
                                "nodeType": "Block",
                                "src": "18080:216:50",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 13905,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 13903,
                                        "name": "resultUint",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13856,
                                        "src": "18157:10:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "id": 13904,
                                        "name": "delta",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13881,
                                        "src": "18171:5:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "18157:19:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 13906,
                                    "nodeType": "ExpressionStatement",
                                    "src": "18157:19:50"
                                  },
                                  {
                                    "expression": {
                                      "id": 13909,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 13907,
                                        "name": "y",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13862,
                                        "src": "18274:1:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": ">>=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 13908,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "18280:1:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "18274:7:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 13910,
                                    "nodeType": "ExpressionStatement",
                                    "src": "18274:7:50"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13884,
                            "name": "delta",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13881,
                            "src": "17922:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 13885,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17930:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17922:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13914,
                        "initializationExpression": {
                          "assignments": [
                            13881
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 13881,
                              "mutability": "mutable",
                              "name": "delta",
                              "nameLocation": "17902:5:50",
                              "nodeType": "VariableDeclaration",
                              "scope": 13914,
                              "src": "17894:13:50",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 13880,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "17894:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 13883,
                          "initialValue": {
                            "id": 13882,
                            "name": "uHALF_UNIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12717,
                            "src": "17910:10:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "17894:26:50"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 13889,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 13887,
                              "name": "delta",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13881,
                              "src": "17933:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": ">>=",
                            "rightHandSide": {
                              "hexValue": "31",
                              "id": 13888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17943:1:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "17933:11:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13890,
                          "nodeType": "ExpressionStatement",
                          "src": "17933:11:50"
                        },
                        "nodeType": "ForStatement",
                        "src": "17889:417:50"
                      },
                      {
                        "expression": {
                          "id": 13919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13915,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13827,
                            "src": "18315:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 13917,
                                "name": "resultUint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13856,
                                "src": "18329:10:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 13916,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12677,
                              "src": "18324:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                "typeString": "function (uint256) pure returns (UD60x18)"
                              }
                            },
                            "id": 13918,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18324:16:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "src": "18315:25:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13920,
                        "nodeType": "ExpressionStatement",
                        "src": "18315:25:50"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 13820,
                "nodeType": "StructuredDocumentation",
                "src": "16204:748:50",
                "text": "@notice Calculates the binary logarithm of x using the iterative approximation algorithm:\n $$\n log_2{x} = n + log_2{y}, \\text{ where } y = x*2^{-n}, \\ y \\in [1, 2)\n $$\n For $0 \\leq x \\lt 1$, the input is inverted:\n $$\n log_2{x} = -log_2{\\frac{1}{x}}\n $$\n @dev See https://en.wikipedia.org/wiki/Binary_logarithm#Iterative_approximation\n Notes:\n - Due to the lossy precision of the iterative approximation, the results are not perfectly accurate to the last decimal.\n Requirements:\n - x ≥ UNIT\n @param x The UD60x18 number for which to calculate the binary logarithm.\n @return result The binary logarithm as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 13923,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "log2",
              "nameLocation": "16961:4:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13824,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13823,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "16974:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13923,
                    "src": "16966:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13822,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13821,
                        "name": "UD60x18",
                        "nameLocations": [
                          "16966:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "16966:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "16966:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "16965:11:50"
              },
              "returnParameters": {
                "id": 13828,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13827,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "16999:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13923,
                    "src": "16991:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13826,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13825,
                        "name": "UD60x18",
                        "nameLocations": [
                          "16991:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "16991:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "16991:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "16990:16:50"
              },
              "scope": 14173,
              "src": "16952:1397:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 13950,
                "nodeType": "Block",
                "src": "18979:63:50",
                "statements": [
                  {
                    "expression": {
                      "id": 13948,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 13936,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13934,
                        "src": "18985:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 13940,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13927,
                                    "src": "19015:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  "id": 13941,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "19017:6:50",
                                  "memberName": "unwrap",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12660,
                                  "src": "19015:8:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                    "typeString": "function (UD60x18) pure returns (uint256)"
                                  }
                                },
                                "id": 13942,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19015:10:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 13943,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13930,
                                    "src": "19027:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  "id": 13944,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "19029:6:50",
                                  "memberName": "unwrap",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12660,
                                  "src": "19027:8:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                    "typeString": "function (UD60x18) pure returns (uint256)"
                                  }
                                },
                                "id": 13945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19027:10:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 13938,
                                "name": "Common",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13419,
                                "src": "18999:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_module_8329",
                                  "typeString": "module \"@prb/math/src/Common.sol\""
                                }
                              },
                              "id": 13939,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "19006:8:50",
                              "memberName": "mulDiv18",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7952,
                              "src": "18999:15:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 13946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18999:39:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13937,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12677,
                          "src": "18994:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 13947,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18994:45:50",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "18985:54:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 13949,
                    "nodeType": "ExpressionStatement",
                    "src": "18985:54:50"
                  }
                ]
              },
              "documentation": {
                "id": 13924,
                "nodeType": "StructuredDocumentation",
                "src": "18351:563:50",
                "text": "@notice Multiplies two UD60x18 numbers together, returning a new UD60x18 number.\n @dev Uses {Common.mulDiv} to enable overflow-safe multiplication and division.\n Notes:\n - Refer to the notes in {Common.mulDiv}.\n Requirements:\n - Refer to the requirements in {Common.mulDiv}.\n @dev See the documentation in {Common.mulDiv18}.\n @param x The multiplicand as a UD60x18 number.\n @param y The multiplier as a UD60x18 number.\n @return result The product as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 13951,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "mul",
              "nameLocation": "18923:3:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13931,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13927,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "18935:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13951,
                    "src": "18927:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13926,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13925,
                        "name": "UD60x18",
                        "nameLocations": [
                          "18927:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "18927:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "18927:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13930,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "18946:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13951,
                    "src": "18938:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13929,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13928,
                        "name": "UD60x18",
                        "nameLocations": [
                          "18938:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "18938:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "18938:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "18926:22:50"
              },
              "returnParameters": {
                "id": 13935,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13934,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "18971:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 13951,
                    "src": "18963:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13933,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13932,
                        "name": "UD60x18",
                        "nameLocations": [
                          "18963:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "18963:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "18963:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "18962:16:50"
              },
              "scope": 14173,
              "src": "18914:128:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 14057,
                "nodeType": "Block",
                "src": "19930:891:50",
                "statements": [
                  {
                    "assignments": [
                      13965
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13965,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "19944:5:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 14057,
                        "src": "19936:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13964,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19936:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 13969,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 13966,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13955,
                          "src": "19952:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13967,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "19954:6:50",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12660,
                        "src": "19952:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 13968,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19952:10:50",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19936:26:50"
                  },
                  {
                    "assignments": [
                      13971
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13971,
                        "mutability": "mutable",
                        "name": "yUint",
                        "nameLocation": "19976:5:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 14057,
                        "src": "19968:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13970,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19968:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 13975,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 13972,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13958,
                          "src": "19984:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 13973,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "19986:6:50",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12660,
                        "src": "19984:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 13974,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19984:10:50",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19968:26:50"
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13978,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 13976,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13965,
                        "src": "20106:5:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 13977,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20115:1:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "20106:10:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13989,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 13987,
                          "name": "xUint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13965,
                          "src": "20232:5:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 13988,
                          "name": "uUNIT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12780,
                          "src": "20241:5:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "20232:14:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 13993,
                      "nodeType": "IfStatement",
                      "src": "20228:48:50",
                      "trueBody": {
                        "id": 13992,
                        "nodeType": "Block",
                        "src": "20248:28:50",
                        "statements": [
                          {
                            "expression": {
                              "id": 13990,
                              "name": "UNIT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12787,
                              "src": "20265:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "functionReturnParameters": 13963,
                            "id": 13991,
                            "nodeType": "Return",
                            "src": "20258:11:50"
                          }
                        ]
                      }
                    },
                    "id": 13994,
                    "nodeType": "IfStatement",
                    "src": "20102:174:50",
                    "trueBody": {
                      "id": 13986,
                      "nodeType": "Block",
                      "src": "20118:48:50",
                      "statements": [
                        {
                          "expression": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13981,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 13979,
                                "name": "yUint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13971,
                                "src": "20135:5:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 13980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20144:1:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "20135:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "id": 13983,
                              "name": "ZERO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12806,
                              "src": "20155:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "id": 13984,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "20135:24:50",
                            "trueExpression": {
                              "id": 13982,
                              "name": "UNIT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12787,
                              "src": "20148:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "functionReturnParameters": 13963,
                          "id": 13985,
                          "nodeType": "Return",
                          "src": "20128:31:50"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13997,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 13995,
                        "name": "yUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13971,
                        "src": "20336:5:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 13996,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20345:1:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "20336:10:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14003,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 14001,
                          "name": "yUint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13971,
                          "src": "20437:5:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 14002,
                          "name": "uUNIT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12780,
                          "src": "20446:5:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "20437:14:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 14007,
                      "nodeType": "IfStatement",
                      "src": "20433:45:50",
                      "trueBody": {
                        "id": 14006,
                        "nodeType": "Block",
                        "src": "20453:25:50",
                        "statements": [
                          {
                            "expression": {
                              "id": 14004,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13955,
                              "src": "20470:1:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "functionReturnParameters": 13963,
                            "id": 14005,
                            "nodeType": "Return",
                            "src": "20463:8:50"
                          }
                        ]
                      }
                    },
                    "id": 14008,
                    "nodeType": "IfStatement",
                    "src": "20332:146:50",
                    "trueBody": {
                      "id": 14000,
                      "nodeType": "Block",
                      "src": "20348:28:50",
                      "statements": [
                        {
                          "expression": {
                            "id": 13998,
                            "name": "UNIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12787,
                            "src": "20365:4:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "functionReturnParameters": 13963,
                          "id": 13999,
                          "nodeType": "Return",
                          "src": "20358:11:50"
                        }
                      ]
                    }
                  },
                  {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 14011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 14009,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13965,
                        "src": "20537:5:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 14010,
                        "name": "uUNIT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12780,
                        "src": "20545:5:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "20537:13:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 14055,
                      "nodeType": "Block",
                      "src": "20669:150:50",
                      "statements": [
                        {
                          "assignments": [
                            14026
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 14026,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "20687:1:50",
                              "nodeType": "VariableDeclaration",
                              "scope": 14055,
                              "src": "20679:9:50",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              },
                              "typeName": {
                                "id": 14025,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 14024,
                                  "name": "UD60x18",
                                  "nameLocations": [
                                    "20679:7:50"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 14179,
                                  "src": "20679:7:50"
                                },
                                "referencedDeclaration": 14179,
                                "src": "20679:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 14032,
                          "initialValue": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14030,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 14028,
                                  "name": "uUNIT_SQUARED",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12791,
                                  "src": "20696:13:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 14029,
                                  "name": "xUint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13965,
                                  "src": "20712:5:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20696:21:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 14027,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12677,
                              "src": "20691:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                "typeString": "function (uint256) pure returns (UD60x18)"
                              }
                            },
                            "id": 14031,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20691:27:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "20679:39:50"
                        },
                        {
                          "assignments": [
                            14035
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 14035,
                              "mutability": "mutable",
                              "name": "w",
                              "nameLocation": "20736:1:50",
                              "nodeType": "VariableDeclaration",
                              "scope": 14055,
                              "src": "20728:9:50",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              },
                              "typeName": {
                                "id": 14034,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 14033,
                                  "name": "UD60x18",
                                  "nameLocations": [
                                    "20728:7:50"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 14179,
                                  "src": "20728:7:50"
                                },
                                "referencedDeclaration": 14179,
                                "src": "20728:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 14044,
                          "initialValue": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 14039,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14026,
                                        "src": "20754:1:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                          "typeString": "UD60x18"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                          "typeString": "UD60x18"
                                        }
                                      ],
                                      "id": 14038,
                                      "name": "log2",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13923,
                                      "src": "20749:4:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (UD60x18) pure returns (UD60x18)"
                                      }
                                    },
                                    "id": 14040,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "20749:7:50",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  {
                                    "id": 14041,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13958,
                                    "src": "20758:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    },
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  ],
                                  "id": 14037,
                                  "name": "mul",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13951,
                                  "src": "20745:3:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                    "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                  }
                                },
                                "id": 14042,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20745:15:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "id": 14036,
                              "name": "exp2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13629,
                              "src": "20740:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                "typeString": "function (UD60x18) pure returns (UD60x18)"
                              }
                            },
                            "id": 14043,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20740:21:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "20728:33:50"
                        },
                        {
                          "expression": {
                            "id": 14053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 14045,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13962,
                              "src": "20771:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14051,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 14047,
                                    "name": "uUNIT_SQUARED",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12791,
                                    "src": "20785:13:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "id": 14048,
                                        "name": "w",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14035,
                                        "src": "20801:1:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                          "typeString": "UD60x18"
                                        }
                                      },
                                      "id": 14049,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "20803:6:50",
                                      "memberName": "unwrap",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12660,
                                      "src": "20801:8:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (UD60x18) pure returns (uint256)"
                                      }
                                    },
                                    "id": 14050,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "20801:10:50",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "20785:26:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 14046,
                                "name": "wrap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12677,
                                "src": "20780:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (uint256) pure returns (UD60x18)"
                                }
                              },
                              "id": 14052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20780:32:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "src": "20771:41:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "id": 14054,
                          "nodeType": "ExpressionStatement",
                          "src": "20771:41:50"
                        }
                      ]
                    },
                    "id": 14056,
                    "nodeType": "IfStatement",
                    "src": "20533:286:50",
                    "trueBody": {
                      "id": 14023,
                      "nodeType": "Block",
                      "src": "20552:47:50",
                      "statements": [
                        {
                          "expression": {
                            "id": 14021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 14012,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13962,
                              "src": "20562:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 14016,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13955,
                                          "src": "20585:1:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                            "typeString": "UD60x18"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                            "typeString": "UD60x18"
                                          }
                                        ],
                                        "id": 14015,
                                        "name": "log2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13923,
                                        "src": "20580:4:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                          "typeString": "function (UD60x18) pure returns (UD60x18)"
                                        }
                                      },
                                      "id": 14017,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20580:7:50",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    },
                                    {
                                      "id": 14018,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13958,
                                      "src": "20589:1:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      },
                                      {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    ],
                                    "id": 14014,
                                    "name": "mul",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13951,
                                    "src": "20576:3:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                    }
                                  },
                                  "id": 14019,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20576:15:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                ],
                                "id": 14013,
                                "name": "exp2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13629,
                                "src": "20571:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (UD60x18)"
                                }
                              },
                              "id": 14020,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20571:21:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            },
                            "src": "20562:30:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "id": 14022,
                          "nodeType": "ExpressionStatement",
                          "src": "20562:30:50"
                        }
                      ]
                    }
                  }
                ]
              },
              "documentation": {
                "id": 13952,
                "nodeType": "StructuredDocumentation",
                "src": "19044:821:50",
                "text": "@notice Raises x to the power of y.\n For $1 \\leq x \\leq \\infty$, the following standard formula is used:\n $$\n x^y = 2^{log_2{x} * y}\n $$\n For $0 \\leq x \\lt 1$, since the unsigned {log2} is undefined, an equivalent formula is used:\n $$\n i = \\frac{1}{x}\n w = 2^{log_2{i} * y}\n x^y = \\frac{1}{w}\n $$\n @dev Notes:\n - Refer to the notes in {log2} and {mul}.\n - Returns `UNIT` for 0^0.\n - It may not perform well with very small values of x. Consider using SD59x18 as an alternative.\n Requirements:\n - Refer to the requirements in {exp2}, {log2}, and {mul}.\n @param x The base as a UD60x18 number.\n @param y The exponent as a UD60x18 number.\n @return result The result as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 14058,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "pow",
              "nameLocation": "19874:3:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 13959,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13955,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "19886:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 14058,
                    "src": "19878:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13954,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13953,
                        "name": "UD60x18",
                        "nameLocations": [
                          "19878:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "19878:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "19878:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 13958,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "19897:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 14058,
                    "src": "19889:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13957,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13956,
                        "name": "UD60x18",
                        "nameLocations": [
                          "19889:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "19889:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "19889:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "19877:22:50"
              },
              "returnParameters": {
                "id": 13963,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 13962,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "19922:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 14058,
                    "src": "19914:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 13961,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 13960,
                        "name": "UD60x18",
                        "nameLocations": [
                          "19914:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "19914:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "19914:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "19913:16:50"
              },
              "scope": 14173,
              "src": "19865:956:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 14129,
                "nodeType": "Block",
                "src": "21450:456:50",
                "statements": [
                  {
                    "assignments": [
                      14071
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 14071,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "21525:5:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 14129,
                        "src": "21517:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14070,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21517:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 14075,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 14072,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14062,
                          "src": "21533:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 14073,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "21535:6:50",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12660,
                        "src": "21533:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 14074,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21533:10:50",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "21517:26:50"
                  },
                  {
                    "assignments": [
                      14077
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 14077,
                        "mutability": "mutable",
                        "name": "resultUint",
                        "nameLocation": "21557:10:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 14129,
                        "src": "21549:18:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14076,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21549:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 14086,
                    "initialValue": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14082,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 14078,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14064,
                            "src": "21570:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 14079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21574:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "21570:5:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 14081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "21578:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "21570:9:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "id": 14084,
                        "name": "uUNIT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12780,
                        "src": "21590:5:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 14085,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "21570:25:50",
                      "trueExpression": {
                        "id": 14083,
                        "name": "xUint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14071,
                        "src": "21582:5:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "21549:46:50"
                  },
                  {
                    "body": {
                      "id": 14121,
                      "nodeType": "Block",
                      "src": "21683:190:50",
                      "statements": [
                        {
                          "expression": {
                            "id": 14104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 14098,
                              "name": "xUint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14071,
                              "src": "21693:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 14101,
                                  "name": "xUint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14071,
                                  "src": "21717:5:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 14102,
                                  "name": "xUint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14071,
                                  "src": "21724:5:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 14099,
                                  "name": "Common",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13419,
                                  "src": "21701:6:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_module_8329",
                                    "typeString": "module \"@prb/math/src/Common.sol\""
                                  }
                                },
                                "id": 14100,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "21708:8:50",
                                "memberName": "mulDiv18",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7952,
                                "src": "21701:15:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 14103,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21701:29:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "21693:37:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14105,
                          "nodeType": "ExpressionStatement",
                          "src": "21693:37:50"
                        },
                        {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 14110,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14108,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 14106,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14064,
                                "src": "21784:1:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 14107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "21788:1:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "21784:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 14109,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21792:1:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "21784:9:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 14120,
                          "nodeType": "IfStatement",
                          "src": "21780:87:50",
                          "trueBody": {
                            "id": 14119,
                            "nodeType": "Block",
                            "src": "21795:72:50",
                            "statements": [
                              {
                                "expression": {
                                  "id": 14117,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 14111,
                                    "name": "resultUint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14077,
                                    "src": "21809:10:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "id": 14114,
                                        "name": "resultUint",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14077,
                                        "src": "21838:10:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 14115,
                                        "name": "xUint",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14071,
                                        "src": "21850:5:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 14112,
                                        "name": "Common",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13419,
                                        "src": "21822:6:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_module_8329",
                                          "typeString": "module \"@prb/math/src/Common.sol\""
                                        }
                                      },
                                      "id": 14113,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "21829:8:50",
                                      "memberName": "mulDiv18",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7952,
                                      "src": "21822:15:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 14116,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "21822:34:50",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "21809:47:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 14118,
                                "nodeType": "ExpressionStatement",
                                "src": "21809:47:50"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 14093,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 14091,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14064,
                        "src": "21667:1:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 14092,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "21671:1:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "21667:5:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 14122,
                    "initializationExpression": {
                      "expression": {
                        "id": 14089,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 14087,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14064,
                          "src": "21658:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": ">>=",
                        "rightHandSide": {
                          "hexValue": "31",
                          "id": 14088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "21664:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "21658:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 14090,
                      "nodeType": "ExpressionStatement",
                      "src": "21658:7:50"
                    },
                    "isSimpleCounterLoop": false,
                    "loopExpression": {
                      "expression": {
                        "id": 14096,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 14094,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14064,
                          "src": "21674:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": ">>=",
                        "rightHandSide": {
                          "hexValue": "31",
                          "id": 14095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "21680:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "21674:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 14097,
                      "nodeType": "ExpressionStatement",
                      "src": "21674:7:50"
                    },
                    "nodeType": "ForStatement",
                    "src": "21653:220:50"
                  },
                  {
                    "expression": {
                      "id": 14127,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 14123,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14068,
                        "src": "21878:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 14125,
                            "name": "resultUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14077,
                            "src": "21892:10:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 14124,
                          "name": "wrap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12677,
                          "src": "21887:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                            "typeString": "function (uint256) pure returns (UD60x18)"
                          }
                        },
                        "id": 14126,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21887:16:50",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                          "typeString": "UD60x18"
                        }
                      },
                      "src": "21878:25:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "id": 14128,
                    "nodeType": "ExpressionStatement",
                    "src": "21878:25:50"
                  }
                ]
              },
              "documentation": {
                "id": 14059,
                "nodeType": "StructuredDocumentation",
                "src": "20823:561:50",
                "text": "@notice Raises x (a UD60x18 number) to the power y (an unsigned basic integer) using the well-known\n algorithm \"exponentiation by squaring\".\n @dev See https://en.wikipedia.org/wiki/Exponentiation_by_squaring.\n Notes:\n - Refer to the notes in {Common.mulDiv18}.\n - Returns `UNIT` for 0^0.\n Requirements:\n - The result must fit in UD60x18.\n @param x The base as a UD60x18 number.\n @param y The exponent as a uint256.\n @return result The result as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 14130,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "powu",
              "nameLocation": "21393:4:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 14065,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 14062,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "21406:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 14130,
                    "src": "21398:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 14061,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 14060,
                        "name": "UD60x18",
                        "nameLocations": [
                          "21398:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "21398:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "21398:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 14064,
                    "mutability": "mutable",
                    "name": "y",
                    "nameLocation": "21417:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 14130,
                    "src": "21409:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 14063,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "21409:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "21397:22:50"
              },
              "returnParameters": {
                "id": 14069,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 14068,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "21442:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 14130,
                    "src": "21434:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 14067,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 14066,
                        "name": "UD60x18",
                        "nameLocations": [
                          "21434:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "21434:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "21434:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "21433:16:50"
              },
              "scope": 14173,
              "src": "21384:522:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            {
              "body": {
                "id": 14171,
                "nodeType": "Block",
                "src": "22420:406:50",
                "statements": [
                  {
                    "assignments": [
                      14141
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 14141,
                        "mutability": "mutable",
                        "name": "xUint",
                        "nameLocation": "22434:5:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 14171,
                        "src": "22426:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14140,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22426:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 14145,
                    "initialValue": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 14142,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14134,
                          "src": "22442:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 14143,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "22444:6:50",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12660,
                        "src": "22442:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                          "typeString": "function (UD60x18) pure returns (uint256)"
                        }
                      },
                      "id": 14144,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "22442:10:50",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "22426:26:50"
                  },
                  {
                    "id": 14170,
                    "nodeType": "UncheckedBlock",
                    "src": "22459:365:50",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 14146,
                            "name": "xUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14141,
                            "src": "22483:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 14149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 14147,
                              "name": "uMAX_UD60x18",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12750,
                              "src": "22491:12:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 14148,
                              "name": "uUNIT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12780,
                              "src": "22506:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "22491:20:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22483:28:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14158,
                        "nodeType": "IfStatement",
                        "src": "22479:105:50",
                        "trueBody": {
                          "id": 14157,
                          "nodeType": "Block",
                          "src": "22513:71:50",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 14154,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14134,
                                    "src": "22571:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  ],
                                  "expression": {
                                    "id": 14151,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13420,
                                    "src": "22534:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_module_12956",
                                      "typeString": "module \"@prb/math/src/ud60x18/Errors.sol\""
                                    }
                                  },
                                  "id": 14153,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "22541:29:50",
                                  "memberName": "PRBMath_UD60x18_Sqrt_Overflow",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12955,
                                  "src": "22534:36:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_error_$",
                                    "typeString": "function (UD60x18) pure returns (error)"
                                  }
                                },
                                "id": 14155,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22534:39:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 14156,
                              "nodeType": "RevertStatement",
                              "src": "22527:46:50"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 14168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14159,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14138,
                            "src": "22776:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 14165,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 14163,
                                      "name": "xUint",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14141,
                                      "src": "22802:5:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 14164,
                                      "name": "uUNIT",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12780,
                                      "src": "22810:5:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "22802:13:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 14161,
                                    "name": "Common",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13419,
                                    "src": "22790:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_module_8329",
                                      "typeString": "module \"@prb/math/src/Common.sol\""
                                    }
                                  },
                                  "id": 14162,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "22797:4:50",
                                  "memberName": "sqrt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8328,
                                  "src": "22790:11:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 14166,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22790:26:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 14160,
                              "name": "wrap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12677,
                              "src": "22785:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                "typeString": "function (uint256) pure returns (UD60x18)"
                              }
                            },
                            "id": 14167,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22785:32:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                              "typeString": "UD60x18"
                            }
                          },
                          "src": "22776:41:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                            "typeString": "UD60x18"
                          }
                        },
                        "id": 14169,
                        "nodeType": "ExpressionStatement",
                        "src": "22776:41:50"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 14131,
                "nodeType": "StructuredDocumentation",
                "src": "21908:457:50",
                "text": "@notice Calculates the square root of x using the Babylonian method.\n @dev See https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method.\n Notes:\n - The result is rounded toward zero.\n Requirements:\n - x ≤ MAX_UD60x18 / UNIT\n @param x The UD60x18 number for which to calculate the square root.\n @return result The result as a UD60x18 number.\n @custom:smtchecker abstract-function-nondet"
              },
              "id": 14172,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "sqrt",
              "nameLocation": "22374:4:50",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 14135,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 14134,
                    "mutability": "mutable",
                    "name": "x",
                    "nameLocation": "22387:1:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 14172,
                    "src": "22379:9:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 14133,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 14132,
                        "name": "UD60x18",
                        "nameLocations": [
                          "22379:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "22379:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "22379:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "22378:11:50"
              },
              "returnParameters": {
                "id": 14139,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 14138,
                    "mutability": "mutable",
                    "name": "result",
                    "nameLocation": "22412:6:50",
                    "nodeType": "VariableDeclaration",
                    "scope": 14172,
                    "src": "22404:14:50",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                      "typeString": "UD60x18"
                    },
                    "typeName": {
                      "id": 14137,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 14136,
                        "name": "UD60x18",
                        "nameLocations": [
                          "22404:7:50"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14179,
                        "src": "22404:7:50"
                      },
                      "referencedDeclaration": 14179,
                      "src": "22404:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                        "typeString": "UD60x18"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "22403:16:50"
              },
              "scope": 14173,
              "src": "22365:461:50",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            }
          ],
          "src": "32:22795:50"
        },
        "id": 50
      },
      "@prb/math/src/ud60x18/ValueType.sol": {
        "ast": {
          "absolutePath": "@prb/math/src/ud60x18/ValueType.sol",
          "exportedSymbols": {
            "Casting": [
              14175
            ],
            "Helpers": [
              14176
            ],
            "Math": [
              14177
            ],
            "UD60x18": [
              14179
            ]
          },
          "id": 14250,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14174,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".19"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:25:51"
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Casting.sol",
              "file": "./Casting.sol",
              "id": 14175,
              "nameLocation": "85:7:51",
              "nodeType": "ImportDirective",
              "scope": 14250,
              "sourceUnit": 12678,
              "src": "59:34:51",
              "symbolAliases": [],
              "unitAlias": "Casting"
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Helpers.sol",
              "file": "./Helpers.sol",
              "id": 14176,
              "nameLocation": "120:7:51",
              "nodeType": "ImportDirective",
              "scope": 14250,
              "sourceUnit": 13417,
              "src": "94:34:51",
              "symbolAliases": [],
              "unitAlias": "Helpers"
            },
            {
              "absolutePath": "@prb/math/src/ud60x18/Math.sol",
              "file": "./Math.sol",
              "id": 14177,
              "nameLocation": "152:4:51",
              "nodeType": "ImportDirective",
              "scope": 14250,
              "sourceUnit": 14173,
              "src": "129:28:51",
              "symbolAliases": [],
              "unitAlias": "Math"
            },
            {
              "canonicalName": "UD60x18",
              "id": 14179,
              "name": "UD60x18",
              "nameLocation": "485:7:51",
              "nodeType": "UserDefinedValueTypeDefinition",
              "src": "480:24:51",
              "underlyingType": {
                "id": 14178,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "496:7:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            {
              "functionList": [
                {
                  "function": {
                    "id": 14180,
                    "name": "Casting.intoSD1x18",
                    "nameLocations": [
                      "717:7:51",
                      "725:10:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12354,
                    "src": "717:18:51"
                  }
                },
                {
                  "function": {
                    "id": 14181,
                    "name": "Casting.intoSD21x18",
                    "nameLocations": [
                      "741:7:51",
                      "749:11:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12402,
                    "src": "741:19:51"
                  }
                },
                {
                  "function": {
                    "id": 14182,
                    "name": "Casting.intoSD59x18",
                    "nameLocations": [
                      "766:7:51",
                      "774:11:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12522,
                    "src": "766:19:51"
                  }
                },
                {
                  "function": {
                    "id": 14183,
                    "name": "Casting.intoUD2x18",
                    "nameLocations": [
                      "791:7:51",
                      "799:10:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12441,
                    "src": "791:18:51"
                  }
                },
                {
                  "function": {
                    "id": 14184,
                    "name": "Casting.intoUD21x18",
                    "nameLocations": [
                      "815:7:51",
                      "823:11:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12480,
                    "src": "815:19:51"
                  }
                },
                {
                  "function": {
                    "id": 14185,
                    "name": "Casting.intoUint128",
                    "nameLocations": [
                      "840:7:51",
                      "848:11:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12574,
                    "src": "840:19:51"
                  }
                },
                {
                  "function": {
                    "id": 14186,
                    "name": "Casting.intoUint256",
                    "nameLocations": [
                      "865:7:51",
                      "873:11:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12539,
                    "src": "865:19:51"
                  }
                },
                {
                  "function": {
                    "id": 14187,
                    "name": "Casting.intoUint40",
                    "nameLocations": [
                      "890:7:51",
                      "898:10:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12609,
                    "src": "890:18:51"
                  }
                },
                {
                  "function": {
                    "id": 14188,
                    "name": "Casting.unwrap",
                    "nameLocations": [
                      "914:7:51",
                      "922:6:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12660,
                    "src": "914:14:51"
                  }
                }
              ],
              "global": true,
              "id": 14191,
              "nodeType": "UsingForDirective",
              "src": "705:245:51",
              "typeName": {
                "id": 14190,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 14189,
                  "name": "UD60x18",
                  "nameLocations": [
                    "935:7:51"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "935:7:51"
                },
                "referencedDeclaration": 14179,
                "src": "935:7:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              }
            },
            {
              "functionList": [
                {
                  "function": {
                    "id": 14192,
                    "name": "Math.avg",
                    "nameLocations": [
                      "1272:4:51",
                      "1277:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13480,
                    "src": "1272:8:51"
                  }
                },
                {
                  "function": {
                    "id": 14193,
                    "name": "Math.ceil",
                    "nameLocations": [
                      "1286:4:51",
                      "1291:4:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13509,
                    "src": "1286:9:51"
                  }
                },
                {
                  "function": {
                    "id": 14194,
                    "name": "Math.div",
                    "nameLocations": [
                      "1301:4:51",
                      "1306:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13538,
                    "src": "1301:8:51"
                  }
                },
                {
                  "function": {
                    "id": 14195,
                    "name": "Math.exp",
                    "nameLocations": [
                      "1315:4:51",
                      "1320:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13583,
                    "src": "1315:8:51"
                  }
                },
                {
                  "function": {
                    "id": 14196,
                    "name": "Math.exp2",
                    "nameLocations": [
                      "1329:4:51",
                      "1334:4:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13629,
                    "src": "1329:9:51"
                  }
                },
                {
                  "function": {
                    "id": 14197,
                    "name": "Math.floor",
                    "nameLocations": [
                      "1344:4:51",
                      "1349:5:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13641,
                    "src": "1344:10:51"
                  }
                },
                {
                  "function": {
                    "id": 14198,
                    "name": "Math.frac",
                    "nameLocations": [
                      "1360:4:51",
                      "1365:4:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13653,
                    "src": "1360:9:51"
                  }
                },
                {
                  "function": {
                    "id": 14199,
                    "name": "Math.gm",
                    "nameLocations": [
                      "1375:4:51",
                      "1380:2:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13720,
                    "src": "1375:7:51"
                  }
                },
                {
                  "function": {
                    "id": 14200,
                    "name": "Math.inv",
                    "nameLocations": [
                      "1388:4:51",
                      "1393:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13742,
                    "src": "1388:8:51"
                  }
                },
                {
                  "function": {
                    "id": 14201,
                    "name": "Math.ln",
                    "nameLocations": [
                      "1402:4:51",
                      "1407:2:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13768,
                    "src": "1402:7:51"
                  }
                },
                {
                  "function": {
                    "id": 14202,
                    "name": "Math.log10",
                    "nameLocations": [
                      "1415:4:51",
                      "1420:5:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13819,
                    "src": "1415:10:51"
                  }
                },
                {
                  "function": {
                    "id": 14203,
                    "name": "Math.log2",
                    "nameLocations": [
                      "1431:4:51",
                      "1436:4:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13923,
                    "src": "1431:9:51"
                  }
                },
                {
                  "function": {
                    "id": 14204,
                    "name": "Math.mul",
                    "nameLocations": [
                      "1446:4:51",
                      "1451:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13951,
                    "src": "1446:8:51"
                  }
                },
                {
                  "function": {
                    "id": 14205,
                    "name": "Math.pow",
                    "nameLocations": [
                      "1460:4:51",
                      "1465:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14058,
                    "src": "1460:8:51"
                  }
                },
                {
                  "function": {
                    "id": 14206,
                    "name": "Math.powu",
                    "nameLocations": [
                      "1474:4:51",
                      "1479:4:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14130,
                    "src": "1474:9:51"
                  }
                },
                {
                  "function": {
                    "id": 14207,
                    "name": "Math.sqrt",
                    "nameLocations": [
                      "1489:4:51",
                      "1494:4:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 14172,
                    "src": "1489:9:51"
                  }
                }
              ],
              "global": true,
              "id": 14210,
              "nodeType": "UsingForDirective",
              "src": "1260:260:51",
              "typeName": {
                "id": 14209,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 14208,
                  "name": "UD60x18",
                  "nameLocations": [
                    "1505:7:51"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "1505:7:51"
                },
                "referencedDeclaration": 14179,
                "src": "1505:7:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              }
            },
            {
              "functionList": [
                {
                  "function": {
                    "id": 14211,
                    "name": "Helpers.add",
                    "nameLocations": [
                      "1840:7:51",
                      "1848:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12987,
                    "src": "1840:11:51"
                  }
                },
                {
                  "function": {
                    "id": 14212,
                    "name": "Helpers.and",
                    "nameLocations": [
                      "1857:7:51",
                      "1865:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13010,
                    "src": "1857:11:51"
                  }
                },
                {
                  "function": {
                    "id": 14213,
                    "name": "Helpers.eq",
                    "nameLocations": [
                      "1874:7:51",
                      "1882:2:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13059,
                    "src": "1874:10:51"
                  }
                },
                {
                  "function": {
                    "id": 14214,
                    "name": "Helpers.gt",
                    "nameLocations": [
                      "1890:7:51",
                      "1898:2:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13082,
                    "src": "1890:10:51"
                  }
                },
                {
                  "function": {
                    "id": 14215,
                    "name": "Helpers.gte",
                    "nameLocations": [
                      "1906:7:51",
                      "1914:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13105,
                    "src": "1906:11:51"
                  }
                },
                {
                  "function": {
                    "id": 14216,
                    "name": "Helpers.isZero",
                    "nameLocations": [
                      "1923:7:51",
                      "1931:6:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13123,
                    "src": "1923:14:51"
                  }
                },
                {
                  "function": {
                    "id": 14217,
                    "name": "Helpers.lshift",
                    "nameLocations": [
                      "1943:7:51",
                      "1951:6:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13146,
                    "src": "1943:14:51"
                  }
                },
                {
                  "function": {
                    "id": 14218,
                    "name": "Helpers.lt",
                    "nameLocations": [
                      "1963:7:51",
                      "1971:2:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13169,
                    "src": "1963:10:51"
                  }
                },
                {
                  "function": {
                    "id": 14219,
                    "name": "Helpers.lte",
                    "nameLocations": [
                      "1979:7:51",
                      "1987:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13192,
                    "src": "1979:11:51"
                  }
                },
                {
                  "function": {
                    "id": 14220,
                    "name": "Helpers.mod",
                    "nameLocations": [
                      "1996:7:51",
                      "2004:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13218,
                    "src": "1996:11:51"
                  }
                },
                {
                  "function": {
                    "id": 14221,
                    "name": "Helpers.neq",
                    "nameLocations": [
                      "2013:7:51",
                      "2021:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13241,
                    "src": "2013:11:51"
                  }
                },
                {
                  "function": {
                    "id": 14222,
                    "name": "Helpers.not",
                    "nameLocations": [
                      "2030:7:51",
                      "2038:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13261,
                    "src": "2030:11:51"
                  }
                },
                {
                  "function": {
                    "id": 14223,
                    "name": "Helpers.or",
                    "nameLocations": [
                      "2047:7:51",
                      "2055:2:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13287,
                    "src": "2047:10:51"
                  }
                },
                {
                  "function": {
                    "id": 14224,
                    "name": "Helpers.rshift",
                    "nameLocations": [
                      "2063:7:51",
                      "2071:6:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13310,
                    "src": "2063:14:51"
                  }
                },
                {
                  "function": {
                    "id": 14225,
                    "name": "Helpers.sub",
                    "nameLocations": [
                      "2083:7:51",
                      "2091:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13336,
                    "src": "2083:11:51"
                  }
                },
                {
                  "function": {
                    "id": 14226,
                    "name": "Helpers.uncheckedAdd",
                    "nameLocations": [
                      "2100:7:51",
                      "2108:12:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13363,
                    "src": "2100:20:51"
                  }
                },
                {
                  "function": {
                    "id": 14227,
                    "name": "Helpers.uncheckedSub",
                    "nameLocations": [
                      "2126:7:51",
                      "2134:12:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13390,
                    "src": "2126:20:51"
                  }
                },
                {
                  "function": {
                    "id": 14228,
                    "name": "Helpers.xor",
                    "nameLocations": [
                      "2152:7:51",
                      "2160:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13416,
                    "src": "2152:11:51"
                  }
                }
              ],
              "global": true,
              "id": 14231,
              "nodeType": "UsingForDirective",
              "src": "1828:357:51",
              "typeName": {
                "id": 14230,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 14229,
                  "name": "UD60x18",
                  "nameLocations": [
                    "2170:7:51"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "2170:7:51"
                },
                "referencedDeclaration": 14179,
                "src": "2170:7:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              }
            },
            {
              "functionList": [
                {
                  "definition": {
                    "id": 14232,
                    "name": "Helpers.add",
                    "nameLocations": [
                      "2498:7:51",
                      "2506:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12987,
                    "src": "2498:11:51"
                  },
                  "operator": "+"
                },
                {
                  "definition": {
                    "id": 14233,
                    "name": "Helpers.and2",
                    "nameLocations": [
                      "2520:7:51",
                      "2528:4:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13036,
                    "src": "2520:12:51"
                  },
                  "operator": "&"
                },
                {
                  "definition": {
                    "id": 14234,
                    "name": "Math.div",
                    "nameLocations": [
                      "2543:4:51",
                      "2548:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13538,
                    "src": "2543:8:51"
                  },
                  "operator": "/"
                },
                {
                  "definition": {
                    "id": 14235,
                    "name": "Helpers.eq",
                    "nameLocations": [
                      "2562:7:51",
                      "2570:2:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13059,
                    "src": "2562:10:51"
                  },
                  "operator": "=="
                },
                {
                  "definition": {
                    "id": 14236,
                    "name": "Helpers.gt",
                    "nameLocations": [
                      "2584:7:51",
                      "2592:2:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13082,
                    "src": "2584:10:51"
                  },
                  "operator": ">"
                },
                {
                  "definition": {
                    "id": 14237,
                    "name": "Helpers.gte",
                    "nameLocations": [
                      "2605:7:51",
                      "2613:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13105,
                    "src": "2605:11:51"
                  },
                  "operator": ">="
                },
                {
                  "definition": {
                    "id": 14238,
                    "name": "Helpers.lt",
                    "nameLocations": [
                      "2628:7:51",
                      "2636:2:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13169,
                    "src": "2628:10:51"
                  },
                  "operator": "<"
                },
                {
                  "definition": {
                    "id": 14239,
                    "name": "Helpers.lte",
                    "nameLocations": [
                      "2649:7:51",
                      "2657:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13192,
                    "src": "2649:11:51"
                  },
                  "operator": "<="
                },
                {
                  "definition": {
                    "id": 14240,
                    "name": "Helpers.or",
                    "nameLocations": [
                      "2672:7:51",
                      "2680:2:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13287,
                    "src": "2672:10:51"
                  },
                  "operator": "|"
                },
                {
                  "definition": {
                    "id": 14241,
                    "name": "Helpers.mod",
                    "nameLocations": [
                      "2693:7:51",
                      "2701:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13218,
                    "src": "2693:11:51"
                  },
                  "operator": "%"
                },
                {
                  "definition": {
                    "id": 14242,
                    "name": "Math.mul",
                    "nameLocations": [
                      "2715:4:51",
                      "2720:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13951,
                    "src": "2715:8:51"
                  },
                  "operator": "*"
                },
                {
                  "definition": {
                    "id": 14243,
                    "name": "Helpers.neq",
                    "nameLocations": [
                      "2734:7:51",
                      "2742:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13241,
                    "src": "2734:11:51"
                  },
                  "operator": "!="
                },
                {
                  "definition": {
                    "id": 14244,
                    "name": "Helpers.not",
                    "nameLocations": [
                      "2757:7:51",
                      "2765:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13261,
                    "src": "2757:11:51"
                  },
                  "operator": "~"
                },
                {
                  "definition": {
                    "id": 14245,
                    "name": "Helpers.sub",
                    "nameLocations": [
                      "2779:7:51",
                      "2787:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13336,
                    "src": "2779:11:51"
                  },
                  "operator": "-"
                },
                {
                  "definition": {
                    "id": 14246,
                    "name": "Helpers.xor",
                    "nameLocations": [
                      "2801:7:51",
                      "2809:3:51"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13416,
                    "src": "2801:11:51"
                  },
                  "operator": "^"
                }
              ],
              "global": true,
              "id": 14249,
              "nodeType": "UsingForDirective",
              "src": "2486:353:51",
              "typeName": {
                "id": 14248,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 14247,
                  "name": "UD60x18",
                  "nameLocations": [
                    "2824:7:51"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14179,
                  "src": "2824:7:51"
                },
                "referencedDeclaration": 14179,
                "src": "2824:7:51",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                  "typeString": "UD60x18"
                }
              }
            }
          ],
          "src": "32:2808:51"
        },
        "id": 51
      },
      "contracts/Diamond.sol": {
        "ast": {
          "absolutePath": "contracts/Diamond.sol",
          "exportedSymbols": {
            "Diamond": [
              14358
            ],
            "DiamondArgs": [
              14266
            ],
            "FunctionNotFound": [
              14259
            ],
            "IDiamondCut": [
              20517
            ],
            "LibDiamond": [
              22819
            ]
          },
          "id": 14359,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14251,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:52"
            },
            {
              "absolutePath": "contracts/libraries/LibDiamond.sol",
              "file": "./libraries/LibDiamond.sol",
              "id": 14253,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14359,
              "sourceUnit": 22820,
              "src": "414:56:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14252,
                    "name": "LibDiamond",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22819,
                    "src": "423:10:52",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IDiamondCut.sol",
              "file": "./interfaces/IDiamondCut.sol",
              "id": 14255,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14359,
              "sourceUnit": 20518,
              "src": "471:59:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14254,
                    "name": "IDiamondCut",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20517,
                    "src": "480:11:52",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "errorSelector": "5416eb98",
              "id": 14259,
              "name": "FunctionNotFound",
              "nameLocation": "585:16:52",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 14258,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 14257,
                    "mutability": "mutable",
                    "name": "_functionSelector",
                    "nameLocation": "609:17:52",
                    "nodeType": "VariableDeclaration",
                    "scope": 14259,
                    "src": "602:24:52",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    },
                    "typeName": {
                      "id": 14256,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "602:6:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "601:26:52"
              },
              "src": "579:49:52"
            },
            {
              "canonicalName": "DiamondArgs",
              "id": 14266,
              "members": [
                {
                  "constant": false,
                  "id": 14261,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "782:5:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 14266,
                  "src": "774:13:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14260,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "774:7:52",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14263,
                  "mutability": "mutable",
                  "name": "init",
                  "nameLocation": "801:4:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 14266,
                  "src": "793:12:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14262,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "793:7:52",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14265,
                  "mutability": "mutable",
                  "name": "initCalldata",
                  "nameLocation": "817:12:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 14266,
                  "src": "811:18:52",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 14264,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "811:5:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "DiamondArgs",
              "nameLocation": "756:11:52",
              "nodeType": "StructDefinition",
              "scope": 14359,
              "src": "749:83:52",
              "visibility": "public"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Diamond",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 14358,
              "linearizedBaseContracts": [
                14358
              ],
              "name": "Diamond",
              "nameLocation": "843:7:52",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 14293,
                    "nodeType": "Block",
                    "src": "946:212:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 14279,
                                "name": "_args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14273,
                                "src": "984:5:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DiamondArgs_$14266_memory_ptr",
                                  "typeString": "struct DiamondArgs memory"
                                }
                              },
                              "id": 14280,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "990:5:52",
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14261,
                              "src": "984:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 14276,
                              "name": "LibDiamond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22819,
                              "src": "956:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LibDiamond_$22819_$",
                                "typeString": "type(library LibDiamond)"
                              }
                            },
                            "id": 14278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "967:16:52",
                            "memberName": "setContractOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22256,
                            "src": "956:27:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 14281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "956:40:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14282,
                        "nodeType": "ExpressionStatement",
                        "src": "956:40:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14286,
                              "name": "_diamondCut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14270,
                              "src": "1028:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IDiamond.FacetCut memory[] memory"
                              }
                            },
                            {
                              "expression": {
                                "id": 14287,
                                "name": "_args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14273,
                                "src": "1041:5:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DiamondArgs_$14266_memory_ptr",
                                  "typeString": "struct DiamondArgs memory"
                                }
                              },
                              "id": 14288,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1047:4:52",
                              "memberName": "init",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14263,
                              "src": "1041:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 14289,
                                "name": "_args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14273,
                                "src": "1053:5:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DiamondArgs_$14266_memory_ptr",
                                  "typeString": "struct DiamondArgs memory"
                                }
                              },
                              "id": 14290,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1059:12:52",
                              "memberName": "initCalldata",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14265,
                              "src": "1053:18:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IDiamond.FacetCut memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 14283,
                              "name": "LibDiamond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22819,
                              "src": "1006:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LibDiamond_$22819_$",
                                "typeString": "type(library LibDiamond)"
                              }
                            },
                            "id": 14285,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1017:10:52",
                            "memberName": "diamondCut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22414,
                            "src": "1006:21:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (struct IDiamond.FacetCut memory[] memory,address,bytes memory)"
                            }
                          },
                          "id": 14291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1006:66:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14292,
                        "nodeType": "ExpressionStatement",
                        "src": "1006:66:52"
                      }
                    ]
                  },
                  "id": 14294,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14274,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14270,
                        "mutability": "mutable",
                        "name": "_diamondCut",
                        "nameLocation": "899:11:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 14294,
                        "src": "869:41:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IDiamond.FacetCut[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 14268,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 14267,
                              "name": "IDiamondCut.FacetCut",
                              "nameLocations": [
                                "869:11:52",
                                "881:8:52"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 20487,
                              "src": "869:20:52"
                            },
                            "referencedDeclaration": 20487,
                            "src": "869:20:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_FacetCut_$20487_storage_ptr",
                              "typeString": "struct IDiamond.FacetCut"
                            }
                          },
                          "id": 14269,
                          "nodeType": "ArrayTypeName",
                          "src": "869:22:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_storage_$dyn_storage_ptr",
                            "typeString": "struct IDiamond.FacetCut[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14273,
                        "mutability": "mutable",
                        "name": "_args",
                        "nameLocation": "931:5:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 14294,
                        "src": "912:24:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DiamondArgs_$14266_memory_ptr",
                          "typeString": "struct DiamondArgs"
                        },
                        "typeName": {
                          "id": 14272,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 14271,
                            "name": "DiamondArgs",
                            "nameLocations": [
                              "912:11:52"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 14266,
                            "src": "912:11:52"
                          },
                          "referencedDeclaration": 14266,
                          "src": "912:11:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DiamondArgs_$14266_storage_ptr",
                            "typeString": "struct DiamondArgs"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "868:69:52"
                  },
                  "returnParameters": {
                    "id": 14275,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "946:0:52"
                  },
                  "scope": 14358,
                  "src": "857:301:52",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14313,
                    "nodeType": "Block",
                    "src": "1275:69:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14308,
                              "name": "_diamondCut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14298,
                              "src": "1307:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IDiamond.FacetCut memory[] memory"
                              }
                            },
                            {
                              "id": 14309,
                              "name": "_init",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14300,
                              "src": "1320:5:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14310,
                              "name": "_calldata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14302,
                              "src": "1327:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IDiamond.FacetCut memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 14305,
                              "name": "LibDiamond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22819,
                              "src": "1285:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LibDiamond_$22819_$",
                                "typeString": "type(library LibDiamond)"
                              }
                            },
                            "id": 14307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1296:10:52",
                            "memberName": "diamondCut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22414,
                            "src": "1285:21:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (struct IDiamond.FacetCut memory[] memory,address,bytes memory)"
                            }
                          },
                          "id": 14311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1285:52:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14312,
                        "nodeType": "ExpressionStatement",
                        "src": "1285:52:52"
                      }
                    ]
                  },
                  "functionSelector": "1f931c1c",
                  "id": 14314,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "diamondCut",
                  "nameLocation": "1173:10:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14303,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14298,
                        "mutability": "mutable",
                        "name": "_diamondCut",
                        "nameLocation": "1214:11:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 14314,
                        "src": "1184:41:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IDiamond.FacetCut[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 14296,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 14295,
                              "name": "IDiamondCut.FacetCut",
                              "nameLocations": [
                                "1184:11:52",
                                "1196:8:52"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 20487,
                              "src": "1184:20:52"
                            },
                            "referencedDeclaration": 20487,
                            "src": "1184:20:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_FacetCut_$20487_storage_ptr",
                              "typeString": "struct IDiamond.FacetCut"
                            }
                          },
                          "id": 14297,
                          "nodeType": "ArrayTypeName",
                          "src": "1184:22:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_storage_$dyn_storage_ptr",
                            "typeString": "struct IDiamond.FacetCut[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14300,
                        "mutability": "mutable",
                        "name": "_init",
                        "nameLocation": "1235:5:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 14314,
                        "src": "1227:13:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14299,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1227:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14302,
                        "mutability": "mutable",
                        "name": "_calldata",
                        "nameLocation": "1255:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 14314,
                        "src": "1242:22:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14301,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1242:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1183:82:52"
                  },
                  "returnParameters": {
                    "id": 14304,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1275:0:52"
                  },
                  "scope": 14358,
                  "src": "1164:180:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 14352,
                    "nodeType": "Block",
                    "src": "1498:1061:52",
                    "statements": [
                      {
                        "assignments": [
                          14321
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14321,
                            "mutability": "mutable",
                            "name": "ds",
                            "nameLocation": "1542:2:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 14352,
                            "src": "1508:36:52",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                              "typeString": "struct LibDiamond.DiamondStorage"
                            },
                            "typeName": {
                              "id": 14320,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 14319,
                                "name": "LibDiamond.DiamondStorage",
                                "nameLocations": [
                                  "1508:10:52",
                                  "1519:14:52"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 22210,
                                "src": "1508:25:52"
                              },
                              "referencedDeclaration": 22210,
                              "src": "1508:25:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14322,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1508:36:52"
                      },
                      {
                        "assignments": [
                          14324
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14324,
                            "mutability": "mutable",
                            "name": "position",
                            "nameLocation": "1562:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 14352,
                            "src": "1554:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 14323,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1554:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14327,
                        "initialValue": {
                          "expression": {
                            "id": 14325,
                            "name": "LibDiamond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22819,
                            "src": "1573:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_LibDiamond_$22819_$",
                              "typeString": "type(library LibDiamond)"
                            }
                          },
                          "id": 14326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1584:24:52",
                          "memberName": "DIAMOND_STORAGE_POSITION",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22190,
                          "src": "1573:35:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1554:54:52"
                      },
                      {
                        "AST": {
                          "nativeSrc": "1658:43:52",
                          "nodeType": "YulBlock",
                          "src": "1658:43:52",
                          "statements": [
                            {
                              "nativeSrc": "1672:19:52",
                              "nodeType": "YulAssignment",
                              "src": "1672:19:52",
                              "value": {
                                "name": "position",
                                "nativeSrc": "1683:8:52",
                                "nodeType": "YulIdentifier",
                                "src": "1683:8:52"
                              },
                              "variableNames": [
                                {
                                  "name": "ds.slot",
                                  "nativeSrc": "1672:7:52",
                                  "nodeType": "YulIdentifier",
                                  "src": "1672:7:52"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 14321,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "1672:7:52",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 14324,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1683:8:52",
                            "valueSize": 1
                          }
                        ],
                        "id": 14328,
                        "nodeType": "InlineAssembly",
                        "src": "1649:52:52"
                      },
                      {
                        "assignments": [
                          14330
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14330,
                            "mutability": "mutable",
                            "name": "facet",
                            "nameLocation": "1762:5:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 14352,
                            "src": "1754:13:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 14329,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1754:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14337,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "expression": {
                                "id": 14331,
                                "name": "ds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14321,
                                "src": "1770:2:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                  "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                }
                              },
                              "id": 14332,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1773:31:52",
                              "memberName": "facetAddressAndSelectorPosition",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22200,
                              "src": "1770:34:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndSelectorPosition_$22195_storage_$",
                                "typeString": "mapping(bytes4 => struct LibDiamond.FacetAddressAndSelectorPosition storage ref)"
                              }
                            },
                            "id": 14335,
                            "indexExpression": {
                              "expression": {
                                "id": 14333,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1805:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1809:3:52",
                              "memberName": "sig",
                              "nodeType": "MemberAccess",
                              "src": "1805:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1770:43:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_storage",
                              "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition storage ref"
                            }
                          },
                          "id": 14336,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1814:12:52",
                          "memberName": "facetAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22192,
                          "src": "1770:56:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1754:72:52"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 14343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 14338,
                            "name": "facet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14330,
                            "src": "1840:5:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 14341,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1857:1:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 14340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1849:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 14339,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1849:7:52",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 14342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1849:10:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1840:19:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14350,
                        "nodeType": "IfStatement",
                        "src": "1836:82:52",
                        "trueBody": {
                          "id": 14349,
                          "nodeType": "Block",
                          "src": "1861:57:52",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 14345,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "1899:3:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 14346,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1903:3:52",
                                    "memberName": "sig",
                                    "nodeType": "MemberAccess",
                                    "src": "1899:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  ],
                                  "id": 14344,
                                  "name": "FunctionNotFound",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14259,
                                  "src": "1882:16:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes4_$returns$_t_error_$",
                                    "typeString": "function (bytes4) pure returns (error)"
                                  }
                                },
                                "id": 14347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1882:25:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 14348,
                              "nodeType": "RevertStatement",
                              "src": "1875:32:52"
                            }
                          ]
                        }
                      },
                      {
                        "AST": {
                          "nativeSrc": "2025:528:52",
                          "nodeType": "YulBlock",
                          "src": "2025:528:52",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2108:1:52",
                                    "nodeType": "YulLiteral",
                                    "src": "2108:1:52",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2111:1:52",
                                    "nodeType": "YulLiteral",
                                    "src": "2111:1:52",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nativeSrc": "2114:12:52",
                                      "nodeType": "YulIdentifier",
                                      "src": "2114:12:52"
                                    },
                                    "nativeSrc": "2114:14:52",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2114:14:52"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nativeSrc": "2095:12:52",
                                  "nodeType": "YulIdentifier",
                                  "src": "2095:12:52"
                                },
                                "nativeSrc": "2095:34:52",
                                "nodeType": "YulFunctionCall",
                                "src": "2095:34:52"
                              },
                              "nativeSrc": "2095:34:52",
                              "nodeType": "YulExpressionStatement",
                              "src": "2095:34:52"
                            },
                            {
                              "nativeSrc": "2195:65:52",
                              "nodeType": "YulVariableDeclaration",
                              "src": "2195:65:52",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nativeSrc": "2222:3:52",
                                      "nodeType": "YulIdentifier",
                                      "src": "2222:3:52"
                                    },
                                    "nativeSrc": "2222:5:52",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2222:5:52"
                                  },
                                  {
                                    "name": "facet",
                                    "nativeSrc": "2229:5:52",
                                    "nodeType": "YulIdentifier",
                                    "src": "2229:5:52"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2236:1:52",
                                    "nodeType": "YulLiteral",
                                    "src": "2236:1:52",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nativeSrc": "2239:12:52",
                                      "nodeType": "YulIdentifier",
                                      "src": "2239:12:52"
                                    },
                                    "nativeSrc": "2239:14:52",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2239:14:52"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2255:1:52",
                                    "nodeType": "YulLiteral",
                                    "src": "2255:1:52",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2258:1:52",
                                    "nodeType": "YulLiteral",
                                    "src": "2258:1:52",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "delegatecall",
                                  "nativeSrc": "2209:12:52",
                                  "nodeType": "YulIdentifier",
                                  "src": "2209:12:52"
                                },
                                "nativeSrc": "2209:51:52",
                                "nodeType": "YulFunctionCall",
                                "src": "2209:51:52"
                              },
                              "variables": [
                                {
                                  "name": "result",
                                  "nativeSrc": "2199:6:52",
                                  "nodeType": "YulTypedName",
                                  "src": "2199:6:52",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2324:1:52",
                                    "nodeType": "YulLiteral",
                                    "src": "2324:1:52",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2327:1:52",
                                    "nodeType": "YulLiteral",
                                    "src": "2327:1:52",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nativeSrc": "2330:14:52",
                                      "nodeType": "YulIdentifier",
                                      "src": "2330:14:52"
                                    },
                                    "nativeSrc": "2330:16:52",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2330:16:52"
                                  }
                                ],
                                "functionName": {
                                  "name": "returndatacopy",
                                  "nativeSrc": "2309:14:52",
                                  "nodeType": "YulIdentifier",
                                  "src": "2309:14:52"
                                },
                                "nativeSrc": "2309:38:52",
                                "nodeType": "YulFunctionCall",
                                "src": "2309:38:52"
                              },
                              "nativeSrc": "2309:38:52",
                              "nodeType": "YulExpressionStatement",
                              "src": "2309:38:52"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nativeSrc": "2460:31:52",
                                    "nodeType": "YulBlock",
                                    "src": "2460:31:52",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "2469:1:52",
                                              "nodeType": "YulLiteral",
                                              "src": "2469:1:52",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "returndatasize",
                                                "nativeSrc": "2472:14:52",
                                                "nodeType": "YulIdentifier",
                                                "src": "2472:14:52"
                                              },
                                              "nativeSrc": "2472:16:52",
                                              "nodeType": "YulFunctionCall",
                                              "src": "2472:16:52"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "revert",
                                            "nativeSrc": "2462:6:52",
                                            "nodeType": "YulIdentifier",
                                            "src": "2462:6:52"
                                          },
                                          "nativeSrc": "2462:27:52",
                                          "nodeType": "YulFunctionCall",
                                          "src": "2462:27:52"
                                        },
                                        "nativeSrc": "2462:27:52",
                                        "nodeType": "YulExpressionStatement",
                                        "src": "2462:27:52"
                                      }
                                    ]
                                  },
                                  "nativeSrc": "2453:38:52",
                                  "nodeType": "YulCase",
                                  "src": "2453:38:52",
                                  "value": {
                                    "kind": "number",
                                    "nativeSrc": "2458:1:52",
                                    "nodeType": "YulLiteral",
                                    "src": "2458:1:52",
                                    "type": "",
                                    "value": "0"
                                  }
                                },
                                {
                                  "body": {
                                    "nativeSrc": "2512:31:52",
                                    "nodeType": "YulBlock",
                                    "src": "2512:31:52",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "2521:1:52",
                                              "nodeType": "YulLiteral",
                                              "src": "2521:1:52",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "returndatasize",
                                                "nativeSrc": "2524:14:52",
                                                "nodeType": "YulIdentifier",
                                                "src": "2524:14:52"
                                              },
                                              "nativeSrc": "2524:16:52",
                                              "nodeType": "YulFunctionCall",
                                              "src": "2524:16:52"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "return",
                                            "nativeSrc": "2514:6:52",
                                            "nodeType": "YulIdentifier",
                                            "src": "2514:6:52"
                                          },
                                          "nativeSrc": "2514:27:52",
                                          "nodeType": "YulFunctionCall",
                                          "src": "2514:27:52"
                                        },
                                        "nativeSrc": "2514:27:52",
                                        "nodeType": "YulExpressionStatement",
                                        "src": "2514:27:52"
                                      }
                                    ]
                                  },
                                  "nativeSrc": "2504:39:52",
                                  "nodeType": "YulCase",
                                  "src": "2504:39:52",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "name": "result",
                                "nativeSrc": "2434:6:52",
                                "nodeType": "YulIdentifier",
                                "src": "2434:6:52"
                              },
                              "nativeSrc": "2427:116:52",
                              "nodeType": "YulSwitch",
                              "src": "2427:116:52"
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 14330,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2229:5:52",
                            "valueSize": 1
                          }
                        ],
                        "id": 14351,
                        "nodeType": "InlineAssembly",
                        "src": "2016:537:52"
                      }
                    ]
                  },
                  "id": 14353,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14315,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1478:2:52"
                  },
                  "returnParameters": {
                    "id": 14316,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1498:0:52"
                  },
                  "scope": 14358,
                  "src": "1470:1089:52",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 14356,
                    "nodeType": "Block",
                    "src": "2592:3:52",
                    "statements": []
                  },
                  "id": 14357,
                  "implemented": true,
                  "kind": "receive",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14354,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2572:2:52"
                  },
                  "returnParameters": {
                    "id": 14355,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2592:0:52"
                  },
                  "scope": 14358,
                  "src": "2565:30:52",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 14359,
              "src": "834:1763:52",
              "usedErrors": [
                14259,
                22131,
                22136,
                22142,
                22146,
                22150,
                22155,
                22159,
                22163,
                22167,
                22171,
                22175,
                22179,
                22185
              ],
              "usedEvents": [
                22228,
                22298
              ]
            }
          ],
          "src": "40:2558:52"
        },
        "id": 52
      },
      "contracts/DiamondTestContract.sol": {
        "ast": {
          "absolutePath": "contracts/DiamondTestContract.sol",
          "exportedSymbols": {
            "CannotAddFunctionToDiamondThatAlreadyExists": [
              22150
            ],
            "CannotAddSelectorsToZeroAddress": [
              22136
            ],
            "CannotRemoveFunctionThatDoesNotExist": [
              22175
            ],
            "CannotRemoveImmutableFunction": [
              22179
            ],
            "CannotReplaceFunctionThatDoesNotExists": [
              22167
            ],
            "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet": [
              22163
            ],
            "CannotReplaceFunctionsFromFacetWithZeroAddress": [
              22155
            ],
            "CannotReplaceImmutableFunction": [
              22159
            ],
            "DiamondTestContract": [
              14416
            ],
            "IDiamond": [
              20498
            ],
            "IDiamondCut": [
              20517
            ],
            "IncorrectFacetCutAction": [
              22146
            ],
            "InitializationFunctionReverted": [
              22185
            ],
            "LibDiamond": [
              22819
            ],
            "NoBytecodeAtAddress": [
              22142
            ],
            "NoSelectorsGivenToAdd": [
              22121
            ],
            "NoSelectorsProvidedForFacetForCut": [
              22131
            ],
            "NotContractOwner": [
              22127
            ],
            "RemoveFacetAddressMustBeZeroAddress": [
              22171
            ]
          },
          "id": 14417,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14360,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:53"
            },
            {
              "absolutePath": "contracts/libraries/LibDiamond.sol",
              "file": "./libraries/LibDiamond.sol",
              "id": 14361,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14417,
              "sourceUnit": 22820,
              "src": "66:36:53",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IDiamondCut.sol",
              "file": "./interfaces/IDiamondCut.sol",
              "id": 14362,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14417,
              "sourceUnit": 20518,
              "src": "103:38:53",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "DiamondTestContract",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 14416,
              "linearizedBaseContracts": [
                14416
              ],
              "name": "DiamondTestContract",
              "nameLocation": "152:19:53",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 14364,
                  "libraryName": {
                    "id": 14363,
                    "name": "LibDiamond",
                    "nameLocations": [
                      "184:10:53"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 22819,
                    "src": "184:10:53"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "178:23:53"
                },
                {
                  "body": {
                    "id": 14375,
                    "nodeType": "Block",
                    "src": "261:55:53",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14372,
                              "name": "_newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14366,
                              "src": "299:9:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 14369,
                              "name": "LibDiamond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22819,
                              "src": "271:10:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LibDiamond_$22819_$",
                                "typeString": "type(library LibDiamond)"
                              }
                            },
                            "id": 14371,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "282:16:53",
                            "memberName": "setContractOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22256,
                            "src": "271:27:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 14373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "271:38:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14374,
                        "nodeType": "ExpressionStatement",
                        "src": "271:38:53"
                      }
                    ]
                  },
                  "functionSelector": "a34d42b8",
                  "id": 14376,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setContractOwner",
                  "nameLocation": "216:16:53",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14367,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14366,
                        "mutability": "mutable",
                        "name": "_newOwner",
                        "nameLocation": "241:9:53",
                        "nodeType": "VariableDeclaration",
                        "scope": 14376,
                        "src": "233:17:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14365,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "233:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "232:19:53"
                  },
                  "returnParameters": {
                    "id": 14368,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "261:0:53"
                  },
                  "scope": 14416,
                  "src": "207:109:53",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 14385,
                    "nodeType": "Block",
                    "src": "379:50:53",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 14381,
                              "name": "LibDiamond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22819,
                              "src": "396:10:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LibDiamond_$22819_$",
                                "typeString": "type(library LibDiamond)"
                              }
                            },
                            "id": 14382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "407:13:53",
                            "memberName": "contractOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22268,
                            "src": "396:24:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 14383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "396:26:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 14380,
                        "id": 14384,
                        "nodeType": "Return",
                        "src": "389:33:53"
                      }
                    ]
                  },
                  "functionSelector": "ce606ee0",
                  "id": 14386,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "contractOwner",
                  "nameLocation": "331:13:53",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14377,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "344:2:53"
                  },
                  "returnParameters": {
                    "id": 14380,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14379,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14386,
                        "src": "370:7:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14378,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "370:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "369:9:53"
                  },
                  "scope": 14416,
                  "src": "322:107:53",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 14405,
                    "nodeType": "Block",
                    "src": "546:69:53",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14400,
                              "name": "_diamondCut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14390,
                              "src": "578:11:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IDiamond.FacetCut memory[] memory"
                              }
                            },
                            {
                              "id": 14401,
                              "name": "_init",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14392,
                              "src": "591:5:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14402,
                              "name": "_calldata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14394,
                              "src": "598:9:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IDiamond.FacetCut memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 14397,
                              "name": "LibDiamond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22819,
                              "src": "556:10:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LibDiamond_$22819_$",
                                "typeString": "type(library LibDiamond)"
                              }
                            },
                            "id": 14399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "567:10:53",
                            "memberName": "diamondCut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22414,
                            "src": "556:21:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (struct IDiamond.FacetCut memory[] memory,address,bytes memory)"
                            }
                          },
                          "id": 14403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "556:52:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14404,
                        "nodeType": "ExpressionStatement",
                        "src": "556:52:53"
                      }
                    ]
                  },
                  "functionSelector": "1f931c1c",
                  "id": 14406,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "diamondCut",
                  "nameLocation": "444:10:53",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14395,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14390,
                        "mutability": "mutable",
                        "name": "_diamondCut",
                        "nameLocation": "485:11:53",
                        "nodeType": "VariableDeclaration",
                        "scope": 14406,
                        "src": "455:41:53",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IDiamond.FacetCut[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 14388,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 14387,
                              "name": "IDiamondCut.FacetCut",
                              "nameLocations": [
                                "455:11:53",
                                "467:8:53"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 20487,
                              "src": "455:20:53"
                            },
                            "referencedDeclaration": 20487,
                            "src": "455:20:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_FacetCut_$20487_storage_ptr",
                              "typeString": "struct IDiamond.FacetCut"
                            }
                          },
                          "id": 14389,
                          "nodeType": "ArrayTypeName",
                          "src": "455:22:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_storage_$dyn_storage_ptr",
                            "typeString": "struct IDiamond.FacetCut[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14392,
                        "mutability": "mutable",
                        "name": "_init",
                        "nameLocation": "506:5:53",
                        "nodeType": "VariableDeclaration",
                        "scope": 14406,
                        "src": "498:13:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14391,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "498:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14394,
                        "mutability": "mutable",
                        "name": "_calldata",
                        "nameLocation": "526:9:53",
                        "nodeType": "VariableDeclaration",
                        "scope": 14406,
                        "src": "513:22:53",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14393,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "513:5:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "454:82:53"
                  },
                  "returnParameters": {
                    "id": 14396,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "546:0:53"
                  },
                  "scope": 14416,
                  "src": "435:180:53",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 14414,
                    "nodeType": "Block",
                    "src": "669:52:53",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 14409,
                              "name": "LibDiamond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22819,
                              "src": "679:10:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LibDiamond_$22819_$",
                                "typeString": "type(library LibDiamond)"
                              }
                            },
                            "id": 14411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "690:22:53",
                            "memberName": "enforceIsContractOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22288,
                            "src": "679:33:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 14412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "679:35:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14413,
                        "nodeType": "ExpressionStatement",
                        "src": "679:35:53"
                      }
                    ]
                  },
                  "functionSelector": "d1670914",
                  "id": 14415,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "enforceIsContractOwner",
                  "nameLocation": "630:22:53",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14407,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "652:2:53"
                  },
                  "returnParameters": {
                    "id": 14408,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "669:0:53"
                  },
                  "scope": 14416,
                  "src": "621:100:53",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 14417,
              "src": "143:580:53",
              "usedErrors": [
                22127,
                22131,
                22136,
                22142,
                22146,
                22150,
                22155,
                22159,
                22163,
                22167,
                22171,
                22175,
                22179,
                22185
              ],
              "usedEvents": [
                22228,
                22298
              ]
            }
          ],
          "src": "40:684:53"
        },
        "id": 53
      },
      "contracts/GenericToken.sol": {
        "ast": {
          "absolutePath": "contracts/GenericToken.sol",
          "exportedSymbols": {
            "Context": [
              1442
            ],
            "ERC20": [
              968
            ],
            "ERC20Burnable": [
              1092
            ],
            "ERC20Pausable": [
              1126
            ],
            "GenericToken": [
              14532
            ],
            "Ownable": [
              147
            ],
            "Pausable": [
              1624
            ]
          },
          "id": 14533,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14418,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "59:24:54"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
              "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
              "id": 14420,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14533,
              "sourceUnit": 969,
              "src": "85:70:54",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14419,
                    "name": "ERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 968,
                    "src": "94:5:54",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol",
              "file": "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol",
              "id": 14422,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14533,
              "sourceUnit": 1093,
              "src": "156:97:54",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14421,
                    "name": "ERC20Burnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1092,
                    "src": "165:13:54",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol",
              "file": "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol",
              "id": 14423,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14533,
              "sourceUnit": 1127,
              "src": "254:74:54",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
              "file": "@openzeppelin/contracts/access/Ownable.sol",
              "id": 14424,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14533,
              "sourceUnit": 148,
              "src": "329:52:54",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 14426,
                    "name": "ERC20",
                    "nameLocations": [
                      "896:5:54"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 968,
                    "src": "896:5:54"
                  },
                  "id": 14427,
                  "nodeType": "InheritanceSpecifier",
                  "src": "896:5:54"
                },
                {
                  "baseName": {
                    "id": 14428,
                    "name": "ERC20Burnable",
                    "nameLocations": [
                      "903:13:54"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1092,
                    "src": "903:13:54"
                  },
                  "id": 14429,
                  "nodeType": "InheritanceSpecifier",
                  "src": "903:13:54"
                },
                {
                  "baseName": {
                    "id": 14430,
                    "name": "ERC20Pausable",
                    "nameLocations": [
                      "918:13:54"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1126,
                    "src": "918:13:54"
                  },
                  "id": 14431,
                  "nodeType": "InheritanceSpecifier",
                  "src": "918:13:54"
                },
                {
                  "baseName": {
                    "id": 14432,
                    "name": "Ownable",
                    "nameLocations": [
                      "933:7:54"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 147,
                    "src": "933:7:54"
                  },
                  "id": 14433,
                  "nodeType": "InheritanceSpecifier",
                  "src": "933:7:54"
                }
              ],
              "canonicalName": "GenericToken",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 14425,
                "nodeType": "StructuredDocumentation",
                "src": "383:487:54",
                "text": " @title GenericToken\n @notice This contract is a generic token adhering to the ERC20 standard,\n  using the OpenZeppelin template libary for battletested functionality.\n  It incorporates the standard ERC20 functions, enhanced with Minting\n  and Burning, Pausable in case of emergencies and AccessControl for locking\n  down the administrative functions.\n  For demonstrative purposes, 1 million GT tokens are pre-mined to the address\n  deploying this contract."
              },
              "fullyImplemented": true,
              "id": 14532,
              "linearizedBaseContracts": [
                14532,
                147,
                1126,
                1624,
                1092,
                968,
                193,
                1152,
                1046,
                1442
              ],
              "name": "GenericToken",
              "nameLocation": "880:12:54",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 14459,
                    "nodeType": "Block",
                    "src": "1045:64:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 14449,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1061:3:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14450,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1065:6:54",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1061:10:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14456,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "315f3030305f303030",
                                "id": 14451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1073:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000000_by_1",
                                  "typeString": "int_const 1000000"
                                },
                                "value": "1_000_000"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14455,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 14452,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1085:2:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 14453,
                                    "name": "decimals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 532,
                                    "src": "1091:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                                      "typeString": "function () view returns (uint8)"
                                    }
                                  },
                                  "id": 14454,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1091:10:54",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "1085:16:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1073:28:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14448,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 808,
                            "src": "1055:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 14457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1055:47:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14458,
                        "nodeType": "ExpressionStatement",
                        "src": "1055:47:54"
                      }
                    ]
                  },
                  "id": 14460,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 14440,
                          "name": "name_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14435,
                          "src": "1009:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 14441,
                          "name": "symbol_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14437,
                          "src": "1016:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "id": 14442,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 14439,
                        "name": "ERC20",
                        "nameLocations": [
                          "1003:5:54"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 968,
                        "src": "1003:5:54"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1003:21:54"
                    },
                    {
                      "arguments": [
                        {
                          "expression": {
                            "id": 14444,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1033:3:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 14445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1037:6:54",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1033:10:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 14446,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 14443,
                        "name": "Ownable",
                        "nameLocations": [
                          "1025:7:54"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 147,
                        "src": "1025:7:54"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1025:19:54"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14438,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14435,
                        "mutability": "mutable",
                        "name": "name_",
                        "nameLocation": "973:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 14460,
                        "src": "959:19:54",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 14434,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "959:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14437,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nameLocation": "994:7:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 14460,
                        "src": "980:21:54",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 14436,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "980:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "958:44:54"
                  },
                  "returnParameters": {
                    "id": 14447,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1045:0:54"
                  },
                  "scope": 14532,
                  "src": "947:162:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14474,
                    "nodeType": "Block",
                    "src": "1178:34:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14470,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14462,
                              "src": "1194:2:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14471,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14464,
                              "src": "1198:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14469,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 808,
                            "src": "1188:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 14472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1188:17:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14473,
                        "nodeType": "ExpressionStatement",
                        "src": "1188:17:54"
                      }
                    ]
                  },
                  "functionSelector": "40c10f19",
                  "id": 14475,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 14467,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 14466,
                        "name": "whenNotPaused",
                        "nameLocations": [
                          "1164:13:54"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1549,
                        "src": "1164:13:54"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1164:13:54"
                    }
                  ],
                  "name": "mint",
                  "nameLocation": "1124:4:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14465,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14462,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "1137:2:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 14475,
                        "src": "1129:10:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14461,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1129:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14464,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1149:6:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 14475,
                        "src": "1141:14:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14463,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1141:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1128:28:54"
                  },
                  "returnParameters": {
                    "id": 14468,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1178:0:54"
                  },
                  "scope": 14532,
                  "src": "1115:97:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1070
                  ],
                  "body": {
                    "id": 14488,
                    "nodeType": "Block",
                    "src": "1722:44:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 14483,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1424,
                                "src": "1738:10:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 14484,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1738:12:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14485,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14478,
                              "src": "1752:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14482,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 841,
                            "src": "1732:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 14486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1732:27:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14487,
                        "nodeType": "ExpressionStatement",
                        "src": "1732:27:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14476,
                    "nodeType": "StructuredDocumentation",
                    "src": "1218:445:54",
                    "text": " @dev Destroys `amount` tokens from `account`, reducing the total supply.\n Emits a Transfer event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens.\n @param amount       The amount of tokens to burn from the sender of the transaction, denominated by the\n decimals() function"
                  },
                  "functionSelector": "42966c68",
                  "id": 14489,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nameLocation": "1677:4:54",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14480,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1713:8:54"
                  },
                  "parameters": {
                    "id": 14479,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14478,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1690:6:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 14489,
                        "src": "1682:14:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14477,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1682:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1681:16:54"
                  },
                  "returnParameters": {
                    "id": 14481,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1722:0:54"
                  },
                  "scope": 14532,
                  "src": "1668:98:54",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    775,
                    1125
                  ],
                  "body": {
                    "id": 14510,
                    "nodeType": "Block",
                    "src": "2321:48:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14505,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14492,
                              "src": "2345:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14506,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14494,
                              "src": "2351:2:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14507,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14496,
                              "src": "2355:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 14502,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "2331:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_GenericToken_$14532_$",
                                "typeString": "type(contract super GenericToken)"
                              }
                            },
                            "id": 14504,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2337:7:54",
                            "memberName": "_update",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1125,
                            "src": "2331:13:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 14508,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2331:31:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14509,
                        "nodeType": "ExpressionStatement",
                        "src": "2331:31:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14490,
                    "nodeType": "StructuredDocumentation",
                    "src": "1772:445:54",
                    "text": " @dev Hook that is called before any transfer of tokens. This includes minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of `from`'s tokens will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of `from`'s tokens will be burned.\n - `from` and `to` are never both zero."
                  },
                  "id": 14511,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_update",
                  "nameLocation": "2231:7:54",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14500,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 14498,
                        "name": "ERC20",
                        "nameLocations": [
                          "2299:5:54"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 968,
                        "src": "2299:5:54"
                      },
                      {
                        "id": 14499,
                        "name": "ERC20Pausable",
                        "nameLocations": [
                          "2306:13:54"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1126,
                        "src": "2306:13:54"
                      }
                    ],
                    "src": "2290:30:54"
                  },
                  "parameters": {
                    "id": 14497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14492,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2247:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 14511,
                        "src": "2239:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14491,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2239:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14494,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2261:2:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 14511,
                        "src": "2253:10:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14493,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2253:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14496,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2273:6:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 14511,
                        "src": "2265:14:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14495,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2265:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2238:42:54"
                  },
                  "returnParameters": {
                    "id": 14501,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2321:0:54"
                  },
                  "scope": 14532,
                  "src": "2222:147:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14520,
                    "nodeType": "Block",
                    "src": "2522:25:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14517,
                            "name": "_pause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1607,
                            "src": "2532:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 14518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2532:8:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14519,
                        "nodeType": "ExpressionStatement",
                        "src": "2532:8:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14512,
                    "nodeType": "StructuredDocumentation",
                    "src": "2375:108:54",
                    "text": "@dev Pauses all token transfers.\n @notice This function can only be called by the contract owner."
                  },
                  "functionSelector": "8456cb59",
                  "id": 14521,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 14515,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 14514,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "2512:9:54"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 58,
                        "src": "2512:9:54"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2512:9:54"
                    }
                  ],
                  "name": "pause",
                  "nameLocation": "2497:5:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14513,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2502:2:54"
                  },
                  "returnParameters": {
                    "id": 14516,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2522:0:54"
                  },
                  "scope": 14532,
                  "src": "2488:59:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14530,
                    "nodeType": "Block",
                    "src": "2704:27:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14527,
                            "name": "_unpause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1623,
                            "src": "2714:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 14528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2714:10:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14529,
                        "nodeType": "ExpressionStatement",
                        "src": "2714:10:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14522,
                    "nodeType": "StructuredDocumentation",
                    "src": "2553:110:54",
                    "text": "@dev Unpauses all token transfers.\n @notice This function can only be called by the contract owner."
                  },
                  "functionSelector": "3f4ba83a",
                  "id": 14531,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 14525,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 14524,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "2694:9:54"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 58,
                        "src": "2694:9:54"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2694:9:54"
                    }
                  ],
                  "name": "unpause",
                  "nameLocation": "2677:7:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14523,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2684:2:54"
                  },
                  "returnParameters": {
                    "id": 14526,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2704:0:54"
                  },
                  "scope": 14532,
                  "src": "2668:63:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 14533,
              "src": "871:1862:54",
              "usedErrors": [
                13,
                18,
                163,
                168,
                173,
                182,
                187,
                192,
                1538,
                1541
              ],
              "usedEvents": [
                24,
                980,
                989,
                1530,
                1535
              ]
            }
          ],
          "src": "59:2675:54"
        },
        "id": 54
      },
      "contracts/facets/BondFacet.sol": {
        "ast": {
          "absolutePath": "contracts/facets/BondFacet.sol",
          "exportedSymbols": {
            "BokkyPooBahsDateTimeLibrary": [
              22113
            ],
            "BondFacet": [
              18048
            ],
            "BondInitParams": [
              22863
            ],
            "BondStorage": [
              18600
            ],
            "Casting": [
              14175
            ],
            "CastingErrors": [
              12281
            ],
            "Common": [
              13419
            ],
            "E": [
              12689
            ],
            "ERC1155Facet": [
              20310
            ],
            "ERC165": [
              3050
            ],
            "ERC20": [
              968
            ],
            "EXP2_MAX_INPUT": [
              12713
            ],
            "EXP_MAX_INPUT": [
              12700
            ],
            "Errors": [
              13420
            ],
            "HALF_UNIT": [
              12724
            ],
            "Helpers": [
              14176
            ],
            "IERC1155Receiver": [
              453
            ],
            "IERC165": [
              3062
            ],
            "LOG2_10": [
              12735
            ],
            "LOG2_E": [
              12746
            ],
            "MAX_UD60x18": [
              12757
            ],
            "MAX_UINT128": [
              6628
            ],
            "MAX_UINT40": [
              6636
            ],
            "MAX_WHOLE_UD60x18": [
              12768
            ],
            "Math": [
              14177
            ],
            "OwnershipFacet": [
              20472
            ],
            "PI": [
              12776
            ],
            "PRBMath_UD60x18_Ceil_Overflow": [
              12875
            ],
            "PRBMath_UD60x18_Convert_Overflow": [
              12880
            ],
            "PRBMath_UD60x18_Exp2_InputTooBig": [
              12892
            ],
            "PRBMath_UD60x18_Exp_InputTooBig": [
              12886
            ],
            "PRBMath_UD60x18_Gm_Overflow": [
              12901
            ],
            "PRBMath_UD60x18_IntoSD1x18_Overflow": [
              12907
            ],
            "PRBMath_UD60x18_IntoSD21x18_Overflow": [
              12913
            ],
            "PRBMath_UD60x18_IntoSD59x18_Overflow": [
              12919
            ],
            "PRBMath_UD60x18_IntoUD21x18_Overflow": [
              12931
            ],
            "PRBMath_UD60x18_IntoUD2x18_Overflow": [
              12925
            ],
            "PRBMath_UD60x18_IntoUint128_Overflow": [
              12937
            ],
            "PRBMath_UD60x18_IntoUint40_Overflow": [
              12943
            ],
            "PRBMath_UD60x18_Log_InputTooSmall": [
              12949
            ],
            "PRBMath_UD60x18_Sqrt_Overflow": [
              12955
            ],
            "SD1x18": [
              8686
            ],
            "SD21x18": [
              9041
            ],
            "SD59x18": [
              11699
            ],
            "UD21x18": [
              12015
            ],
            "UD2x18": [
              12269
            ],
            "UD60x18": [
              14179
            ],
            "UNIT": [
              12787
            ],
            "UNIT_SQUARED": [
              12798
            ],
            "ZERO": [
              12806
            ],
            "add": [
              12987
            ],
            "and": [
              13010
            ],
            "and2": [
              13036
            ],
            "avg": [
              13480
            ],
            "ceil": [
              13509
            ],
            "convert": [
              12834,
              12865
            ],
            "div": [
              13538
            ],
            "eq": [
              13059
            ],
            "exp": [
              13583
            ],
            "exp2": [
              13629
            ],
            "floor": [
              13641
            ],
            "frac": [
              13653
            ],
            "gm": [
              13720
            ],
            "gt": [
              13082
            ],
            "gte": [
              13105
            ],
            "intoSD1x18": [
              12354
            ],
            "intoSD21x18": [
              12402
            ],
            "intoSD59x18": [
              12522
            ],
            "intoUD21x18": [
              12480
            ],
            "intoUD2x18": [
              12441
            ],
            "intoUint128": [
              12574
            ],
            "intoUint256": [
              12539
            ],
            "intoUint40": [
              12609
            ],
            "inv": [
              13742
            ],
            "isZero": [
              13123
            ],
            "ln": [
              13768
            ],
            "log10": [
              13819
            ],
            "log2": [
              13923
            ],
            "lshift": [
              13146
            ],
            "lt": [
              13169
            ],
            "lte": [
              13192
            ],
            "mod": [
              13218
            ],
            "mul": [
              13951
            ],
            "neq": [
              13241
            ],
            "not": [
              13261
            ],
            "or": [
              13287
            ],
            "pow": [
              14058
            ],
            "powu": [
              14130
            ],
            "rshift": [
              13310
            ],
            "sqrt": [
              14172
            ],
            "sub": [
              13336
            ],
            "uEXP2_MAX_INPUT": [
              12706
            ],
            "uEXP_MAX_INPUT": [
              12693
            ],
            "uHALF_UNIT": [
              12717
            ],
            "uLOG2_10": [
              12728
            ],
            "uLOG2_E": [
              12739
            ],
            "uMAX_SD1x18": [
              8609
            ],
            "uMAX_SD21x18": [
              8964
            ],
            "uMAX_SD59x18": [
              9662
            ],
            "uMAX_UD21x18": [
              11974
            ],
            "uMAX_UD2x18": [
              12228
            ],
            "uMAX_UD60x18": [
              12750
            ],
            "uMAX_WHOLE_UD60x18": [
              12761
            ],
            "uUNIT": [
              12780
            ],
            "uUNIT_SQUARED": [
              12791
            ],
            "ud": [
              12626
            ],
            "ud60x18": [
              12643
            ],
            "uncheckedAdd": [
              13363
            ],
            "uncheckedSub": [
              13390
            ],
            "unwrap": [
              12660
            ],
            "wrap": [
              12677
            ],
            "xor": [
              13416
            ]
          },
          "id": 18049,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14534,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:55"
            },
            {
              "absolutePath": "contracts/facets/ERC1155Facet.sol",
              "file": "./ERC1155Facet.sol",
              "id": 14536,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18049,
              "sourceUnit": 20311,
              "src": "66:50:55",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14535,
                    "name": "ERC1155Facet",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20310,
                    "src": "75:12:55",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/UD60x18.sol",
              "file": "@prb/math/src/UD60x18.sol",
              "id": 14537,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18049,
              "sourceUnit": 8338,
              "src": "117:35:55",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/BokkyPooBahsDateTimeLibrary.sol",
              "file": "../libraries/BokkyPooBahsDateTimeLibrary.sol",
              "id": 14539,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18049,
              "sourceUnit": 22114,
              "src": "153:91:55",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14538,
                    "name": "BokkyPooBahsDateTimeLibrary",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22113,
                    "src": "162:27:55",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/StructBondInit.sol",
              "file": "../libraries/StructBondInit.sol",
              "id": 14541,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18049,
              "sourceUnit": 22864,
              "src": "245:65:55",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14540,
                    "name": "BondInitParams",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22863,
                    "src": "254:14:55",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/facets/BondStorage.sol",
              "file": "./BondStorage.sol",
              "id": 14543,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18049,
              "sourceUnit": 18601,
              "src": "311:48:55",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14542,
                    "name": "BondStorage",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18600,
                    "src": "320:11:55",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/facets/OwnershipFacet.sol",
              "file": "./OwnershipFacet.sol",
              "id": 14545,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18049,
              "sourceUnit": 20473,
              "src": "360:54:55",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14544,
                    "name": "OwnershipFacet",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20472,
                    "src": "369:14:55",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
              "id": 14547,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18049,
              "sourceUnit": 454,
              "src": "415:94:55",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14546,
                    "name": "IERC1155Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 453,
                    "src": "424:16:55",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "file": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "id": 14550,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18049,
              "sourceUnit": 3051,
              "src": "510:89:55",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14548,
                    "name": "ERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3050,
                    "src": "519:6:55",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 14549,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3062,
                    "src": "527:7:55",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
              "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
              "id": 14552,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18049,
              "sourceUnit": 969,
              "src": "601:70:55",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 14551,
                    "name": "ERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 968,
                    "src": "610:5:55",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 14553,
                    "name": "BondStorage",
                    "nameLocations": [
                      "695:11:55"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 18600,
                    "src": "695:11:55"
                  },
                  "id": 14554,
                  "nodeType": "InheritanceSpecifier",
                  "src": "695:11:55"
                },
                {
                  "baseName": {
                    "id": 14555,
                    "name": "OwnershipFacet",
                    "nameLocations": [
                      "708:14:55"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 20472,
                    "src": "708:14:55"
                  },
                  "id": 14556,
                  "nodeType": "InheritanceSpecifier",
                  "src": "708:14:55"
                },
                {
                  "baseName": {
                    "id": 14557,
                    "name": "IERC1155Receiver",
                    "nameLocations": [
                      "724:16:55"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 453,
                    "src": "724:16:55"
                  },
                  "id": 14558,
                  "nodeType": "InheritanceSpecifier",
                  "src": "724:16:55"
                },
                {
                  "baseName": {
                    "id": 14559,
                    "name": "ERC165",
                    "nameLocations": [
                      "742:6:55"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3050,
                    "src": "742:6:55"
                  },
                  "id": 14560,
                  "nodeType": "InheritanceSpecifier",
                  "src": "742:6:55"
                }
              ],
              "canonicalName": "BondFacet",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 18048,
              "linearizedBaseContracts": [
                18048,
                3050,
                453,
                3062,
                20472,
                18600
              ],
              "name": "BondFacet",
              "nameLocation": "682:9:55",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 14562,
                  "mutability": "mutable",
                  "name": "__bond",
                  "nameLocation": "771:6:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 18048,
                  "src": "755:22:55",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14561,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "755:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 14564,
                  "mutability": "mutable",
                  "name": "__currencyAddress",
                  "nameLocation": "799:17:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 18048,
                  "src": "783:33:55",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14563,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "783:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "eventSelector": "f5d1b3af18a6e549e23801b7a43bec54699badce37e0f7e96e0a4ebb65143d74",
                  "id": 14580,
                  "name": "BondInitializedPart1",
                  "nameLocation": "843:20:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14579,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14566,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "881:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14580,
                        "src": "873:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14565,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "873:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14568,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "coupure",
                        "nameLocation": "905:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14580,
                        "src": "897:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14567,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "897:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14570,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "interestNum",
                        "nameLocation": "930:11:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14580,
                        "src": "922:19:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14569,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "922:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14572,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "interestDen",
                        "nameLocation": "959:11:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14580,
                        "src": "951:19:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14571,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "951:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14574,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "withholdingTaxNum",
                        "nameLocation": "988:17:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14580,
                        "src": "980:25:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14573,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "980:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14576,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "withholdingTaxDen",
                        "nameLocation": "1023:17:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14580,
                        "src": "1015:25:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14575,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1015:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14578,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "issuer",
                        "nameLocation": "1058:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14580,
                        "src": "1050:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14577,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1050:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "863:207:55"
                  },
                  "src": "837:234:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "b42ebd0ad22561f77328ee457d5ba2a08a7c2847ff88c663cca9dcc8c53dc086",
                  "id": 14598,
                  "name": "BondInitializedPart2",
                  "nameLocation": "1083:20:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14597,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14582,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "1121:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14598,
                        "src": "1113:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14581,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1113:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14584,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "periodicInterestRate",
                        "nameLocation": "1145:20:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14598,
                        "src": "1137:28:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14583,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1137:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14586,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "netReturn",
                        "nameLocation": "1183:9:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14598,
                        "src": "1175:17:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14585,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1175:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14588,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "periodicity",
                        "nameLocation": "1210:11:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14598,
                        "src": "1202:19:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14587,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1202:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14590,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "1239:8:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14598,
                        "src": "1231:16:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14589,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1231:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14592,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "methodOfRepayment",
                        "nameLocation": "1265:17:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14598,
                        "src": "1257:25:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14591,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1257:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14594,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "maxSupply",
                        "nameLocation": "1300:9:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14598,
                        "src": "1292:17:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14593,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1292:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14596,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "formOfFinancing",
                        "nameLocation": "1327:15:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14598,
                        "src": "1319:23:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14595,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1319:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1103:245:55"
                  },
                  "src": "1077:272:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "1ada3075f8dc673c9de9ba7c0b8e81065d996d1faa99feb6d0a648c8b7a1516d",
                  "id": 14608,
                  "name": "MinAndMaxAmountSet",
                  "nameLocation": "1361:18:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14607,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14600,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "1388:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14608,
                        "src": "1380:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14599,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1380:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14602,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "minAmount",
                        "nameLocation": "1404:9:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14608,
                        "src": "1396:17:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14601,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1396:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14604,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "maxAmount",
                        "nameLocation": "1423:9:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14608,
                        "src": "1415:17:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14603,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1415:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14606,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "maxAmountPerInvestor",
                        "nameLocation": "1442:20:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14608,
                        "src": "1434:28:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14605,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1434:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1379:84:55"
                  },
                  "src": "1355:109:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "c64d8be5e3585a2141489e772ad1096418b37137a76298a309a5f1095f95f1ca",
                  "id": 14624,
                  "name": "BondParametersEditedPart1",
                  "nameLocation": "1476:25:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14623,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14610,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "1519:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14624,
                        "src": "1511:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14609,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1511:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14612,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "coupure",
                        "nameLocation": "1543:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14624,
                        "src": "1535:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14611,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1535:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14614,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "interestNum",
                        "nameLocation": "1568:11:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14624,
                        "src": "1560:19:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14613,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1560:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14616,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "interestDen",
                        "nameLocation": "1597:11:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14624,
                        "src": "1589:19:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14615,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1589:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14618,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "withholdingTaxNum",
                        "nameLocation": "1626:17:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14624,
                        "src": "1618:25:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14617,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1618:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14620,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "withholdingTaxDen",
                        "nameLocation": "1661:17:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14624,
                        "src": "1653:25:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14619,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1653:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14622,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "issuer",
                        "nameLocation": "1696:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14624,
                        "src": "1688:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14621,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1688:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1501:207:55"
                  },
                  "src": "1470:239:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "182cb671939e46d1345c30b51134e41ef7782a2113747a93b4dc3c31b91ea81e",
                  "id": 14642,
                  "name": "BondParametersEditedPart2",
                  "nameLocation": "1721:25:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14641,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14626,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "1764:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14642,
                        "src": "1756:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14625,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1756:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14628,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "periodicInterestRate",
                        "nameLocation": "1788:20:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14642,
                        "src": "1780:28:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14627,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1780:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14630,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "netReturn",
                        "nameLocation": "1826:9:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14642,
                        "src": "1818:17:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14629,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1818:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14632,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "periodicity",
                        "nameLocation": "1853:11:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14642,
                        "src": "1845:19:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14631,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1845:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14634,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "1882:8:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14642,
                        "src": "1874:16:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14633,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1874:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14636,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "methodOfRepayment",
                        "nameLocation": "1908:17:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14642,
                        "src": "1900:25:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14635,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1900:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14638,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "maxSupply",
                        "nameLocation": "1943:9:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14642,
                        "src": "1935:17:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14637,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1935:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14640,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "formOfFinancing",
                        "nameLocation": "1970:15:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14642,
                        "src": "1962:23:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14639,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1962:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1746:245:55"
                  },
                  "src": "1715:277:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "05b741eb5649daedcc851ef6f057b1bf89b49d12357d31c478c425b6eb1ce9c5",
                  "id": 14650,
                  "name": "CampaignStartAndEndDateSet",
                  "nameLocation": "2004:26:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14649,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14644,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "2039:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14650,
                        "src": "2031:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14643,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2031:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14646,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "startDate",
                        "nameLocation": "2055:9:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14650,
                        "src": "2047:17:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14645,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2047:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14648,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "endDate",
                        "nameLocation": "2074:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14650,
                        "src": "2066:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14647,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2066:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2030:52:55"
                  },
                  "src": "1998:85:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "6d7086ab13fbd1583240e1b6e62b23416e3945f952373732fc183a2a407e462d",
                  "id": 14656,
                  "name": "IssueDateSet",
                  "nameLocation": "2094:12:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14655,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14652,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "2115:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14656,
                        "src": "2107:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14651,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2107:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14654,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "issueDate",
                        "nameLocation": "2131:9:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14656,
                        "src": "2123:17:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14653,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2123:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2106:35:55"
                  },
                  "src": "2088:54:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "1cd0ec0194cd0b5111bf7154d1801ab3549a822fcff5ac188bcaa7f310aa11de",
                  "id": 14675,
                  "name": "CouponsComputed",
                  "nameLocation": "2154:15:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14674,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14658,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "2187:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14675,
                        "src": "2179:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14657,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2179:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14661,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "couponDates",
                        "nameLocation": "2213:11:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14675,
                        "src": "2203:21:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 14659,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2203:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14660,
                          "nodeType": "ArrayTypeName",
                          "src": "2203:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14664,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "remainingCapital",
                        "nameLocation": "2244:16:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14675,
                        "src": "2234:26:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 14662,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2234:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14663,
                          "nodeType": "ArrayTypeName",
                          "src": "2234:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14667,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "capitalRepayments",
                        "nameLocation": "2280:17:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14675,
                        "src": "2270:27:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 14665,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2270:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14666,
                          "nodeType": "ArrayTypeName",
                          "src": "2270:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14670,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "grossCouponRates",
                        "nameLocation": "2317:16:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14675,
                        "src": "2307:26:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 14668,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2307:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14669,
                          "nodeType": "ArrayTypeName",
                          "src": "2307:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14673,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "netCouponRates",
                        "nameLocation": "2353:14:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14675,
                        "src": "2343:24:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 14671,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2343:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14672,
                          "nodeType": "ArrayTypeName",
                          "src": "2343:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2169:204:55"
                  },
                  "src": "2148:226:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "b5c3204064d2ac62821e92f17e7e2c1e9971c89f07fa01b6dab37145db86dc55",
                  "id": 14683,
                  "name": "BondIssued",
                  "nameLocation": "2386:10:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14682,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14677,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "2405:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14683,
                        "src": "2397:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14676,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2397:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14679,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "2421:9:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14683,
                        "src": "2413:17:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14678,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2413:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14681,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "issuedAmount",
                        "nameLocation": "2440:12:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14683,
                        "src": "2432:20:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14680,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2432:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2396:57:55"
                  },
                  "src": "2380:74:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "99c110e7b335cff55cab2cfe92e319ad78396f17234debbb5860886aa0244cca",
                  "id": 14693,
                  "name": "BondsWithdrawn",
                  "nameLocation": "2465:14:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14692,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14685,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondPurchaseId",
                        "nameLocation": "2487:14:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14693,
                        "src": "2480:21:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 14684,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2480:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14687,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "2511:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14693,
                        "src": "2503:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14686,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2503:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14689,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "holder",
                        "nameLocation": "2527:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14693,
                        "src": "2519:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14688,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2519:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14691,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2543:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14693,
                        "src": "2535:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14690,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2535:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2479:71:55"
                  },
                  "src": "2459:92:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "9cc9725ee02d8f0a4d8b30054405939f4d872cc6a5c2d677e02f5bd87e5dea2a",
                  "id": 14701,
                  "name": "BalloonRateSet",
                  "nameLocation": "2562:14:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14700,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14695,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "2585:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14701,
                        "src": "2577:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14694,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2577:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14697,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "balloonRateNum",
                        "nameLocation": "2601:14:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14701,
                        "src": "2593:22:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14696,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2593:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14699,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "balloonRateDen",
                        "nameLocation": "2625:14:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14701,
                        "src": "2617:22:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14698,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2617:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2576:64:55"
                  },
                  "src": "2556:85:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "8a7a5c9c34210b39b0dd6c746e4824f7af2a84c059d4dcbc168a2036d26df990",
                  "id": 14707,
                  "name": "GracePeriodSet",
                  "nameLocation": "2652:14:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14706,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14703,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "2675:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14707,
                        "src": "2667:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14702,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2667:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14705,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "gracePeriodDuration",
                        "nameLocation": "2691:19:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14707,
                        "src": "2683:27:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14704,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2683:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2666:45:55"
                  },
                  "src": "2646:66:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "091a72ed52432e53c748925ef46b36a19f93cb874539b387d4f3b1f92aa33e11",
                  "id": 14713,
                  "name": "CapitalAmortizationFreePeriodSet",
                  "nameLocation": "2723:32:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14712,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14709,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "2764:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14713,
                        "src": "2756:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14708,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2756:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14711,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "capitalAmortizationFreePeriodDuration",
                        "nameLocation": "2780:37:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14713,
                        "src": "2772:45:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14710,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2772:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2755:63:55"
                  },
                  "src": "2717:102:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "f865af89149aa92dd957b447226842542090f013d1c80f4f66f6eb3ea79f8e91",
                  "id": 14719,
                  "name": "InvestorsCountChanged",
                  "nameLocation": "2830:21:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14718,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14715,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "2860:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14719,
                        "src": "2852:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14714,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2852:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14717,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "investorsCount",
                        "nameLocation": "2876:14:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14719,
                        "src": "2868:22:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14716,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2868:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2851:40:55"
                  },
                  "src": "2824:68:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "499925bc28b60b5b11b1841f8f51318fa4484237122fb618e76c3195b37d9eb8",
                  "id": 14725,
                  "name": "RevocationsCountChanged",
                  "nameLocation": "2903:23:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14724,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14721,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "2935:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14725,
                        "src": "2927:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14720,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2927:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14723,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "revocationsCount",
                        "nameLocation": "2951:16:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14725,
                        "src": "2943:24:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14722,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2943:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2926:42:55"
                  },
                  "src": "2897:72:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "ab1902ee37c92d1a78dda53814d64b815e7e3ee287d60843a3dbd6954e3206b4",
                  "id": 14729,
                  "name": "CampaignPaused",
                  "nameLocation": "2981:14:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14728,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14727,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "3004:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14729,
                        "src": "2996:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14726,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2996:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2995:16:55"
                  },
                  "src": "2975:37:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "11aa0bd3fb4d9c5622c703f91610a74140a4f88a7ebc7b4faaeaf52e3cb7aa94",
                  "id": 14733,
                  "name": "CampaignUnpaused",
                  "nameLocation": "3023:16:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14732,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14731,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "3048:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14733,
                        "src": "3040:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14730,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3040:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3039:16:55"
                  },
                  "src": "3017:39:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "2f3e3b3aaadf1f165fa7d634278fa8ee54a0548dbf8fc62a1d301da8f6aa6298",
                  "id": 14739,
                  "name": "PeriodicInterestRateSet",
                  "nameLocation": "3068:23:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14738,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14735,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "3100:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14739,
                        "src": "3092:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14734,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3092:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14737,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "periodicInterest",
                        "nameLocation": "3116:16:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14739,
                        "src": "3108:24:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14736,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3108:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3091:42:55"
                  },
                  "src": "3062:72:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "38db1382a58023a1d5d8aaab1581199c9b7d9ed33223c18beeaab57924aff20f",
                  "id": 14751,
                  "name": "BondTransferred",
                  "nameLocation": "3146:15:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14750,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14741,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondTransferId",
                        "nameLocation": "3178:14:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14751,
                        "src": "3171:21:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 14740,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3171:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14743,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "3202:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14751,
                        "src": "3194:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14742,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3194:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14745,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "oldAccount",
                        "nameLocation": "3218:10:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14751,
                        "src": "3210:18:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14744,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3210:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14747,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "newAccount",
                        "nameLocation": "3238:10:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14751,
                        "src": "3230:18:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14746,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3230:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14749,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "3258:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14751,
                        "src": "3250:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14748,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3250:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3161:109:55"
                  },
                  "src": "3140:131:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "83518b027c8ada9071fa7643b5352e180e42cf5a021d61294e5880408643c97f",
                  "id": 14757,
                  "name": "ReservedAmountChanged",
                  "nameLocation": "3282:21:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14756,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14753,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "3312:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14757,
                        "src": "3304:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14752,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3304:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14755,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "reservedAmount",
                        "nameLocation": "3328:14:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14757,
                        "src": "3320:22:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14754,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3320:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3303:40:55"
                  },
                  "src": "3276:68:55"
                },
                {
                  "anonymous": false,
                  "eventSelector": "359c27da75d8254420b0cb573ef10c3b3991ad4920ec0f74bd539f0f367978ed",
                  "id": 14765,
                  "name": "CapitalClaimAmountSet",
                  "nameLocation": "3356:21:55",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14764,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14759,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "3386:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14765,
                        "src": "3378:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14758,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3378:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14761,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "capitalClaimId",
                        "nameLocation": "3401:14:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14765,
                        "src": "3394:21:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 14760,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3394:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14763,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "capitalAmount",
                        "nameLocation": "3425:13:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14765,
                        "src": "3417:21:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14762,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3417:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3377:62:55"
                  },
                  "src": "3350:90:55"
                },
                {
                  "errorSelector": "a6a992df",
                  "id": 14767,
                  "name": "CampaignIsPaused",
                  "nameLocation": "3466:16:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14766,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3482:2:55"
                  },
                  "src": "3460:25:55"
                },
                {
                  "errorSelector": "c851109a",
                  "id": 14769,
                  "name": "CampaignNotPaused",
                  "nameLocation": "3496:17:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14768,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3513:2:55"
                  },
                  "src": "3490:26:55"
                },
                {
                  "errorSelector": "5cebfd4a",
                  "id": 14771,
                  "name": "CampaignAlreadyPaused",
                  "nameLocation": "3527:21:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14770,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3548:2:55"
                  },
                  "src": "3521:30:55"
                },
                {
                  "errorSelector": "ebd7e129",
                  "id": 14773,
                  "name": "CampaignIsClosed",
                  "nameLocation": "3562:16:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14772,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3578:2:55"
                  },
                  "src": "3556:25:55"
                },
                {
                  "errorSelector": "e2003eba",
                  "id": 14775,
                  "name": "BondAlreadyInitialized",
                  "nameLocation": "3593:22:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14774,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3615:2:55"
                  },
                  "src": "3587:31:55"
                },
                {
                  "errorSelector": "decaae02",
                  "id": 14777,
                  "name": "BondAlreadyIssued",
                  "nameLocation": "3629:17:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14776,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3646:2:55"
                  },
                  "src": "3623:26:55"
                },
                {
                  "errorSelector": "c4d56880",
                  "id": 14779,
                  "name": "BondHasNotBeenIssued",
                  "nameLocation": "3660:20:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14778,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3680:2:55"
                  },
                  "src": "3654:29:55"
                },
                {
                  "errorSelector": "7eec29e0",
                  "id": 14781,
                  "name": "NoMoreBondsToBuy",
                  "nameLocation": "3694:16:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14780,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3710:2:55"
                  },
                  "src": "3688:25:55"
                },
                {
                  "errorSelector": "0d38e32c",
                  "id": 14783,
                  "name": "DurationIsNotAMultpleOfTwelve",
                  "nameLocation": "3725:29:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14782,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3754:2:55"
                  },
                  "src": "3719:38:55"
                },
                {
                  "errorSelector": "ecfbd8cf",
                  "id": 14785,
                  "name": "DurationIsNotAMultpleOfThree",
                  "nameLocation": "3768:28:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14784,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3796:2:55"
                  },
                  "src": "3762:37:55"
                },
                {
                  "errorSelector": "dcbd8c00",
                  "id": 14787,
                  "name": "GracePeriodDurationIsNotAMultpleOfTwelve",
                  "nameLocation": "3811:40:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14786,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3851:2:55"
                  },
                  "src": "3805:49:55"
                },
                {
                  "errorSelector": "07010901",
                  "id": 14789,
                  "name": "GracePeriodDurationIsNotAMultpleOfThree",
                  "nameLocation": "3865:39:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14788,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3904:2:55"
                  },
                  "src": "3859:48:55"
                },
                {
                  "errorSelector": "bebd2292",
                  "id": 14791,
                  "name": "CapitalAmortizationFreePeriodDurationIsNotAMultpleOfTwelve",
                  "nameLocation": "3919:58:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14790,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3977:2:55"
                  },
                  "src": "3913:67:55"
                },
                {
                  "errorSelector": "4f80c6ed",
                  "id": 14793,
                  "name": "CapitalAmortizationFreePeriodDurationIsNotAMultpleOfThree",
                  "nameLocation": "3991:57:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14792,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4048:2:55"
                  },
                  "src": "3985:66:55"
                },
                {
                  "errorSelector": "91df618a",
                  "id": 14795,
                  "name": "OldAccountDoesNotHaveEnoughBonds",
                  "nameLocation": "4063:32:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14794,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4095:2:55"
                  },
                  "src": "4057:41:55"
                },
                {
                  "errorSelector": "f2b4a12c",
                  "id": 14797,
                  "name": "CannotReserveBeforeSignupDate",
                  "nameLocation": "4110:29:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14796,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4139:2:55"
                  },
                  "src": "4104:38:55"
                },
                {
                  "errorSelector": "0c32ed70",
                  "id": 14799,
                  "name": "CannotReserveAfterCampaignEnd",
                  "nameLocation": "4153:29:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14798,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4182:2:55"
                  },
                  "src": "4147:38:55"
                },
                {
                  "errorSelector": "2b42b122",
                  "id": 14801,
                  "name": "ExceedingMaxAmountPerInvestor",
                  "nameLocation": "4196:29:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14800,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4225:2:55"
                  },
                  "src": "4190:38:55"
                },
                {
                  "errorSelector": "1de42a90",
                  "id": 14803,
                  "name": "DivideByZero",
                  "nameLocation": "4239:12:55",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 14802,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4251:2:55"
                  },
                  "src": "4233:21:55"
                },
                {
                  "body": {
                    "id": 14822,
                    "nodeType": "Block",
                    "src": "4304:168:55",
                    "statements": [
                      {
                        "assignments": [
                          14809
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14809,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "4333:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 14822,
                            "src": "4314:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 14808,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 14807,
                                "name": "BondParams",
                                "nameLocations": [
                                  "4314:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "4314:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "4314:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14813,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 14811,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14805,
                              "src": "4360:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14810,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "4348:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 14812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4348:20:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4314:54:55"
                      },
                      {
                        "condition": {
                          "expression": {
                            "id": 14814,
                            "name": "_bondDetails",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14809,
                            "src": "4382:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams storage pointer"
                            }
                          },
                          "id": 14815,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4395:8:55",
                          "memberName": "__paused",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 18524,
                          "src": "4382:21:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14820,
                        "nodeType": "IfStatement",
                        "src": "4378:77:55",
                        "trueBody": {
                          "id": 14819,
                          "nodeType": "Block",
                          "src": "4405:50:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 14816,
                                  "name": "CampaignIsPaused",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14767,
                                  "src": "4426:16:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 14817,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4426:18:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 14818,
                              "nodeType": "RevertStatement",
                              "src": "4419:25:55"
                            }
                          ]
                        }
                      },
                      {
                        "id": 14821,
                        "nodeType": "PlaceholderStatement",
                        "src": "4464:1:55"
                      }
                    ]
                  },
                  "id": 14823,
                  "name": "campaignNotPaused",
                  "nameLocation": "4269:17:55",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 14806,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14805,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "4295:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14823,
                        "src": "4287:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14804,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4287:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4286:17:55"
                  },
                  "src": "4260:212:55",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14832,
                    "nodeType": "Block",
                    "src": "4541:53:55",
                    "statements": [
                      {
                        "expression": {
                          "id": 14830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14828,
                            "name": "__currencyAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14564,
                            "src": "4551:17:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14829,
                            "name": "_currencyAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14825,
                            "src": "4571:16:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4551:36:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 14831,
                        "nodeType": "ExpressionStatement",
                        "src": "4551:36:55"
                      }
                    ]
                  },
                  "functionSelector": "796b89ec",
                  "id": 14833,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setCurrencyAddress",
                  "nameLocation": "4487:18:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14826,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14825,
                        "mutability": "mutable",
                        "name": "_currencyAddress",
                        "nameLocation": "4514:16:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 14833,
                        "src": "4506:24:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14824,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4506:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4505:26:55"
                  },
                  "returnParameters": {
                    "id": 14827,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4541:0:55"
                  },
                  "scope": 18048,
                  "src": "4478:116:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15183,
                    "nodeType": "Block",
                    "src": "4688:3400:55",
                    "statements": [
                      {
                        "assignments": [
                          14842
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14842,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "4717:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 15183,
                            "src": "4698:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 14841,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 14840,
                                "name": "BondParams",
                                "nameLocations": [
                                  "4698:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "4698:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "4698:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14846,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 14844,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14835,
                              "src": "4744:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14843,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "4732:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 14845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4732:20:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4698:54:55"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 14847,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14842,
                              "src": "4766:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 14848,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4779:8:55",
                            "memberName": "__issued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18526,
                            "src": "4766:21:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "74727565",
                            "id": 14849,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4791:4:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "4766:29:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14855,
                        "nodeType": "IfStatement",
                        "src": "4762:86:55",
                        "trueBody": {
                          "id": 14854,
                          "nodeType": "Block",
                          "src": "4797:51:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 14851,
                                  "name": "BondAlreadyIssued",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14777,
                                  "src": "4818:17:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 14852,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4818:19:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 14853,
                              "nodeType": "RevertStatement",
                              "src": "4811:26:55"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          14857
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14857,
                            "mutability": "mutable",
                            "name": "year",
                            "nameLocation": "4865:4:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 15183,
                            "src": "4857:12:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14856,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4857:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14858,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4857:12:55"
                      },
                      {
                        "assignments": [
                          14860
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14860,
                            "mutability": "mutable",
                            "name": "month",
                            "nameLocation": "4887:5:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 15183,
                            "src": "4879:13:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14859,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4879:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14861,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4879:13:55"
                      },
                      {
                        "assignments": [
                          14863
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14863,
                            "mutability": "mutable",
                            "name": "day",
                            "nameLocation": "4910:3:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 15183,
                            "src": "4902:11:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14862,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4902:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14864,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4902:11:55"
                      },
                      {
                        "expression": {
                          "id": 14873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 14865,
                                "name": "year",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14857,
                                "src": "4924:4:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 14866,
                                "name": "month",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14860,
                                "src": "4930:5:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 14867,
                                "name": "day",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14863,
                                "src": "4937:3:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 14868,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "4923:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 14871,
                                "name": "_issueTimeStamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14837,
                                "src": "4988:15:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 14869,
                                "name": "BokkyPooBahsDateTimeLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22113,
                                "src": "4944:27:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$22113_$",
                                  "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                }
                              },
                              "id": 14870,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4972:15:55",
                              "memberName": "timestampToDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20974,
                              "src": "4944:43:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 14872,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4944:60:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "4923:81:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14874,
                        "nodeType": "ExpressionStatement",
                        "src": "4923:81:55"
                      },
                      {
                        "assignments": [
                          14876
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14876,
                            "mutability": "mutable",
                            "name": "nbrOfPayments",
                            "nameLocation": "5023:13:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 15183,
                            "src": "5015:21:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14875,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5015:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14877,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5015:21:55"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_Periodicity_$18452",
                            "typeString": "enum BondStorage.Periodicity"
                          },
                          "id": 14882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 14878,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14842,
                              "src": "5050:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 14879,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5063:13:55",
                            "memberName": "__periodicity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18562,
                            "src": "5050:26:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                              "typeString": "enum BondStorage.Periodicity"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 14880,
                              "name": "Periodicity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18452,
                              "src": "5080:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                "typeString": "type(enum BondStorage.Periodicity)"
                              }
                            },
                            "id": 14881,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "5092:6:55",
                            "memberName": "Annual",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18449,
                            "src": "5080:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                              "typeString": "enum BondStorage.Periodicity"
                            }
                          },
                          "src": "5050:48:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                              "typeString": "enum BondStorage.Periodicity"
                            },
                            "id": 14895,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 14891,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14842,
                                "src": "5179:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 14892,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5192:13:55",
                              "memberName": "__periodicity",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18562,
                              "src": "5179:26:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Periodicity_$18452",
                                "typeString": "enum BondStorage.Periodicity"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 14893,
                                "name": "Periodicity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18452,
                                "src": "5209:11:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                  "typeString": "type(enum BondStorage.Periodicity)"
                                }
                              },
                              "id": 14894,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "5221:9:55",
                              "memberName": "Quarterly",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18450,
                              "src": "5209:21:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Periodicity_$18452",
                                "typeString": "enum BondStorage.Periodicity"
                              }
                            },
                            "src": "5179:51:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 14909,
                            "nodeType": "Block",
                            "src": "5306:64:55",
                            "statements": [
                              {
                                "expression": {
                                  "id": 14907,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 14904,
                                    "name": "nbrOfPayments",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14876,
                                    "src": "5320:13:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "expression": {
                                      "id": 14905,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14842,
                                      "src": "5336:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 14906,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5349:10:55",
                                    "memberName": "__duration",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18490,
                                    "src": "5336:23:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5320:39:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 14908,
                                "nodeType": "ExpressionStatement",
                                "src": "5320:39:55"
                              }
                            ]
                          },
                          "id": 14910,
                          "nodeType": "IfStatement",
                          "src": "5175:195:55",
                          "trueBody": {
                            "id": 14903,
                            "nodeType": "Block",
                            "src": "5232:68:55",
                            "statements": [
                              {
                                "expression": {
                                  "id": 14901,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 14896,
                                    "name": "nbrOfPayments",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14876,
                                    "src": "5246:13:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 14900,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 14897,
                                        "name": "_bondDetails",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14842,
                                        "src": "5262:12:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                          "typeString": "struct BondStorage.BondParams storage pointer"
                                        }
                                      },
                                      "id": 14898,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "5275:10:55",
                                      "memberName": "__duration",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 18490,
                                      "src": "5262:23:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "hexValue": "33",
                                      "id": 14899,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5288:1:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "src": "5262:27:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5246:43:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 14902,
                                "nodeType": "ExpressionStatement",
                                "src": "5246:43:55"
                              }
                            ]
                          }
                        },
                        "id": 14911,
                        "nodeType": "IfStatement",
                        "src": "5046:324:55",
                        "trueBody": {
                          "id": 14890,
                          "nodeType": "Block",
                          "src": "5100:69:55",
                          "statements": [
                            {
                              "expression": {
                                "id": 14888,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14883,
                                  "name": "nbrOfPayments",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14876,
                                  "src": "5114:13:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14887,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 14884,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14842,
                                      "src": "5130:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 14885,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5143:10:55",
                                    "memberName": "__duration",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18490,
                                    "src": "5130:23:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "hexValue": "3132",
                                    "id": 14886,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5156:2:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_12_by_1",
                                      "typeString": "int_const 12"
                                    },
                                    "value": "12"
                                  },
                                  "src": "5130:28:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5114:44:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14889,
                              "nodeType": "ExpressionStatement",
                              "src": "5114:44:55"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          14913
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14913,
                            "mutability": "mutable",
                            "name": "couponMonth",
                            "nameLocation": "5388:11:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 15183,
                            "src": "5380:19:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14912,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5380:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14915,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 14914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5402:1:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5380:23:55"
                      },
                      {
                        "assignments": [
                          14917
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14917,
                            "mutability": "mutable",
                            "name": "couponYear",
                            "nameLocation": "5421:10:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 15183,
                            "src": "5413:18:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14916,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5413:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14919,
                        "initialValue": {
                          "id": 14918,
                          "name": "year",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14857,
                          "src": "5434:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5413:25:55"
                      },
                      {
                        "assignments": [
                          14921
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14921,
                            "mutability": "mutable",
                            "name": "couponDay",
                            "nameLocation": "5456:9:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 15183,
                            "src": "5448:17:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14920,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5448:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14923,
                        "initialValue": {
                          "id": 14922,
                          "name": "day",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14863,
                          "src": "5468:3:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5448:23:55"
                      },
                      {
                        "expression": {
                          "id": 14926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "5482:33:55",
                          "subExpression": {
                            "expression": {
                              "id": 14924,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14842,
                              "src": "5489:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 14925,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "5502:13:55",
                            "memberName": "__couponDates",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18534,
                            "src": "5489:26:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14927,
                        "nodeType": "ExpressionStatement",
                        "src": "5482:33:55"
                      },
                      {
                        "expression": {
                          "id": 14930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "5525:34:55",
                          "subExpression": {
                            "expression": {
                              "id": 14928,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14842,
                              "src": "5532:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 14929,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "5545:14:55",
                            "memberName": "__couponStatus",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18547,
                            "src": "5532:27:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_enum$_CouponStatus_$18448_$dyn_storage",
                              "typeString": "enum BondStorage.CouponStatus[] storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14931,
                        "nodeType": "ExpressionStatement",
                        "src": "5525:34:55"
                      },
                      {
                        "body": {
                          "id": 15170,
                          "nodeType": "Block",
                          "src": "5614:2362:55",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_enum$_Periodicity_$18452",
                                  "typeString": "enum BondStorage.Periodicity"
                                },
                                "id": 14946,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 14942,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14842,
                                    "src": "5632:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 14943,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5645:13:55",
                                  "memberName": "__periodicity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18562,
                                  "src": "5632:26:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Periodicity_$18452",
                                    "typeString": "enum BondStorage.Periodicity"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 14944,
                                    "name": "Periodicity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18452,
                                    "src": "5662:11:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                      "typeString": "type(enum BondStorage.Periodicity)"
                                    }
                                  },
                                  "id": 14945,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "5674:7:55",
                                  "memberName": "Monthly",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18451,
                                  "src": "5662:19:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Periodicity_$18452",
                                    "typeString": "enum BondStorage.Periodicity"
                                  }
                                },
                                "src": "5632:49:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_Periodicity_$18452",
                                    "typeString": "enum BondStorage.Periodicity"
                                  },
                                  "id": 15030,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 15026,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14842,
                                      "src": "6493:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 15027,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "6506:13:55",
                                    "memberName": "__periodicity",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18562,
                                    "src": "6493:26:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Periodicity_$18452",
                                      "typeString": "enum BondStorage.Periodicity"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 15028,
                                      "name": "Periodicity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18452,
                                      "src": "6523:11:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                        "typeString": "type(enum BondStorage.Periodicity)"
                                      }
                                    },
                                    "id": 15029,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "6535:9:55",
                                    "memberName": "Quarterly",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18450,
                                    "src": "6523:21:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Periodicity_$18452",
                                      "typeString": "enum BondStorage.Periodicity"
                                    }
                                  },
                                  "src": "6493:51:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_Periodicity_$18452",
                                      "typeString": "enum BondStorage.Periodicity"
                                    },
                                    "id": 15105,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 15101,
                                        "name": "_bondDetails",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14842,
                                        "src": "7270:12:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                          "typeString": "struct BondStorage.BondParams storage pointer"
                                        }
                                      },
                                      "id": 15102,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "7283:13:55",
                                      "memberName": "__periodicity",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 18562,
                                      "src": "7270:26:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Periodicity_$18452",
                                        "typeString": "enum BondStorage.Periodicity"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 15103,
                                        "name": "Periodicity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18452,
                                        "src": "7300:11:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                          "typeString": "type(enum BondStorage.Periodicity)"
                                        }
                                      },
                                      "id": 15104,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "7312:6:55",
                                      "memberName": "Annual",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 18449,
                                      "src": "7300:18:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Periodicity_$18452",
                                        "typeString": "enum BondStorage.Periodicity"
                                      }
                                    },
                                    "src": "7270:48:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 15127,
                                  "nodeType": "IfStatement",
                                  "src": "7266:271:55",
                                  "trueBody": {
                                    "id": 15126,
                                    "nodeType": "Block",
                                    "src": "7320:217:55",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 15108,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 15106,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14933,
                                            "src": "7342:1:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 15107,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7347:1:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "7342:6:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": {
                                          "id": 15124,
                                          "nodeType": "Block",
                                          "src": "7455:68:55",
                                          "statements": [
                                            {
                                              "expression": {
                                                "id": 15122,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                  "id": 15118,
                                                  "name": "couponYear",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14917,
                                                  "src": "7477:10:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 15121,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 15119,
                                                    "name": "couponYear",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 14917,
                                                    "src": "7490:10:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "+",
                                                  "rightExpression": {
                                                    "hexValue": "31",
                                                    "id": 15120,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "7503:1:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_1_by_1",
                                                      "typeString": "int_const 1"
                                                    },
                                                    "value": "1"
                                                  },
                                                  "src": "7490:14:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "7477:27:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 15123,
                                              "nodeType": "ExpressionStatement",
                                              "src": "7477:27:55"
                                            }
                                          ]
                                        },
                                        "id": 15125,
                                        "nodeType": "IfStatement",
                                        "src": "7338:185:55",
                                        "trueBody": {
                                          "id": 15117,
                                          "nodeType": "Block",
                                          "src": "7350:99:55",
                                          "statements": [
                                            {
                                              "expression": {
                                                "id": 15111,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                  "id": 15109,
                                                  "name": "couponYear",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14917,
                                                  "src": "7372:10:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                  "id": 15110,
                                                  "name": "year",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14857,
                                                  "src": "7385:4:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "7372:17:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 15112,
                                              "nodeType": "ExpressionStatement",
                                              "src": "7372:17:55"
                                            },
                                            {
                                              "expression": {
                                                "id": 15115,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                  "id": 15113,
                                                  "name": "couponMonth",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14913,
                                                  "src": "7411:11:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                  "id": 15114,
                                                  "name": "month",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14860,
                                                  "src": "7425:5:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "7411:19:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 15116,
                                              "nodeType": "ExpressionStatement",
                                              "src": "7411:19:55"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                },
                                "id": 15128,
                                "nodeType": "IfStatement",
                                "src": "6489:1048:55",
                                "trueBody": {
                                  "id": 15100,
                                  "nodeType": "Block",
                                  "src": "6546:714:55",
                                  "statements": [
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 15033,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 15031,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14933,
                                          "src": "6568:1:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 15032,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6573:1:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "6568:6:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 15098,
                                        "nodeType": "Block",
                                        "src": "6941:305:55",
                                        "statements": [
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 15071,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 15069,
                                                "name": "couponMonth",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14913,
                                                "src": "6967:11:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": ">=",
                                              "rightExpression": {
                                                "hexValue": "3130",
                                                "id": 15070,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6982:2:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_10_by_1",
                                                  "typeString": "int_const 10"
                                                },
                                                "value": "10"
                                              },
                                              "src": "6967:17:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "id": 15079,
                                            "nodeType": "IfStatement",
                                            "src": "6963:99:55",
                                            "trueBody": {
                                              "id": 15078,
                                              "nodeType": "Block",
                                              "src": "6986:76:55",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 15076,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 15072,
                                                      "name": "couponYear",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14917,
                                                      "src": "7012:10:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 15075,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "id": 15073,
                                                        "name": "couponYear",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 14917,
                                                        "src": "7025:10:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "+",
                                                      "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 15074,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7038:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                      },
                                                      "src": "7025:14:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "7012:27:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 15077,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "7012:27:55"
                                                }
                                              ]
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 15087,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 15080,
                                                "name": "couponMonth",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14913,
                                                "src": "7083:11:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 15086,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "components": [
                                                    {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 15083,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "id": 15081,
                                                        "name": "couponMonth",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 14913,
                                                        "src": "7098:11:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "+",
                                                      "rightExpression": {
                                                        "hexValue": "33",
                                                        "id": 15082,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7112:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_3_by_1",
                                                          "typeString": "int_const 3"
                                                        },
                                                        "value": "3"
                                                      },
                                                      "src": "7098:15:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "id": 15084,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "TupleExpression",
                                                  "src": "7097:17:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "%",
                                                "rightExpression": {
                                                  "hexValue": "3132",
                                                  "id": 15085,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "7117:2:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_12_by_1",
                                                    "typeString": "int_const 12"
                                                  },
                                                  "value": "12"
                                                },
                                                "src": "7097:22:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "7083:36:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 15088,
                                            "nodeType": "ExpressionStatement",
                                            "src": "7083:36:55"
                                          },
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 15091,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 15089,
                                                "name": "couponMonth",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14913,
                                                "src": "7145:11:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "==",
                                              "rightExpression": {
                                                "hexValue": "30",
                                                "id": 15090,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7160:1:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              },
                                              "src": "7145:16:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "id": 15097,
                                            "nodeType": "IfStatement",
                                            "src": "7141:87:55",
                                            "trueBody": {
                                              "id": 15096,
                                              "nodeType": "Block",
                                              "src": "7163:65:55",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 15094,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 15092,
                                                      "name": "couponMonth",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14913,
                                                      "src": "7189:11:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "3132",
                                                      "id": 15093,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "7203:2:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_12_by_1",
                                                        "typeString": "int_const 12"
                                                      },
                                                      "value": "12"
                                                    },
                                                    "src": "7189:16:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 15095,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "7189:16:55"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      },
                                      "id": 15099,
                                      "nodeType": "IfStatement",
                                      "src": "6564:682:55",
                                      "trueBody": {
                                        "id": 15068,
                                        "nodeType": "Block",
                                        "src": "6576:359:55",
                                        "statements": [
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 15036,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 15034,
                                                "name": "month",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14860,
                                                "src": "6602:5:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": ">=",
                                              "rightExpression": {
                                                "hexValue": "3130",
                                                "id": 15035,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6611:2:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_10_by_1",
                                                  "typeString": "int_const 10"
                                                },
                                                "value": "10"
                                              },
                                              "src": "6602:11:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 15048,
                                              "nodeType": "Block",
                                              "src": "6691:66:55",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 15046,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 15044,
                                                      "name": "couponYear",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14917,
                                                      "src": "6717:10:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "id": 15045,
                                                      "name": "year",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14857,
                                                      "src": "6730:4:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "6717:17:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 15047,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "6717:17:55"
                                                }
                                              ]
                                            },
                                            "id": 15049,
                                            "nodeType": "IfStatement",
                                            "src": "6598:159:55",
                                            "trueBody": {
                                              "id": 15043,
                                              "nodeType": "Block",
                                              "src": "6615:70:55",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 15041,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 15037,
                                                      "name": "couponYear",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14917,
                                                      "src": "6641:10:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 15040,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "id": 15038,
                                                        "name": "year",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 14857,
                                                        "src": "6654:4:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "+",
                                                      "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 15039,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "6661:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                      },
                                                      "src": "6654:8:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "6641:21:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 15042,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "6641:21:55"
                                                }
                                              ]
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 15057,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 15050,
                                                "name": "couponMonth",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14913,
                                                "src": "6778:11:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 15056,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "components": [
                                                    {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 15053,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "id": 15051,
                                                        "name": "month",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 14860,
                                                        "src": "6793:5:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "+",
                                                      "rightExpression": {
                                                        "hexValue": "33",
                                                        "id": 15052,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "6801:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_3_by_1",
                                                          "typeString": "int_const 3"
                                                        },
                                                        "value": "3"
                                                      },
                                                      "src": "6793:9:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "id": 15054,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "TupleExpression",
                                                  "src": "6792:11:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "%",
                                                "rightExpression": {
                                                  "hexValue": "3132",
                                                  "id": 15055,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "6806:2:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_12_by_1",
                                                    "typeString": "int_const 12"
                                                  },
                                                  "value": "12"
                                                },
                                                "src": "6792:16:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "6778:30:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 15058,
                                            "nodeType": "ExpressionStatement",
                                            "src": "6778:30:55"
                                          },
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 15061,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 15059,
                                                "name": "couponMonth",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14913,
                                                "src": "6834:11:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "==",
                                              "rightExpression": {
                                                "hexValue": "30",
                                                "id": 15060,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6849:1:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              },
                                              "src": "6834:16:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "id": 15067,
                                            "nodeType": "IfStatement",
                                            "src": "6830:87:55",
                                            "trueBody": {
                                              "id": 15066,
                                              "nodeType": "Block",
                                              "src": "6852:65:55",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 15064,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 15062,
                                                      "name": "couponMonth",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14913,
                                                      "src": "6878:11:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "3132",
                                                      "id": 15063,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "6892:2:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_12_by_1",
                                                        "typeString": "int_const 12"
                                                      },
                                                      "value": "12"
                                                    },
                                                    "src": "6878:16:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 15065,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "6878:16:55"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 15129,
                              "nodeType": "IfStatement",
                              "src": "5628:1909:55",
                              "trueBody": {
                                "id": 15025,
                                "nodeType": "Block",
                                "src": "5683:800:55",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 14949,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 14947,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14933,
                                        "src": "5705:1:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 14948,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5710:1:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "5705:6:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 15023,
                                      "nodeType": "Block",
                                      "src": "6082:387:55",
                                      "statements": [
                                        {
                                          "condition": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 14991,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 14989,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 14987,
                                                "name": "couponMonth",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14913,
                                                "src": "6108:11:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "%",
                                              "rightExpression": {
                                                "hexValue": "3132",
                                                "id": 14988,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6122:2:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_12_by_1",
                                                  "typeString": "int_const 12"
                                                },
                                                "value": "12"
                                              },
                                              "src": "6108:16:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "hexValue": "30",
                                              "id": 14990,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "6128:1:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "6108:21:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseBody": {
                                            "id": 15003,
                                            "nodeType": "Block",
                                            "src": "6213:72:55",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "id": 15001,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "id": 14999,
                                                    "name": "couponYear",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 14917,
                                                    "src": "6239:10:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "id": 15000,
                                                    "name": "couponYear",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 14917,
                                                    "src": "6252:10:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "6239:23:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 15002,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6239:23:55"
                                              }
                                            ]
                                          },
                                          "id": 15004,
                                          "nodeType": "IfStatement",
                                          "src": "6104:181:55",
                                          "trueBody": {
                                            "id": 14998,
                                            "nodeType": "Block",
                                            "src": "6131:76:55",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "id": 14996,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "id": 14992,
                                                    "name": "couponYear",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 14917,
                                                    "src": "6157:10:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 14995,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 14993,
                                                      "name": "couponYear",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14917,
                                                      "src": "6170:10:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                      "hexValue": "31",
                                                      "id": 14994,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "6183:1:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "6170:14:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "6157:27:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 14997,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6157:27:55"
                                              }
                                            ]
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 15012,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 15005,
                                              "name": "couponMonth",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14913,
                                              "src": "6306:11:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 15011,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 15008,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 15006,
                                                      "name": "couponMonth",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14913,
                                                      "src": "6321:11:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                      "hexValue": "31",
                                                      "id": 15007,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "6335:1:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "6321:15:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "id": 15009,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "6320:17:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "%",
                                              "rightExpression": {
                                                "hexValue": "3132",
                                                "id": 15010,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6340:2:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_12_by_1",
                                                  "typeString": "int_const 12"
                                                },
                                                "value": "12"
                                              },
                                              "src": "6320:22:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "6306:36:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 15013,
                                          "nodeType": "ExpressionStatement",
                                          "src": "6306:36:55"
                                        },
                                        {
                                          "condition": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 15016,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 15014,
                                              "name": "couponMonth",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14913,
                                              "src": "6368:11:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "hexValue": "30",
                                              "id": 15015,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "6383:1:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "6368:16:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "id": 15022,
                                          "nodeType": "IfStatement",
                                          "src": "6364:87:55",
                                          "trueBody": {
                                            "id": 15021,
                                            "nodeType": "Block",
                                            "src": "6386:65:55",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "id": 15019,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "id": 15017,
                                                    "name": "couponMonth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 14913,
                                                    "src": "6412:11:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "hexValue": "3132",
                                                    "id": 15018,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "6426:2:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_12_by_1",
                                                      "typeString": "int_const 12"
                                                    },
                                                    "value": "12"
                                                  },
                                                  "src": "6412:16:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 15020,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6412:16:55"
                                              }
                                            ]
                                          }
                                        }
                                      ]
                                    },
                                    "id": 15024,
                                    "nodeType": "IfStatement",
                                    "src": "5701:768:55",
                                    "trueBody": {
                                      "id": 14986,
                                      "nodeType": "Block",
                                      "src": "5713:363:55",
                                      "statements": [
                                        {
                                          "condition": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 14954,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 14952,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 14950,
                                                "name": "month",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14860,
                                                "src": "5739:5:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "%",
                                              "rightExpression": {
                                                "hexValue": "3132",
                                                "id": 14951,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5747:2:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_12_by_1",
                                                  "typeString": "int_const 12"
                                                },
                                                "value": "12"
                                              },
                                              "src": "5739:10:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "hexValue": "30",
                                              "id": 14953,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "5753:1:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "5739:15:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseBody": {
                                            "id": 14966,
                                            "nodeType": "Block",
                                            "src": "5832:66:55",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "id": 14964,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "id": 14962,
                                                    "name": "couponYear",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 14917,
                                                    "src": "5858:10:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "id": 14963,
                                                    "name": "year",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 14857,
                                                    "src": "5871:4:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "5858:17:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 14965,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5858:17:55"
                                              }
                                            ]
                                          },
                                          "id": 14967,
                                          "nodeType": "IfStatement",
                                          "src": "5735:163:55",
                                          "trueBody": {
                                            "id": 14961,
                                            "nodeType": "Block",
                                            "src": "5756:70:55",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "id": 14959,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "id": 14955,
                                                    "name": "couponYear",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 14917,
                                                    "src": "5782:10:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 14958,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 14956,
                                                      "name": "year",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14857,
                                                      "src": "5795:4:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                      "hexValue": "31",
                                                      "id": 14957,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "5802:1:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "5795:8:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "5782:21:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 14960,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5782:21:55"
                                              }
                                            ]
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 14975,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 14968,
                                              "name": "couponMonth",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14913,
                                              "src": "5919:11:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 14974,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 14971,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 14969,
                                                      "name": "month",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14860,
                                                      "src": "5934:5:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                      "hexValue": "31",
                                                      "id": 14970,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "5942:1:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "5934:9:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "id": 14972,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "5933:11:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "%",
                                              "rightExpression": {
                                                "hexValue": "3132",
                                                "id": 14973,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5947:2:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_12_by_1",
                                                  "typeString": "int_const 12"
                                                },
                                                "value": "12"
                                              },
                                              "src": "5933:16:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "5919:30:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 14976,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5919:30:55"
                                        },
                                        {
                                          "condition": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 14979,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 14977,
                                              "name": "couponMonth",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14913,
                                              "src": "5975:11:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "hexValue": "30",
                                              "id": 14978,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "5990:1:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "5975:16:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "id": 14985,
                                          "nodeType": "IfStatement",
                                          "src": "5971:87:55",
                                          "trueBody": {
                                            "id": 14984,
                                            "nodeType": "Block",
                                            "src": "5993:65:55",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "id": 14982,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "id": 14980,
                                                    "name": "couponMonth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 14913,
                                                    "src": "6019:11:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "hexValue": "3132",
                                                    "id": 14981,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "6033:2:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_12_by_1",
                                                      "typeString": "int_const 12"
                                                    },
                                                    "value": "12"
                                                  },
                                                  "src": "6019:16:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 14983,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6019:16:55"
                                              }
                                            ]
                                          }
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 15137,
                                        "name": "couponYear",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14917,
                                        "src": "7645:10:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 15138,
                                        "name": "couponMonth",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14913,
                                        "src": "7657:11:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 15139,
                                        "name": "couponDay",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14921,
                                        "src": "7670:9:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 15135,
                                        "name": "BokkyPooBahsDateTimeLibrary",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22113,
                                        "src": "7599:27:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$22113_$",
                                          "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                        }
                                      },
                                      "id": 15136,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "7627:17:55",
                                      "memberName": "timestampFromDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20913,
                                      "src": "7599:45:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 15140,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7599:81:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "expression": {
                                      "id": 15130,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14842,
                                      "src": "7550:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 15133,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "7563:13:55",
                                    "memberName": "__couponDates",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18534,
                                    "src": "7550:26:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 15134,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "7577:4:55",
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "src": "7550:31:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                    "typeString": "function (uint256[] storage pointer,uint256)"
                                  }
                                },
                                "id": 15141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7550:144:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15142,
                              "nodeType": "ExpressionStatement",
                              "src": "7550:144:55"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 15143,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14933,
                                  "src": "7713:1:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 15146,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 15144,
                                    "name": "nbrOfPayments",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14876,
                                    "src": "7718:13:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 15145,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7734:1:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "7718:17:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7713:22:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 15160,
                              "nodeType": "IfStatement",
                              "src": "7709:192:55",
                              "trueBody": {
                                "id": 15159,
                                "nodeType": "Block",
                                "src": "7737:164:55",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 15157,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "expression": {
                                          "id": 15148,
                                          "name": "_bondDetails",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14842,
                                          "src": "7755:12:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                          }
                                        },
                                        "id": 15150,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberLocation": "7768:14:55",
                                        "memberName": "__maturityDate",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18488,
                                        "src": "7755:27:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 15153,
                                            "name": "couponYear",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14917,
                                            "src": "7851:10:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 15154,
                                            "name": "couponMonth",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14913,
                                            "src": "7863:11:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 15155,
                                            "name": "couponDay",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14921,
                                            "src": "7876:9:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 15151,
                                            "name": "BokkyPooBahsDateTimeLibrary",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22113,
                                            "src": "7805:27:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$22113_$",
                                              "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                            }
                                          },
                                          "id": 15152,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "7833:17:55",
                                          "memberName": "timestampFromDate",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 20913,
                                          "src": "7805:45:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 15156,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7805:81:55",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7755:131:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 15158,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7755:131:55"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 15166,
                                      "name": "CouponStatus",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18448,
                                      "src": "7947:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_CouponStatus_$18448_$",
                                        "typeString": "type(enum BondStorage.CouponStatus)"
                                      }
                                    },
                                    "id": 15167,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "7960:4:55",
                                    "memberName": "Todo",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18446,
                                    "src": "7947:17:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_CouponStatus_$18448",
                                      "typeString": "enum BondStorage.CouponStatus"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_CouponStatus_$18448",
                                      "typeString": "enum BondStorage.CouponStatus"
                                    }
                                  ],
                                  "expression": {
                                    "expression": {
                                      "id": 15161,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14842,
                                      "src": "7914:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 15164,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "7927:14:55",
                                    "memberName": "__couponStatus",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18547,
                                    "src": "7914:27:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_enum$_CouponStatus_$18448_$dyn_storage",
                                      "typeString": "enum BondStorage.CouponStatus[] storage ref"
                                    }
                                  },
                                  "id": 15165,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "7942:4:55",
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "src": "7914:32:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_enum$_CouponStatus_$18448_$dyn_storage_ptr_$_t_enum$_CouponStatus_$18448_$returns$__$attached_to$_t_array$_t_enum$_CouponStatus_$18448_$dyn_storage_ptr_$",
                                    "typeString": "function (enum BondStorage.CouponStatus[] storage pointer,enum BondStorage.CouponStatus)"
                                  }
                                },
                                "id": 15168,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7914:51:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15169,
                              "nodeType": "ExpressionStatement",
                              "src": "7914:51:55"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 14936,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14933,
                            "src": "5590:1:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 14937,
                            "name": "nbrOfPayments",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14876,
                            "src": "5594:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5590:17:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15171,
                        "initializationExpression": {
                          "assignments": [
                            14933
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 14933,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "5583:1:55",
                              "nodeType": "VariableDeclaration",
                              "scope": 15171,
                              "src": "5575:9:55",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 14932,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5575:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 14935,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 14934,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5587:1:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5575:13:55"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 14940,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "5609:3:55",
                            "subExpression": {
                              "id": 14939,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14933,
                              "src": "5611:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14941,
                          "nodeType": "ExpressionStatement",
                          "src": "5609:3:55"
                        },
                        "nodeType": "ForStatement",
                        "src": "5570:2406:55"
                      },
                      {
                        "expression": {
                          "id": 15176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 15172,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14842,
                              "src": "7986:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 15174,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "7999:11:55",
                            "memberName": "__issueDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18486,
                            "src": "7986:24:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 15175,
                            "name": "_issueTimeStamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14837,
                            "src": "8013:15:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7986:42:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 15177,
                        "nodeType": "ExpressionStatement",
                        "src": "7986:42:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 15179,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14835,
                              "src": "8056:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 15180,
                              "name": "_issueTimeStamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14837,
                              "src": "8065:15:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15178,
                            "name": "IssueDateSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14656,
                            "src": "8043:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 15181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8043:38:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15182,
                        "nodeType": "EmitStatement",
                        "src": "8038:43:55"
                      }
                    ]
                  },
                  "id": 15184,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setCouponDatesFromIssueDate",
                  "nameLocation": "4609:27:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14838,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14835,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "4645:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 15184,
                        "src": "4637:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14834,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4637:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14837,
                        "mutability": "mutable",
                        "name": "_issueTimeStamp",
                        "nameLocation": "4662:15:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 15184,
                        "src": "4654:23:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14836,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4654:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4636:42:55"
                  },
                  "returnParameters": {
                    "id": 14839,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4688:0:55"
                  },
                  "scope": 18048,
                  "src": "4600:3488:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16221,
                    "nodeType": "Block",
                    "src": "8207:11844:55",
                    "statements": [
                      {
                        "assignments": [
                          15200
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15200,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "8236:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 16221,
                            "src": "8217:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 15199,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 15198,
                                "name": "BondParams",
                                "nameLocations": [
                                  "8217:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "8217:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "8217:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15204,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 15202,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15186,
                              "src": "8263:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15201,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "8251:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 15203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8251:20:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8217:54:55"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 15205,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15200,
                              "src": "8285:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 15206,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8298:8:55",
                            "memberName": "__issued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18526,
                            "src": "8285:21:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "74727565",
                            "id": 15207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8310:4:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "8285:29:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15213,
                        "nodeType": "IfStatement",
                        "src": "8281:86:55",
                        "trueBody": {
                          "id": 15212,
                          "nodeType": "Block",
                          "src": "8316:51:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 15209,
                                  "name": "BondAlreadyIssued",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14777,
                                  "src": "8337:17:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 15210,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8337:19:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 15211,
                              "nodeType": "RevertStatement",
                              "src": "8330:26:55"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          15215
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15215,
                            "mutability": "mutable",
                            "name": "nbrOfPayments",
                            "nameLocation": "8385:13:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 16221,
                            "src": "8377:21:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15214,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8377:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15216,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8377:21:55"
                      },
                      {
                        "assignments": [
                          15218
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15218,
                            "mutability": "mutable",
                            "name": "capitalRepayment",
                            "nameLocation": "8416:16:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 16221,
                            "src": "8408:24:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15217,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8408:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15220,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 15219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8435:1:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8408:28:55"
                      },
                      {
                        "assignments": [
                          15222
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15222,
                            "mutability": "mutable",
                            "name": "remainingCapital",
                            "nameLocation": "8454:16:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 16221,
                            "src": "8446:24:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15221,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8446:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15225,
                        "initialValue": {
                          "expression": {
                            "id": 15223,
                            "name": "_bondDetails",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15200,
                            "src": "8473:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams storage pointer"
                            }
                          },
                          "id": 15224,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8486:9:55",
                          "memberName": "__coupure",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 18474,
                          "src": "8473:22:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8446:49:55"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_Periodicity_$18452",
                            "typeString": "enum BondStorage.Periodicity"
                          },
                          "id": 15230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 15226,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15200,
                              "src": "8509:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 15227,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8522:13:55",
                            "memberName": "__periodicity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18562,
                            "src": "8509:26:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                              "typeString": "enum BondStorage.Periodicity"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 15228,
                              "name": "Periodicity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18452,
                              "src": "8539:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                "typeString": "type(enum BondStorage.Periodicity)"
                              }
                            },
                            "id": 15229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "8551:6:55",
                            "memberName": "Annual",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18449,
                            "src": "8539:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                              "typeString": "enum BondStorage.Periodicity"
                            }
                          },
                          "src": "8509:48:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                              "typeString": "enum BondStorage.Periodicity"
                            },
                            "id": 15243,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 15239,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15200,
                                "src": "8638:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 15240,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8651:13:55",
                              "memberName": "__periodicity",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18562,
                              "src": "8638:26:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Periodicity_$18452",
                                "typeString": "enum BondStorage.Periodicity"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 15241,
                                "name": "Periodicity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18452,
                                "src": "8668:11:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                  "typeString": "type(enum BondStorage.Periodicity)"
                                }
                              },
                              "id": 15242,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "8680:9:55",
                              "memberName": "Quarterly",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18450,
                              "src": "8668:21:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Periodicity_$18452",
                                "typeString": "enum BondStorage.Periodicity"
                              }
                            },
                            "src": "8638:51:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 15257,
                            "nodeType": "Block",
                            "src": "8765:64:55",
                            "statements": [
                              {
                                "expression": {
                                  "id": 15255,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 15252,
                                    "name": "nbrOfPayments",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15215,
                                    "src": "8779:13:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "expression": {
                                      "id": 15253,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15200,
                                      "src": "8795:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 15254,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "8808:10:55",
                                    "memberName": "__duration",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18490,
                                    "src": "8795:23:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8779:39:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 15256,
                                "nodeType": "ExpressionStatement",
                                "src": "8779:39:55"
                              }
                            ]
                          },
                          "id": 15258,
                          "nodeType": "IfStatement",
                          "src": "8634:195:55",
                          "trueBody": {
                            "id": 15251,
                            "nodeType": "Block",
                            "src": "8691:68:55",
                            "statements": [
                              {
                                "expression": {
                                  "id": 15249,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 15244,
                                    "name": "nbrOfPayments",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15215,
                                    "src": "8705:13:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 15248,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 15245,
                                        "name": "_bondDetails",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15200,
                                        "src": "8721:12:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                          "typeString": "struct BondStorage.BondParams storage pointer"
                                        }
                                      },
                                      "id": 15246,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "8734:10:55",
                                      "memberName": "__duration",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 18490,
                                      "src": "8721:23:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "hexValue": "33",
                                      "id": 15247,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8747:1:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "src": "8721:27:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8705:43:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 15250,
                                "nodeType": "ExpressionStatement",
                                "src": "8705:43:55"
                              }
                            ]
                          }
                        },
                        "id": 15259,
                        "nodeType": "IfStatement",
                        "src": "8505:324:55",
                        "trueBody": {
                          "id": 15238,
                          "nodeType": "Block",
                          "src": "8559:69:55",
                          "statements": [
                            {
                              "expression": {
                                "id": 15236,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15231,
                                  "name": "nbrOfPayments",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15215,
                                  "src": "8573:13:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 15235,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 15232,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15200,
                                      "src": "8589:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 15233,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "8602:10:55",
                                    "memberName": "__duration",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18490,
                                    "src": "8589:23:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "hexValue": "3132",
                                    "id": 15234,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8615:2:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_12_by_1",
                                      "typeString": "int_const 12"
                                    },
                                    "value": "12"
                                  },
                                  "src": "8589:28:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8573:44:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15237,
                              "nodeType": "ExpressionStatement",
                              "src": "8573:44:55"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 15262,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "8839:38:55",
                          "subExpression": {
                            "expression": {
                              "id": 15260,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15200,
                              "src": "8846:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 15261,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "8859:18:55",
                            "memberName": "__grossCouponRates",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18531,
                            "src": "8846:31:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15263,
                        "nodeType": "ExpressionStatement",
                        "src": "8839:38:55"
                      },
                      {
                        "expression": {
                          "id": 15266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "8887:36:55",
                          "subExpression": {
                            "expression": {
                              "id": 15264,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15200,
                              "src": "8894:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 15265,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "8907:16:55",
                            "memberName": "__netCouponRates",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18537,
                            "src": "8894:29:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15267,
                        "nodeType": "ExpressionStatement",
                        "src": "8887:36:55"
                      },
                      {
                        "expression": {
                          "id": 15270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "8933:38:55",
                          "subExpression": {
                            "expression": {
                              "id": 15268,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15200,
                              "src": "8940:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 15269,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "8953:18:55",
                            "memberName": "__capitalRepayment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18540,
                            "src": "8940:31:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15271,
                        "nodeType": "ExpressionStatement",
                        "src": "8933:38:55"
                      },
                      {
                        "expression": {
                          "id": 15274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "8981:38:55",
                          "subExpression": {
                            "expression": {
                              "id": 15272,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15200,
                              "src": "8988:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 15273,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "9001:18:55",
                            "memberName": "__remainingCapital",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18543,
                            "src": "8988:31:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15275,
                        "nodeType": "ExpressionStatement",
                        "src": "8981:38:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 15281,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9067:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 15276,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15200,
                                "src": "9030:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 15279,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9043:18:55",
                              "memberName": "__capitalRepayment",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18540,
                              "src": "9030:31:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 15280,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9062:4:55",
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "src": "9030:36:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                              "typeString": "function (uint256[] storage pointer,uint256)"
                            }
                          },
                          "id": 15282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9030:39:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15283,
                        "nodeType": "ExpressionStatement",
                        "src": "9030:39:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 15289,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15200,
                                "src": "9116:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 15290,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9129:9:55",
                              "memberName": "__coupure",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18474,
                              "src": "9116:22:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 15284,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15200,
                                "src": "9079:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 15287,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9092:18:55",
                              "memberName": "__remainingCapital",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18543,
                              "src": "9079:31:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 15288,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9111:4:55",
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "src": "9079:36:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                              "typeString": "function (uint256[] storage pointer,uint256)"
                            }
                          },
                          "id": 15291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9079:60:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15292,
                        "nodeType": "ExpressionStatement",
                        "src": "9079:60:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 15298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9186:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 15293,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15200,
                                "src": "9149:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 15296,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9162:18:55",
                              "memberName": "__grossCouponRates",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18531,
                              "src": "9149:31:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 15297,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9181:4:55",
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "src": "9149:36:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                              "typeString": "function (uint256[] storage pointer,uint256)"
                            }
                          },
                          "id": 15299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9149:39:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15300,
                        "nodeType": "ExpressionStatement",
                        "src": "9149:39:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 15306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9233:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 15301,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15200,
                                "src": "9198:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 15304,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9211:16:55",
                              "memberName": "__netCouponRates",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18537,
                              "src": "9198:29:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 15305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9228:4:55",
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "src": "9198:34:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                              "typeString": "function (uint256[] storage pointer,uint256)"
                            }
                          },
                          "id": 15307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9198:37:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15308,
                        "nodeType": "ExpressionStatement",
                        "src": "9198:37:55"
                      },
                      {
                        "expression": {
                          "id": 15314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 15309,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15200,
                              "src": "9245:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 15311,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "9258:17:55",
                            "memberName": "__totalToBeRepaid",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18508,
                            "src": "9245:30:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 15312,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15200,
                              "src": "9278:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 15313,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9291:9:55",
                            "memberName": "__coupure",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18474,
                            "src": "9278:22:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9245:55:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 15315,
                        "nodeType": "ExpressionStatement",
                        "src": "9245:55:55"
                      },
                      {
                        "body": {
                          "id": 16191,
                          "nodeType": "Block",
                          "src": "9355:10216:55",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                  "typeString": "enum BondStorage.MethodOfRepayment"
                                },
                                "id": 15330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 15326,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15200,
                                    "src": "9373:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 15327,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "9386:19:55",
                                  "memberName": "__methodOfRepayment",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18568,
                                  "src": "9373:32:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                    "typeString": "enum BondStorage.MethodOfRepayment"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 15328,
                                    "name": "MethodOfRepayment",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18462,
                                    "src": "9409:17:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                      "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                    }
                                  },
                                  "id": 15329,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "9427:6:55",
                                  "memberName": "Bullet",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18456,
                                  "src": "9409:24:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                    "typeString": "enum BondStorage.MethodOfRepayment"
                                  }
                                },
                                "src": "9373:60:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                    "typeString": "enum BondStorage.MethodOfRepayment"
                                  },
                                  "id": 15340,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 15336,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15200,
                                      "src": "9498:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 15337,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "9511:19:55",
                                    "memberName": "__methodOfRepayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18568,
                                    "src": "9498:32:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                      "typeString": "enum BondStorage.MethodOfRepayment"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 15338,
                                      "name": "MethodOfRepayment",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18462,
                                      "src": "9534:17:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                        "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                      }
                                    },
                                    "id": 15339,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "9552:10:55",
                                    "memberName": "Degressive",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18457,
                                    "src": "9534:28:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                      "typeString": "enum BondStorage.MethodOfRepayment"
                                    }
                                  },
                                  "src": "9498:64:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 15366,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                        "typeString": "enum BondStorage.MethodOfRepayment"
                                      },
                                      "id": 15360,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 15356,
                                          "name": "_bondDetails",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15200,
                                          "src": "9712:12:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                          }
                                        },
                                        "id": 15357,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "9725:19:55",
                                        "memberName": "__methodOfRepayment",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18568,
                                        "src": "9712:32:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                          "typeString": "enum BondStorage.MethodOfRepayment"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "expression": {
                                          "id": 15358,
                                          "name": "MethodOfRepayment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18462,
                                          "src": "9748:17:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                            "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                          }
                                        },
                                        "id": 15359,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "9766:33:55",
                                        "memberName": "WithCapitalAmortizationFreePeriod",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18459,
                                        "src": "9748:51:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                          "typeString": "enum BondStorage.MethodOfRepayment"
                                        }
                                      },
                                      "src": "9712:87:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                        "typeString": "enum BondStorage.MethodOfRepayment"
                                      },
                                      "id": 15365,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 15361,
                                          "name": "_bondDetails",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15200,
                                          "src": "9823:12:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                          }
                                        },
                                        "id": 15362,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "9836:19:55",
                                        "memberName": "__methodOfRepayment",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18568,
                                        "src": "9823:32:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                          "typeString": "enum BondStorage.MethodOfRepayment"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "expression": {
                                          "id": 15363,
                                          "name": "MethodOfRepayment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18462,
                                          "src": "9859:17:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                            "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                          }
                                        },
                                        "id": 15364,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "9877:33:55",
                                        "memberName": "CapitalAmortizationAndGracePeriod",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18461,
                                        "src": "9859:51:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                          "typeString": "enum BondStorage.MethodOfRepayment"
                                        }
                                      },
                                      "src": "9823:87:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "9712:198:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                        "typeString": "enum BondStorage.MethodOfRepayment"
                                      },
                                      "id": 15442,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 15438,
                                          "name": "_bondDetails",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15200,
                                          "src": "11005:12:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                          }
                                        },
                                        "id": 15439,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "11018:19:55",
                                        "memberName": "__methodOfRepayment",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18568,
                                        "src": "11005:32:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                          "typeString": "enum BondStorage.MethodOfRepayment"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "expression": {
                                          "id": 15440,
                                          "name": "MethodOfRepayment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18462,
                                          "src": "11041:17:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                            "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                          }
                                        },
                                        "id": 15441,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "11059:11:55",
                                        "memberName": "GracePeriod",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18460,
                                        "src": "11041:29:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                          "typeString": "enum BondStorage.MethodOfRepayment"
                                        }
                                      },
                                      "src": "11005:65:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 15514,
                                    "nodeType": "IfStatement",
                                    "src": "11001:1089:55",
                                    "trueBody": {
                                      "id": 15513,
                                      "nodeType": "Block",
                                      "src": "11072:1018:55",
                                      "statements": [
                                        {
                                          "condition": {
                                            "commonType": {
                                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                                              "typeString": "enum BondStorage.Periodicity"
                                            },
                                            "id": 15447,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "expression": {
                                                "id": 15443,
                                                "name": "_bondDetails",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 15200,
                                                "src": "11094:12:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                                }
                                              },
                                              "id": 15444,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "11107:13:55",
                                              "memberName": "__periodicity",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 18562,
                                              "src": "11094:26:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                "typeString": "enum BondStorage.Periodicity"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "expression": {
                                                "id": 15445,
                                                "name": "Periodicity",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18452,
                                                "src": "11124:11:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                  "typeString": "type(enum BondStorage.Periodicity)"
                                                }
                                              },
                                              "id": 15446,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberLocation": "11136:6:55",
                                              "memberName": "Annual",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 18449,
                                              "src": "11124:18:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                "typeString": "enum BondStorage.Periodicity"
                                              }
                                            },
                                            "src": "11094:48:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseBody": {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                "typeString": "enum BondStorage.Periodicity"
                                              },
                                              "id": 15472,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "expression": {
                                                  "id": 15468,
                                                  "name": "_bondDetails",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 15200,
                                                  "src": "11453:12:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                                  }
                                                },
                                                "id": 15469,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "11466:13:55",
                                                "memberName": "__periodicity",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 18562,
                                                "src": "11453:26:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                  "typeString": "enum BondStorage.Periodicity"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "==",
                                              "rightExpression": {
                                                "expression": {
                                                  "id": 15470,
                                                  "name": "Periodicity",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18452,
                                                  "src": "11483:11:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                    "typeString": "type(enum BondStorage.Periodicity)"
                                                  }
                                                },
                                                "id": 15471,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberLocation": "11495:9:55",
                                                "memberName": "Quarterly",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 18450,
                                                "src": "11483:21:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                  "typeString": "enum BondStorage.Periodicity"
                                                }
                                              },
                                              "src": "11453:51:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 15510,
                                              "nodeType": "Block",
                                              "src": "11810:266:55",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 15508,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 15493,
                                                      "name": "capitalRepayment",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15218,
                                                      "src": "11832:16:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "arguments": [
                                                                {
                                                                  "expression": {
                                                                    "id": 15497,
                                                                    "name": "_bondDetails",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 15200,
                                                                    "src": "11925:12:55",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                                                    }
                                                                  },
                                                                  "id": 15498,
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "memberLocation": "11938:9:55",
                                                                  "memberName": "__coupure",
                                                                  "nodeType": "MemberAccess",
                                                                  "referencedDeclaration": 18474,
                                                                  "src": "11925:22:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                }
                                                              ],
                                                              "expression": {
                                                                "argumentTypes": [
                                                                  {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                ],
                                                                "id": 15496,
                                                                "name": "ud60x18",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12643,
                                                                "src": "11917:7:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                                  "typeString": "function (uint256) pure returns (UD60x18)"
                                                                }
                                                              },
                                                              "id": 15499,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "kind": "functionCall",
                                                              "lValueRequested": false,
                                                              "nameLocations": [],
                                                              "names": [],
                                                              "nodeType": "FunctionCall",
                                                              "src": "11917:31:55",
                                                              "tryCall": false,
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                                "typeString": "UD60x18"
                                                              }
                                                            },
                                                            {
                                                              "arguments": [
                                                                {
                                                                  "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  },
                                                                  "id": 15504,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "leftExpression": {
                                                                    "id": 15501,
                                                                    "name": "nbrOfPayments",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 15215,
                                                                    "src": "11958:13:55",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  },
                                                                  "nodeType": "BinaryOperation",
                                                                  "operator": "-",
                                                                  "rightExpression": {
                                                                    "expression": {
                                                                      "id": 15502,
                                                                      "name": "_bondDetails",
                                                                      "nodeType": "Identifier",
                                                                      "overloadedDeclarations": [],
                                                                      "referencedDeclaration": 15200,
                                                                      "src": "11974:12:55",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                                                      }
                                                                    },
                                                                    "id": 15503,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberLocation": "11987:21:55",
                                                                    "memberName": "__gracePeriodDuration",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 18494,
                                                                    "src": "11974:34:55",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  },
                                                                  "src": "11958:50:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                }
                                                              ],
                                                              "expression": {
                                                                "argumentTypes": [
                                                                  {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                ],
                                                                "id": 15500,
                                                                "name": "ud60x18",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12643,
                                                                "src": "11950:7:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                                  "typeString": "function (uint256) pure returns (UD60x18)"
                                                                }
                                                              },
                                                              "id": 15505,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "kind": "functionCall",
                                                              "lValueRequested": false,
                                                              "nameLocations": [],
                                                              "names": [],
                                                              "nodeType": "FunctionCall",
                                                              "src": "11950:59:55",
                                                              "tryCall": false,
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                                "typeString": "UD60x18"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                                "typeString": "UD60x18"
                                                              },
                                                              {
                                                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                                "typeString": "UD60x18"
                                                              }
                                                            ],
                                                            "id": 15495,
                                                            "name": "div",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 13538,
                                                            "src": "11884:3:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                              "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                                            }
                                                          },
                                                          "id": 15506,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "functionCall",
                                                          "lValueRequested": false,
                                                          "nameLocations": [],
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "11884:151:55",
                                                          "tryCall": false,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                            "typeString": "UD60x18"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                            "typeString": "UD60x18"
                                                          }
                                                        ],
                                                        "id": 15494,
                                                        "name": "convert",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                          12834,
                                                          12865
                                                        ],
                                                        "referencedDeclaration": 12834,
                                                        "src": "11851:7:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                                                          "typeString": "function (UD60x18) pure returns (uint256)"
                                                        }
                                                      },
                                                      "id": 15507,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "nameLocations": [],
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "11851:206:55",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "11832:225:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 15509,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "11832:225:55"
                                                }
                                              ]
                                            },
                                            "id": 15511,
                                            "nodeType": "IfStatement",
                                            "src": "11449:627:55",
                                            "trueBody": {
                                              "id": 15492,
                                              "nodeType": "Block",
                                              "src": "11506:298:55",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 15490,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 15473,
                                                      "name": "capitalRepayment",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15218,
                                                      "src": "11528:16:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "arguments": [
                                                                {
                                                                  "expression": {
                                                                    "id": 15477,
                                                                    "name": "_bondDetails",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 15200,
                                                                    "src": "11621:12:55",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                                                    }
                                                                  },
                                                                  "id": 15478,
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "memberLocation": "11634:9:55",
                                                                  "memberName": "__coupure",
                                                                  "nodeType": "MemberAccess",
                                                                  "referencedDeclaration": 18474,
                                                                  "src": "11621:22:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                }
                                                              ],
                                                              "expression": {
                                                                "argumentTypes": [
                                                                  {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                ],
                                                                "id": 15476,
                                                                "name": "ud60x18",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12643,
                                                                "src": "11613:7:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                                  "typeString": "function (uint256) pure returns (UD60x18)"
                                                                }
                                                              },
                                                              "id": 15479,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "kind": "functionCall",
                                                              "lValueRequested": false,
                                                              "nameLocations": [],
                                                              "names": [],
                                                              "nodeType": "FunctionCall",
                                                              "src": "11613:31:55",
                                                              "tryCall": false,
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                                "typeString": "UD60x18"
                                                              }
                                                            },
                                                            {
                                                              "arguments": [
                                                                {
                                                                  "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  },
                                                                  "id": 15486,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "leftExpression": {
                                                                    "id": 15481,
                                                                    "name": "nbrOfPayments",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 15215,
                                                                    "src": "11682:13:55",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  },
                                                                  "nodeType": "BinaryOperation",
                                                                  "operator": "-",
                                                                  "rightExpression": {
                                                                    "commonType": {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    },
                                                                    "id": 15485,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                      "expression": {
                                                                        "id": 15482,
                                                                        "name": "_bondDetails",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 15200,
                                                                        "src": "11698:12:55",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                          "typeString": "struct BondStorage.BondParams storage pointer"
                                                                        }
                                                                      },
                                                                      "id": 15483,
                                                                      "isConstant": false,
                                                                      "isLValue": true,
                                                                      "isPure": false,
                                                                      "lValueRequested": false,
                                                                      "memberLocation": "11711:21:55",
                                                                      "memberName": "__gracePeriodDuration",
                                                                      "nodeType": "MemberAccess",
                                                                      "referencedDeclaration": 18494,
                                                                      "src": "11698:34:55",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                      }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                      "hexValue": "33",
                                                                      "id": 15484,
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": true,
                                                                      "kind": "number",
                                                                      "lValueRequested": false,
                                                                      "nodeType": "Literal",
                                                                      "src": "11735:1:55",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_3_by_1",
                                                                        "typeString": "int_const 3"
                                                                      },
                                                                      "value": "3"
                                                                    },
                                                                    "src": "11698:38:55",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  },
                                                                  "src": "11682:54:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                }
                                                              ],
                                                              "expression": {
                                                                "argumentTypes": [
                                                                  {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                ],
                                                                "id": 15480,
                                                                "name": "ud60x18",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12643,
                                                                "src": "11674:7:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                                  "typeString": "function (uint256) pure returns (UD60x18)"
                                                                }
                                                              },
                                                              "id": 15487,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "kind": "functionCall",
                                                              "lValueRequested": false,
                                                              "nameLocations": [],
                                                              "names": [],
                                                              "nodeType": "FunctionCall",
                                                              "src": "11674:63:55",
                                                              "tryCall": false,
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                                "typeString": "UD60x18"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                                "typeString": "UD60x18"
                                                              },
                                                              {
                                                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                                "typeString": "UD60x18"
                                                              }
                                                            ],
                                                            "id": 15475,
                                                            "name": "div",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 13538,
                                                            "src": "11580:3:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                              "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                                            }
                                                          },
                                                          "id": 15488,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "functionCall",
                                                          "lValueRequested": false,
                                                          "nameLocations": [],
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "11580:183:55",
                                                          "tryCall": false,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                            "typeString": "UD60x18"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                            "typeString": "UD60x18"
                                                          }
                                                        ],
                                                        "id": 15474,
                                                        "name": "convert",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                          12834,
                                                          12865
                                                        ],
                                                        "referencedDeclaration": 12834,
                                                        "src": "11547:7:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                                                          "typeString": "function (UD60x18) pure returns (uint256)"
                                                        }
                                                      },
                                                      "id": 15489,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "nameLocations": [],
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "11547:238:55",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "11528:257:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 15491,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "11528:257:55"
                                                }
                                              ]
                                            }
                                          },
                                          "id": 15512,
                                          "nodeType": "IfStatement",
                                          "src": "11090:986:55",
                                          "trueBody": {
                                            "id": 15467,
                                            "nodeType": "Block",
                                            "src": "11144:299:55",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "id": 15465,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "id": 15448,
                                                    "name": "capitalRepayment",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 15218,
                                                    "src": "11166:16:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "expression": {
                                                                  "id": 15452,
                                                                  "name": "_bondDetails",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 15200,
                                                                  "src": "11259:12:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                                                  }
                                                                },
                                                                "id": 15453,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "11272:9:55",
                                                                "memberName": "__coupure",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 18474,
                                                                "src": "11259:22:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              }
                                                            ],
                                                            "expression": {
                                                              "argumentTypes": [
                                                                {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              ],
                                                              "id": 15451,
                                                              "name": "ud60x18",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 12643,
                                                              "src": "11251:7:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                                "typeString": "function (uint256) pure returns (UD60x18)"
                                                              }
                                                            },
                                                            "id": 15454,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "11251:31:55",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                              "typeString": "UD60x18"
                                                            }
                                                          },
                                                          {
                                                            "arguments": [
                                                              {
                                                                "commonType": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                },
                                                                "id": 15461,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                  "id": 15456,
                                                                  "name": "nbrOfPayments",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 15215,
                                                                  "src": "11320:13:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "-",
                                                                "rightExpression": {
                                                                  "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  },
                                                                  "id": 15460,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "leftExpression": {
                                                                    "expression": {
                                                                      "id": 15457,
                                                                      "name": "_bondDetails",
                                                                      "nodeType": "Identifier",
                                                                      "overloadedDeclarations": [],
                                                                      "referencedDeclaration": 15200,
                                                                      "src": "11336:12:55",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                                                      }
                                                                    },
                                                                    "id": 15458,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberLocation": "11349:21:55",
                                                                    "memberName": "__gracePeriodDuration",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 18494,
                                                                    "src": "11336:34:55",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  },
                                                                  "nodeType": "BinaryOperation",
                                                                  "operator": "/",
                                                                  "rightExpression": {
                                                                    "hexValue": "3132",
                                                                    "id": 15459,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "11373:2:55",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_rational_12_by_1",
                                                                      "typeString": "int_const 12"
                                                                    },
                                                                    "value": "12"
                                                                  },
                                                                  "src": "11336:39:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                },
                                                                "src": "11320:55:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              }
                                                            ],
                                                            "expression": {
                                                              "argumentTypes": [
                                                                {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              ],
                                                              "id": 15455,
                                                              "name": "ud60x18",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 12643,
                                                              "src": "11312:7:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                                "typeString": "function (uint256) pure returns (UD60x18)"
                                                              }
                                                            },
                                                            "id": 15462,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "11312:64:55",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                              "typeString": "UD60x18"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                              "typeString": "UD60x18"
                                                            },
                                                            {
                                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                              "typeString": "UD60x18"
                                                            }
                                                          ],
                                                          "id": 15450,
                                                          "name": "div",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 13538,
                                                          "src": "11218:3:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                            "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                                          }
                                                        },
                                                        "id": 15463,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "11218:184:55",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                          "typeString": "UD60x18"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                          "typeString": "UD60x18"
                                                        }
                                                      ],
                                                      "id": 15449,
                                                      "name": "convert",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [
                                                        12834,
                                                        12865
                                                      ],
                                                      "referencedDeclaration": 12834,
                                                      "src": "11185:7:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                                                        "typeString": "function (UD60x18) pure returns (uint256)"
                                                      }
                                                    },
                                                    "id": 15464,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "11185:239:55",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "11166:258:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 15466,
                                                "nodeType": "ExpressionStatement",
                                                "src": "11166:258:55"
                                              }
                                            ]
                                          }
                                        }
                                      ]
                                    }
                                  },
                                  "id": 15515,
                                  "nodeType": "IfStatement",
                                  "src": "9691:2399:55",
                                  "trueBody": {
                                    "id": 15437,
                                    "nodeType": "Block",
                                    "src": "9925:1070:55",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_enum$_Periodicity_$18452",
                                            "typeString": "enum BondStorage.Periodicity"
                                          },
                                          "id": 15371,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 15367,
                                              "name": "_bondDetails",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 15200,
                                              "src": "9947:12:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                "typeString": "struct BondStorage.BondParams storage pointer"
                                              }
                                            },
                                            "id": 15368,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "9960:13:55",
                                            "memberName": "__periodicity",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 18562,
                                            "src": "9947:26:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                                              "typeString": "enum BondStorage.Periodicity"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "expression": {
                                              "id": 15369,
                                              "name": "Periodicity",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18452,
                                              "src": "9977:11:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                "typeString": "type(enum BondStorage.Periodicity)"
                                              }
                                            },
                                            "id": 15370,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "9989:6:55",
                                            "memberName": "Annual",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 18449,
                                            "src": "9977:18:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                                              "typeString": "enum BondStorage.Periodicity"
                                            }
                                          },
                                          "src": "9947:48:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": {
                                          "condition": {
                                            "commonType": {
                                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                                              "typeString": "enum BondStorage.Periodicity"
                                            },
                                            "id": 15396,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "expression": {
                                                "id": 15392,
                                                "name": "_bondDetails",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 15200,
                                                "src": "10314:12:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                                }
                                              },
                                              "id": 15393,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "10327:13:55",
                                              "memberName": "__periodicity",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 18562,
                                              "src": "10314:26:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                "typeString": "enum BondStorage.Periodicity"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "expression": {
                                                "id": 15394,
                                                "name": "Periodicity",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18452,
                                                "src": "10344:11:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                  "typeString": "type(enum BondStorage.Periodicity)"
                                                }
                                              },
                                              "id": 15395,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberLocation": "10356:9:55",
                                              "memberName": "Quarterly",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 18450,
                                              "src": "10344:21:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                "typeString": "enum BondStorage.Periodicity"
                                              }
                                            },
                                            "src": "10314:51:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseBody": {
                                            "id": 15434,
                                            "nodeType": "Block",
                                            "src": "10679:302:55",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "id": 15432,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "id": 15417,
                                                    "name": "capitalRepayment",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 15218,
                                                    "src": "10701:16:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "expression": {
                                                                  "id": 15421,
                                                                  "name": "_bondDetails",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 15200,
                                                                  "src": "10794:12:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                                                  }
                                                                },
                                                                "id": 15422,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "10807:9:55",
                                                                "memberName": "__coupure",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 18474,
                                                                "src": "10794:22:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              }
                                                            ],
                                                            "expression": {
                                                              "argumentTypes": [
                                                                {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              ],
                                                              "id": 15420,
                                                              "name": "ud60x18",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 12643,
                                                              "src": "10786:7:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                                "typeString": "function (uint256) pure returns (UD60x18)"
                                                              }
                                                            },
                                                            "id": 15423,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "10786:31:55",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                              "typeString": "UD60x18"
                                                            }
                                                          },
                                                          {
                                                            "arguments": [
                                                              {
                                                                "commonType": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                },
                                                                "id": 15428,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                  "id": 15425,
                                                                  "name": "nbrOfPayments",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 15215,
                                                                  "src": "10855:13:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "-",
                                                                "rightExpression": {
                                                                  "expression": {
                                                                    "id": 15426,
                                                                    "name": "_bondDetails",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 15200,
                                                                    "src": "10871:12:55",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                                                    }
                                                                  },
                                                                  "id": 15427,
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "memberLocation": "10884:29:55",
                                                                  "memberName": "__capitalAmortizationDuration",
                                                                  "nodeType": "MemberAccess",
                                                                  "referencedDeclaration": 18492,
                                                                  "src": "10871:42:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                },
                                                                "src": "10855:58:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              }
                                                            ],
                                                            "expression": {
                                                              "argumentTypes": [
                                                                {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              ],
                                                              "id": 15424,
                                                              "name": "ud60x18",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 12643,
                                                              "src": "10847:7:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                                "typeString": "function (uint256) pure returns (UD60x18)"
                                                              }
                                                            },
                                                            "id": 15429,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "10847:67:55",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                              "typeString": "UD60x18"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                              "typeString": "UD60x18"
                                                            },
                                                            {
                                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                              "typeString": "UD60x18"
                                                            }
                                                          ],
                                                          "id": 15419,
                                                          "name": "div",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 13538,
                                                          "src": "10753:3:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                            "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                                          }
                                                        },
                                                        "id": 15430,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "10753:187:55",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                          "typeString": "UD60x18"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                          "typeString": "UD60x18"
                                                        }
                                                      ],
                                                      "id": 15418,
                                                      "name": "convert",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [
                                                        12834,
                                                        12865
                                                      ],
                                                      "referencedDeclaration": 12834,
                                                      "src": "10720:7:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                                                        "typeString": "function (UD60x18) pure returns (uint256)"
                                                      }
                                                    },
                                                    "id": 15431,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "10720:242:55",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "10701:261:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 15433,
                                                "nodeType": "ExpressionStatement",
                                                "src": "10701:261:55"
                                              }
                                            ]
                                          },
                                          "id": 15435,
                                          "nodeType": "IfStatement",
                                          "src": "10310:671:55",
                                          "trueBody": {
                                            "id": 15416,
                                            "nodeType": "Block",
                                            "src": "10367:306:55",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "id": 15414,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "id": 15397,
                                                    "name": "capitalRepayment",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 15218,
                                                    "src": "10389:16:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "expression": {
                                                                  "id": 15401,
                                                                  "name": "_bondDetails",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 15200,
                                                                  "src": "10482:12:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                                                  }
                                                                },
                                                                "id": 15402,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "10495:9:55",
                                                                "memberName": "__coupure",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 18474,
                                                                "src": "10482:22:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              }
                                                            ],
                                                            "expression": {
                                                              "argumentTypes": [
                                                                {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              ],
                                                              "id": 15400,
                                                              "name": "ud60x18",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 12643,
                                                              "src": "10474:7:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                                "typeString": "function (uint256) pure returns (UD60x18)"
                                                              }
                                                            },
                                                            "id": 15403,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "10474:31:55",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                              "typeString": "UD60x18"
                                                            }
                                                          },
                                                          {
                                                            "arguments": [
                                                              {
                                                                "commonType": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                },
                                                                "id": 15410,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                  "id": 15405,
                                                                  "name": "nbrOfPayments",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 15215,
                                                                  "src": "10543:13:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "-",
                                                                "rightExpression": {
                                                                  "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  },
                                                                  "id": 15409,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "leftExpression": {
                                                                    "expression": {
                                                                      "id": 15406,
                                                                      "name": "_bondDetails",
                                                                      "nodeType": "Identifier",
                                                                      "overloadedDeclarations": [],
                                                                      "referencedDeclaration": 15200,
                                                                      "src": "10559:12:55",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                                                      }
                                                                    },
                                                                    "id": 15407,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberLocation": "10572:29:55",
                                                                    "memberName": "__capitalAmortizationDuration",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 18492,
                                                                    "src": "10559:42:55",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  },
                                                                  "nodeType": "BinaryOperation",
                                                                  "operator": "/",
                                                                  "rightExpression": {
                                                                    "hexValue": "33",
                                                                    "id": 15408,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "10604:1:55",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_rational_3_by_1",
                                                                      "typeString": "int_const 3"
                                                                    },
                                                                    "value": "3"
                                                                  },
                                                                  "src": "10559:46:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                },
                                                                "src": "10543:62:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              }
                                                            ],
                                                            "expression": {
                                                              "argumentTypes": [
                                                                {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              ],
                                                              "id": 15404,
                                                              "name": "ud60x18",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 12643,
                                                              "src": "10535:7:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                                "typeString": "function (uint256) pure returns (UD60x18)"
                                                              }
                                                            },
                                                            "id": 15411,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "10535:71:55",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                              "typeString": "UD60x18"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                              "typeString": "UD60x18"
                                                            },
                                                            {
                                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                              "typeString": "UD60x18"
                                                            }
                                                          ],
                                                          "id": 15399,
                                                          "name": "div",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 13538,
                                                          "src": "10441:3:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                            "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                                          }
                                                        },
                                                        "id": 15412,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "10441:191:55",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                          "typeString": "UD60x18"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                          "typeString": "UD60x18"
                                                        }
                                                      ],
                                                      "id": 15398,
                                                      "name": "convert",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [
                                                        12834,
                                                        12865
                                                      ],
                                                      "referencedDeclaration": 12834,
                                                      "src": "10408:7:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                                                        "typeString": "function (UD60x18) pure returns (uint256)"
                                                      }
                                                    },
                                                    "id": 15413,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "10408:246:55",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "10389:265:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 15415,
                                                "nodeType": "ExpressionStatement",
                                                "src": "10389:265:55"
                                              }
                                            ]
                                          }
                                        },
                                        "id": 15436,
                                        "nodeType": "IfStatement",
                                        "src": "9943:1038:55",
                                        "trueBody": {
                                          "id": 15391,
                                          "nodeType": "Block",
                                          "src": "9997:307:55",
                                          "statements": [
                                            {
                                              "expression": {
                                                "id": 15389,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                  "id": 15372,
                                                  "name": "capitalRepayment",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 15218,
                                                  "src": "10019:16:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "expression": {
                                                                "id": 15376,
                                                                "name": "_bondDetails",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15200,
                                                                "src": "10112:12:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                                                }
                                                              },
                                                              "id": 15377,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "memberLocation": "10125:9:55",
                                                              "memberName": "__coupure",
                                                              "nodeType": "MemberAccess",
                                                              "referencedDeclaration": 18474,
                                                              "src": "10112:22:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            ],
                                                            "id": 15375,
                                                            "name": "ud60x18",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12643,
                                                            "src": "10104:7:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                              "typeString": "function (uint256) pure returns (UD60x18)"
                                                            }
                                                          },
                                                          "id": 15378,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "functionCall",
                                                          "lValueRequested": false,
                                                          "nameLocations": [],
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "10104:31:55",
                                                          "tryCall": false,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                            "typeString": "UD60x18"
                                                          }
                                                        },
                                                        {
                                                          "arguments": [
                                                            {
                                                              "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              },
                                                              "id": 15385,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "leftExpression": {
                                                                "id": 15380,
                                                                "name": "nbrOfPayments",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15215,
                                                                "src": "10173:13:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              },
                                                              "nodeType": "BinaryOperation",
                                                              "operator": "-",
                                                              "rightExpression": {
                                                                "commonType": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                },
                                                                "id": 15384,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                  "expression": {
                                                                    "id": 15381,
                                                                    "name": "_bondDetails",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 15200,
                                                                    "src": "10189:12:55",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                                                    }
                                                                  },
                                                                  "id": 15382,
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "memberLocation": "10202:29:55",
                                                                  "memberName": "__capitalAmortizationDuration",
                                                                  "nodeType": "MemberAccess",
                                                                  "referencedDeclaration": 18492,
                                                                  "src": "10189:42:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "/",
                                                                "rightExpression": {
                                                                  "hexValue": "3132",
                                                                  "id": 15383,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": true,
                                                                  "kind": "number",
                                                                  "lValueRequested": false,
                                                                  "nodeType": "Literal",
                                                                  "src": "10234:2:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_12_by_1",
                                                                    "typeString": "int_const 12"
                                                                  },
                                                                  "value": "12"
                                                                },
                                                                "src": "10189:47:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              },
                                                              "src": "10173:63:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            ],
                                                            "id": 15379,
                                                            "name": "ud60x18",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12643,
                                                            "src": "10165:7:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                              "typeString": "function (uint256) pure returns (UD60x18)"
                                                            }
                                                          },
                                                          "id": 15386,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "functionCall",
                                                          "lValueRequested": false,
                                                          "nameLocations": [],
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "10165:72:55",
                                                          "tryCall": false,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                            "typeString": "UD60x18"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                            "typeString": "UD60x18"
                                                          },
                                                          {
                                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                            "typeString": "UD60x18"
                                                          }
                                                        ],
                                                        "id": 15374,
                                                        "name": "div",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13538,
                                                        "src": "10071:3:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                          "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                                        }
                                                      },
                                                      "id": 15387,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "nameLocations": [],
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "10071:192:55",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                        "typeString": "UD60x18"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                        "typeString": "UD60x18"
                                                      }
                                                    ],
                                                    "id": 15373,
                                                    "name": "convert",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [
                                                      12834,
                                                      12865
                                                    ],
                                                    "referencedDeclaration": 12834,
                                                    "src": "10038:7:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                                                      "typeString": "function (UD60x18) pure returns (uint256)"
                                                    }
                                                  },
                                                  "id": 15388,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "10038:247:55",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "10019:266:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 15390,
                                              "nodeType": "ExpressionStatement",
                                              "src": "10019:266:55"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                },
                                "id": 15516,
                                "nodeType": "IfStatement",
                                "src": "9494:2596:55",
                                "trueBody": {
                                  "id": 15355,
                                  "nodeType": "Block",
                                  "src": "9564:121:55",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 15353,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "id": 15341,
                                          "name": "capitalRepayment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15218,
                                          "src": "9582:16:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "expression": {
                                                        "id": 15345,
                                                        "name": "_bondDetails",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15200,
                                                        "src": "9621:12:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                          "typeString": "struct BondStorage.BondParams storage pointer"
                                                        }
                                                      },
                                                      "id": 15346,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberLocation": "9634:9:55",
                                                      "memberName": "__coupure",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 18474,
                                                      "src": "9621:22:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "id": 15344,
                                                    "name": "ud60x18",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12643,
                                                    "src": "9613:7:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                      "typeString": "function (uint256) pure returns (UD60x18)"
                                                    }
                                                  },
                                                  "id": 15347,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "9613:31:55",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                    "typeString": "UD60x18"
                                                  }
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "id": 15349,
                                                      "name": "nbrOfPayments",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15215,
                                                      "src": "9654:13:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "id": 15348,
                                                    "name": "ud60x18",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12643,
                                                    "src": "9646:7:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                      "typeString": "function (uint256) pure returns (UD60x18)"
                                                    }
                                                  },
                                                  "id": 15350,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "9646:22:55",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                    "typeString": "UD60x18"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                    "typeString": "UD60x18"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                    "typeString": "UD60x18"
                                                  }
                                                ],
                                                "id": 15343,
                                                "name": "div",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13538,
                                                "src": "9609:3:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                  "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                                }
                                              },
                                              "id": 15351,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "9609:60:55",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                "typeString": "UD60x18"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                "typeString": "UD60x18"
                                              }
                                            ],
                                            "id": 15342,
                                            "name": "convert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              12834,
                                              12865
                                            ],
                                            "referencedDeclaration": 12834,
                                            "src": "9601:7:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                                              "typeString": "function (UD60x18) pure returns (uint256)"
                                            }
                                          },
                                          "id": 15352,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "9601:69:55",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "9582:88:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 15354,
                                      "nodeType": "ExpressionStatement",
                                      "src": "9582:88:55"
                                    }
                                  ]
                                }
                              },
                              "id": 15517,
                              "nodeType": "IfStatement",
                              "src": "9369:2721:55",
                              "trueBody": {
                                "id": 15335,
                                "nodeType": "Block",
                                "src": "9435:53:55",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 15333,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 15331,
                                        "name": "capitalRepayment",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15218,
                                        "src": "9453:16:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "30",
                                        "id": 15332,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9472:1:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "9453:20:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 15334,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9453:20:55"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                15519
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15519,
                                  "mutability": "mutable",
                                  "name": "grossInterest",
                                  "nameLocation": "12112:13:55",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16191,
                                  "src": "12104:21:55",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 15518,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12104:7:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15533,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15532,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "id": 15522,
                                                "name": "_bondDetails",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 15200,
                                                "src": "12156:12:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                                }
                                              },
                                              "id": 15523,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "12169:22:55",
                                              "memberName": "__periodicInterestRate",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 18480,
                                              "src": "12156:35:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 15521,
                                            "name": "ud60x18",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12643,
                                            "src": "12148:7:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                              "typeString": "function (uint256) pure returns (UD60x18)"
                                            }
                                          },
                                          "id": 15524,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12148:44:55",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                            "typeString": "UD60x18"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "id": 15526,
                                              "name": "remainingCapital",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 15222,
                                              "src": "12202:16:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 15525,
                                            "name": "ud60x18",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12643,
                                            "src": "12194:7:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                              "typeString": "function (uint256) pure returns (UD60x18)"
                                            }
                                          },
                                          "id": 15527,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12194:25:55",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                            "typeString": "UD60x18"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                            "typeString": "UD60x18"
                                          },
                                          {
                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                            "typeString": "UD60x18"
                                          }
                                        ],
                                        "id": 15520,
                                        "name": "mul",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13951,
                                        "src": "12144:3:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                          "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                        }
                                      },
                                      "id": 15528,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12144:76:55",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    },
                                    "id": 15529,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "12221:6:55",
                                    "memberName": "unwrap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12660,
                                    "src": "12144:83:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (UD60x18) pure returns (uint256)"
                                    }
                                  },
                                  "id": 15530,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12144:85:55",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "hexValue": "31653138",
                                  "id": 15531,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12232:4:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  },
                                  "value": "1e18"
                                },
                                "src": "12144:92:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12104:132:55"
                            },
                            {
                              "assignments": [
                                15535
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15535,
                                  "mutability": "mutable",
                                  "name": "taxMultiplier",
                                  "nameLocation": "12259:13:55",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16191,
                                  "src": "12251:21:55",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 15534,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12251:7:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15544,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15543,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  },
                                  "id": 15540,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 15536,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12275:1:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    },
                                    "id": 15539,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "3130",
                                      "id": 15537,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12279:2:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "hexValue": "3138",
                                      "id": 15538,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12285:2:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_18_by_1",
                                        "typeString": "int_const 18"
                                      },
                                      "value": "18"
                                    },
                                    "src": "12279:8:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    }
                                  },
                                  "src": "12275:12:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "expression": {
                                    "id": 15541,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15200,
                                    "src": "12290:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 15542,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "12303:16:55",
                                  "memberName": "__withholdingTax",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18482,
                                  "src": "12290:29:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12275:44:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12251:68:55"
                            },
                            {
                              "assignments": [
                                15547
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15547,
                                  "mutability": "mutable",
                                  "name": "taxableInterest",
                                  "nameLocation": "12342:15:55",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16191,
                                  "src": "12334:23:55",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  },
                                  "typeName": {
                                    "id": 15546,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 15545,
                                      "name": "UD60x18",
                                      "nameLocations": [
                                        "12334:7:55"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 14179,
                                      "src": "12334:7:55"
                                    },
                                    "referencedDeclaration": 14179,
                                    "src": "12334:7:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15556,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 15550,
                                        "name": "grossInterest",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15519,
                                        "src": "12372:13:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 15549,
                                      "name": "ud60x18",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12643,
                                      "src": "12364:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (uint256) pure returns (UD60x18)"
                                      }
                                    },
                                    "id": 15551,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12364:22:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 15553,
                                        "name": "taxMultiplier",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15535,
                                        "src": "12396:13:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 15552,
                                      "name": "ud60x18",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12643,
                                      "src": "12388:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (uint256) pure returns (UD60x18)"
                                      }
                                    },
                                    "id": 15554,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12388:22:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    },
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  ],
                                  "id": 15548,
                                  "name": "mul",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13951,
                                  "src": "12360:3:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                    "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                  }
                                },
                                "id": 15555,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12360:51:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12334:77:55"
                            },
                            {
                              "assignments": [
                                15558
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15558,
                                  "mutability": "mutable",
                                  "name": "netInterest",
                                  "nameLocation": "12434:11:55",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16191,
                                  "src": "12426:19:55",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 15557,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12426:7:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15562,
                              "initialValue": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 15559,
                                    "name": "taxableInterest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15547,
                                    "src": "12448:15:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  "id": 15560,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "12464:6:55",
                                  "memberName": "unwrap",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12660,
                                  "src": "12448:22:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                    "typeString": "function (UD60x18) pure returns (uint256)"
                                  }
                                },
                                "id": 15561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12448:24:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12426:46:55"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                  "typeString": "enum BondStorage.MethodOfRepayment"
                                },
                                "id": 15567,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 15563,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15200,
                                    "src": "12491:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 15564,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "12504:19:55",
                                  "memberName": "__methodOfRepayment",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18568,
                                  "src": "12491:32:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                    "typeString": "enum BondStorage.MethodOfRepayment"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 15565,
                                    "name": "MethodOfRepayment",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18462,
                                    "src": "12527:17:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                      "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                    }
                                  },
                                  "id": 15566,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "12545:6:55",
                                  "memberName": "Bullet",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18456,
                                  "src": "12527:24:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                    "typeString": "enum BondStorage.MethodOfRepayment"
                                  }
                                },
                                "src": "12491:60:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                    "typeString": "enum BondStorage.MethodOfRepayment"
                                  },
                                  "id": 15613,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 15609,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15200,
                                      "src": "12940:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 15610,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "12953:19:55",
                                    "memberName": "__methodOfRepayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18568,
                                    "src": "12940:32:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                      "typeString": "enum BondStorage.MethodOfRepayment"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 15611,
                                      "name": "MethodOfRepayment",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18462,
                                      "src": "12976:17:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                        "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                      }
                                    },
                                    "id": 15612,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "12994:7:55",
                                    "memberName": "Balloon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18458,
                                    "src": "12976:25:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                      "typeString": "enum BondStorage.MethodOfRepayment"
                                    }
                                  },
                                  "src": "12940:61:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                      "typeString": "enum BondStorage.MethodOfRepayment"
                                    },
                                    "id": 15704,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 15700,
                                        "name": "_bondDetails",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15200,
                                        "src": "13800:12:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                          "typeString": "struct BondStorage.BondParams storage pointer"
                                        }
                                      },
                                      "id": 15701,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "13813:19:55",
                                      "memberName": "__methodOfRepayment",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 18568,
                                      "src": "13800:32:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                        "typeString": "enum BondStorage.MethodOfRepayment"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 15702,
                                        "name": "MethodOfRepayment",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18462,
                                        "src": "13836:17:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                          "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                        }
                                      },
                                      "id": 15703,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "13854:10:55",
                                      "memberName": "Degressive",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 18457,
                                      "src": "13836:28:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                        "typeString": "enum BondStorage.MethodOfRepayment"
                                      }
                                    },
                                    "src": "13800:64:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                        "typeString": "enum BondStorage.MethodOfRepayment"
                                      },
                                      "id": 15759,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 15755,
                                          "name": "_bondDetails",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15200,
                                          "src": "14362:12:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                          }
                                        },
                                        "id": 15756,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "14375:19:55",
                                        "memberName": "__methodOfRepayment",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18568,
                                        "src": "14362:32:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                          "typeString": "enum BondStorage.MethodOfRepayment"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "expression": {
                                          "id": 15757,
                                          "name": "MethodOfRepayment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18462,
                                          "src": "14398:17:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                            "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                          }
                                        },
                                        "id": 15758,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "14416:33:55",
                                        "memberName": "WithCapitalAmortizationFreePeriod",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18459,
                                        "src": "14398:51:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                          "typeString": "enum BondStorage.MethodOfRepayment"
                                        }
                                      },
                                      "src": "14362:87:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                          "typeString": "enum BondStorage.MethodOfRepayment"
                                        },
                                        "id": 15876,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 15872,
                                            "name": "_bondDetails",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15200,
                                            "src": "15900:12:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                              "typeString": "struct BondStorage.BondParams storage pointer"
                                            }
                                          },
                                          "id": 15873,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "15913:19:55",
                                          "memberName": "__methodOfRepayment",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 18568,
                                          "src": "15900:32:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                            "typeString": "enum BondStorage.MethodOfRepayment"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "expression": {
                                            "id": 15874,
                                            "name": "MethodOfRepayment",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18462,
                                            "src": "15936:17:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                              "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                            }
                                          },
                                          "id": 15875,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberLocation": "15954:11:55",
                                          "memberName": "GracePeriod",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 18460,
                                          "src": "15936:29:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                            "typeString": "enum BondStorage.MethodOfRepayment"
                                          }
                                        },
                                        "src": "15900:65:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                            "typeString": "enum BondStorage.MethodOfRepayment"
                                          },
                                          "id": 16001,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 15997,
                                              "name": "_bondDetails",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 15200,
                                              "src": "17284:12:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                "typeString": "struct BondStorage.BondParams storage pointer"
                                              }
                                            },
                                            "id": 15998,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "17297:19:55",
                                            "memberName": "__methodOfRepayment",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 18568,
                                            "src": "17284:32:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                              "typeString": "enum BondStorage.MethodOfRepayment"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "expression": {
                                              "id": 15999,
                                              "name": "MethodOfRepayment",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18462,
                                              "src": "17320:17:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                                "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                              }
                                            },
                                            "id": 16000,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "17338:33:55",
                                            "memberName": "CapitalAmortizationAndGracePeriod",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 18461,
                                            "src": "17320:51:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                              "typeString": "enum BondStorage.MethodOfRepayment"
                                            }
                                          },
                                          "src": "17284:87:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 16163,
                                        "nodeType": "IfStatement",
                                        "src": "17280:2095:55",
                                        "trueBody": {
                                          "id": 16162,
                                          "nodeType": "Block",
                                          "src": "17373:2002:55",
                                          "statements": [
                                            {
                                              "condition": {
                                                "commonType": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                },
                                                "id": 16040,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  },
                                                  "id": 16028,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "components": [
                                                      {
                                                        "commonType": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        },
                                                        "id": 16013,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "commonType": {
                                                            "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                            "typeString": "enum BondStorage.Periodicity"
                                                          },
                                                          "id": 16006,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "expression": {
                                                              "id": 16002,
                                                              "name": "_bondDetails",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15200,
                                                              "src": "17442:12:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                "typeString": "struct BondStorage.BondParams storage pointer"
                                                              }
                                                            },
                                                            "id": 16003,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "17455:13:55",
                                                            "memberName": "__periodicity",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 18562,
                                                            "src": "17442:26:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                              "typeString": "enum BondStorage.Periodicity"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "==",
                                                          "rightExpression": {
                                                            "expression": {
                                                              "id": 16004,
                                                              "name": "Periodicity",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 18452,
                                                              "src": "17472:11:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                                "typeString": "type(enum BondStorage.Periodicity)"
                                                              }
                                                            },
                                                            "id": 16005,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "memberLocation": "17484:6:55",
                                                            "memberName": "Annual",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 18449,
                                                            "src": "17472:18:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                              "typeString": "enum BondStorage.Periodicity"
                                                            }
                                                          },
                                                          "src": "17442:48:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&&",
                                                        "rightExpression": {
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "id": 16012,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "id": 16007,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15317,
                                                            "src": "17522:1:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": ">=",
                                                          "rightExpression": {
                                                            "commonType": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            },
                                                            "id": 16011,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                              "expression": {
                                                                "id": 16008,
                                                                "name": "_bondDetails",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15200,
                                                                "src": "17527:12:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                                                }
                                                              },
                                                              "id": 16009,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "memberLocation": "17540:29:55",
                                                              "memberName": "__capitalAmortizationDuration",
                                                              "nodeType": "MemberAccess",
                                                              "referencedDeclaration": 18492,
                                                              "src": "17527:42:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                              "hexValue": "3132",
                                                              "id": 16010,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "kind": "number",
                                                              "lValueRequested": false,
                                                              "nodeType": "Literal",
                                                              "src": "17572:2:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_12_by_1",
                                                                "typeString": "int_const 12"
                                                              },
                                                              "value": "12"
                                                            },
                                                            "src": "17527:47:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "src": "17522:52:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                          }
                                                        },
                                                        "src": "17442:132:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        }
                                                      }
                                                    ],
                                                    "id": 16014,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "17416:180:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "||",
                                                  "rightExpression": {
                                                    "components": [
                                                      {
                                                        "commonType": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        },
                                                        "id": 16026,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "commonType": {
                                                            "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                            "typeString": "enum BondStorage.Periodicity"
                                                          },
                                                          "id": 16019,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "expression": {
                                                              "id": 16015,
                                                              "name": "_bondDetails",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15200,
                                                              "src": "17654:12:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                "typeString": "struct BondStorage.BondParams storage pointer"
                                                              }
                                                            },
                                                            "id": 16016,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "17667:13:55",
                                                            "memberName": "__periodicity",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 18562,
                                                            "src": "17654:26:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                              "typeString": "enum BondStorage.Periodicity"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "==",
                                                          "rightExpression": {
                                                            "expression": {
                                                              "id": 16017,
                                                              "name": "Periodicity",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 18452,
                                                              "src": "17684:11:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                                "typeString": "type(enum BondStorage.Periodicity)"
                                                              }
                                                            },
                                                            "id": 16018,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "memberLocation": "17696:9:55",
                                                            "memberName": "Quarterly",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 18450,
                                                            "src": "17684:21:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                              "typeString": "enum BondStorage.Periodicity"
                                                            }
                                                          },
                                                          "src": "17654:51:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&&",
                                                        "rightExpression": {
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "id": 16025,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "id": 16020,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15317,
                                                            "src": "17741:1:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": ">=",
                                                          "rightExpression": {
                                                            "commonType": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            },
                                                            "id": 16024,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                              "expression": {
                                                                "id": 16021,
                                                                "name": "_bondDetails",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15200,
                                                                "src": "17746:12:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                                                }
                                                              },
                                                              "id": 16022,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "memberLocation": "17759:29:55",
                                                              "memberName": "__capitalAmortizationDuration",
                                                              "nodeType": "MemberAccess",
                                                              "referencedDeclaration": 18492,
                                                              "src": "17746:42:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                              "hexValue": "33",
                                                              "id": 16023,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "kind": "number",
                                                              "lValueRequested": false,
                                                              "nodeType": "Literal",
                                                              "src": "17791:1:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_3_by_1",
                                                                "typeString": "int_const 3"
                                                              },
                                                              "value": "3"
                                                            },
                                                            "src": "17746:46:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "src": "17741:51:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                          }
                                                        },
                                                        "src": "17654:138:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        }
                                                      }
                                                    ],
                                                    "id": 16027,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "17624:194:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  },
                                                  "src": "17416:402:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "||",
                                                "rightExpression": {
                                                  "components": [
                                                    {
                                                      "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      },
                                                      "id": 16038,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "commonType": {
                                                          "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                          "typeString": "enum BondStorage.Periodicity"
                                                        },
                                                        "id": 16033,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "expression": {
                                                            "id": 16029,
                                                            "name": "_bondDetails",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15200,
                                                            "src": "17876:12:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                              "typeString": "struct BondStorage.BondParams storage pointer"
                                                            }
                                                          },
                                                          "id": 16030,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberLocation": "17889:13:55",
                                                          "memberName": "__periodicity",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 18562,
                                                          "src": "17876:26:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                            "typeString": "enum BondStorage.Periodicity"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                          "expression": {
                                                            "id": 16031,
                                                            "name": "Periodicity",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 18452,
                                                            "src": "17906:11:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                              "typeString": "type(enum BondStorage.Periodicity)"
                                                            }
                                                          },
                                                          "id": 16032,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "memberLocation": "17918:7:55",
                                                          "memberName": "Monthly",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 18451,
                                                          "src": "17906:19:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                            "typeString": "enum BondStorage.Periodicity"
                                                          }
                                                        },
                                                        "src": "17876:49:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "&&",
                                                      "rightExpression": {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        "id": 16037,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "id": 16034,
                                                          "name": "i",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15317,
                                                          "src": "17961:1:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">=",
                                                        "rightExpression": {
                                                          "expression": {
                                                            "id": 16035,
                                                            "name": "_bondDetails",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15200,
                                                            "src": "17966:12:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                              "typeString": "struct BondStorage.BondParams storage pointer"
                                                            }
                                                          },
                                                          "id": 16036,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberLocation": "17979:29:55",
                                                          "memberName": "__capitalAmortizationDuration",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 18492,
                                                          "src": "17966:42:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "src": "17961:47:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        }
                                                      },
                                                      "src": "17876:132:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      }
                                                    }
                                                  ],
                                                  "id": 16039,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "TupleExpression",
                                                  "src": "17846:188:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                },
                                                "src": "17416:618:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              "falseBody": {
                                                "id": 16111,
                                                "nodeType": "Block",
                                                "src": "18642:156:55",
                                                "statements": [
                                                  {
                                                    "expression": {
                                                      "arguments": [
                                                        {
                                                          "hexValue": "30",
                                                          "id": 16100,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "18701:1:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                          },
                                                          "value": "0"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "expression": {
                                                            "id": 16095,
                                                            "name": "_bondDetails",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15200,
                                                            "src": "18664:12:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                              "typeString": "struct BondStorage.BondParams storage pointer"
                                                            }
                                                          },
                                                          "id": 16098,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberLocation": "18677:18:55",
                                                          "memberName": "__capitalRepayment",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 18540,
                                                          "src": "18664:31:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                            "typeString": "uint256[] storage ref"
                                                          }
                                                        },
                                                        "id": 16099,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "18696:4:55",
                                                        "memberName": "push",
                                                        "nodeType": "MemberAccess",
                                                        "src": "18664:36:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                          "typeString": "function (uint256[] storage pointer,uint256)"
                                                        }
                                                      },
                                                      "id": 16101,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "nameLocations": [],
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "18664:39:55",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                      }
                                                    },
                                                    "id": 16102,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "18664:39:55"
                                                  },
                                                  {
                                                    "expression": {
                                                      "arguments": [
                                                        {
                                                          "id": 16108,
                                                          "name": "remainingCapital",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15222,
                                                          "src": "18762:16:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "expression": {
                                                            "id": 16103,
                                                            "name": "_bondDetails",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15200,
                                                            "src": "18725:12:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                              "typeString": "struct BondStorage.BondParams storage pointer"
                                                            }
                                                          },
                                                          "id": 16106,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberLocation": "18738:18:55",
                                                          "memberName": "__remainingCapital",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 18543,
                                                          "src": "18725:31:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                            "typeString": "uint256[] storage ref"
                                                          }
                                                        },
                                                        "id": 16107,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "18757:4:55",
                                                        "memberName": "push",
                                                        "nodeType": "MemberAccess",
                                                        "src": "18725:36:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                          "typeString": "function (uint256[] storage pointer,uint256)"
                                                        }
                                                      },
                                                      "id": 16109,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "nameLocations": [],
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "18725:54:55",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                      }
                                                    },
                                                    "id": 16110,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "18725:54:55"
                                                  }
                                                ]
                                              },
                                              "id": 16112,
                                              "nodeType": "IfStatement",
                                              "src": "17391:1407:55",
                                              "trueBody": {
                                                "id": 16094,
                                                "nodeType": "Block",
                                                "src": "18053:583:55",
                                                "statements": [
                                                  {
                                                    "condition": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 16045,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "id": 16041,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15317,
                                                        "src": "18079:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "<",
                                                      "rightExpression": {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        "id": 16044,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "id": 16042,
                                                          "name": "nbrOfPayments",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15215,
                                                          "src": "18083:13:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "-",
                                                        "rightExpression": {
                                                          "hexValue": "31",
                                                          "id": 16043,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "18099:1:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                          },
                                                          "value": "1"
                                                        },
                                                        "src": "18083:17:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "src": "18079:21:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      }
                                                    },
                                                    "falseBody": {
                                                      "id": 16092,
                                                      "nodeType": "Block",
                                                      "src": "18371:247:55",
                                                      "statements": [
                                                        {
                                                          "expression": {
                                                            "id": 16071,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                              "id": 16069,
                                                              "name": "remainingCapital",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15222,
                                                              "src": "18397:16:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                              "hexValue": "30",
                                                              "id": 16070,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "kind": "number",
                                                              "lValueRequested": false,
                                                              "nodeType": "Literal",
                                                              "src": "18416:1:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                              },
                                                              "value": "0"
                                                            },
                                                            "src": "18397:20:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "id": 16072,
                                                          "nodeType": "ExpressionStatement",
                                                          "src": "18397:20:55"
                                                        },
                                                        {
                                                          "expression": {
                                                            "arguments": [
                                                              {
                                                                "id": 16078,
                                                                "name": "remainingCapital",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15222,
                                                                "src": "18480:16:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              }
                                                            ],
                                                            "expression": {
                                                              "argumentTypes": [
                                                                {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              ],
                                                              "expression": {
                                                                "expression": {
                                                                  "id": 16073,
                                                                  "name": "_bondDetails",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 15200,
                                                                  "src": "18443:12:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                                                  }
                                                                },
                                                                "id": 16076,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "18456:18:55",
                                                                "memberName": "__remainingCapital",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 18543,
                                                                "src": "18443:31:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                                  "typeString": "uint256[] storage ref"
                                                                }
                                                              },
                                                              "id": 16077,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "memberLocation": "18475:4:55",
                                                              "memberName": "push",
                                                              "nodeType": "MemberAccess",
                                                              "src": "18443:36:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                                "typeString": "function (uint256[] storage pointer,uint256)"
                                                              }
                                                            },
                                                            "id": 16079,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "18443:54:55",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_tuple$__$",
                                                              "typeString": "tuple()"
                                                            }
                                                          },
                                                          "id": 16080,
                                                          "nodeType": "ExpressionStatement",
                                                          "src": "18443:54:55"
                                                        },
                                                        {
                                                          "expression": {
                                                            "arguments": [
                                                              {
                                                                "baseExpression": {
                                                                  "expression": {
                                                                    "id": 16086,
                                                                    "name": "_bondDetails",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 15200,
                                                                    "src": "18560:12:55",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                                                    }
                                                                  },
                                                                  "id": 16087,
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "memberLocation": "18573:18:55",
                                                                  "memberName": "__remainingCapital",
                                                                  "nodeType": "MemberAccess",
                                                                  "referencedDeclaration": 18543,
                                                                  "src": "18560:31:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                                    "typeString": "uint256[] storage ref"
                                                                  }
                                                                },
                                                                "id": 16089,
                                                                "indexExpression": {
                                                                  "id": 16088,
                                                                  "name": "i",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 15317,
                                                                  "src": "18592:1:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "18560:34:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              }
                                                            ],
                                                            "expression": {
                                                              "argumentTypes": [
                                                                {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              ],
                                                              "expression": {
                                                                "expression": {
                                                                  "id": 16081,
                                                                  "name": "_bondDetails",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 15200,
                                                                  "src": "18523:12:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                                                  }
                                                                },
                                                                "id": 16084,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "18536:18:55",
                                                                "memberName": "__capitalRepayment",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 18540,
                                                                "src": "18523:31:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                                  "typeString": "uint256[] storage ref"
                                                                }
                                                              },
                                                              "id": 16085,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "memberLocation": "18555:4:55",
                                                              "memberName": "push",
                                                              "nodeType": "MemberAccess",
                                                              "src": "18523:36:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                                "typeString": "function (uint256[] storage pointer,uint256)"
                                                              }
                                                            },
                                                            "id": 16090,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "18523:72:55",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_tuple$__$",
                                                              "typeString": "tuple()"
                                                            }
                                                          },
                                                          "id": 16091,
                                                          "nodeType": "ExpressionStatement",
                                                          "src": "18523:72:55"
                                                        }
                                                      ]
                                                    },
                                                    "id": 16093,
                                                    "nodeType": "IfStatement",
                                                    "src": "18075:543:55",
                                                    "trueBody": {
                                                      "id": 16068,
                                                      "nodeType": "Block",
                                                      "src": "18102:263:55",
                                                      "statements": [
                                                        {
                                                          "expression": {
                                                            "id": 16050,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                              "id": 16046,
                                                              "name": "remainingCapital",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15222,
                                                              "src": "18128:16:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                              "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              },
                                                              "id": 16049,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "leftExpression": {
                                                                "id": 16047,
                                                                "name": "remainingCapital",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15222,
                                                                "src": "18147:16:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              },
                                                              "nodeType": "BinaryOperation",
                                                              "operator": "-",
                                                              "rightExpression": {
                                                                "id": 16048,
                                                                "name": "capitalRepayment",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15218,
                                                                "src": "18166:16:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              },
                                                              "src": "18147:35:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "src": "18128:54:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "id": 16051,
                                                          "nodeType": "ExpressionStatement",
                                                          "src": "18128:54:55"
                                                        },
                                                        {
                                                          "expression": {
                                                            "arguments": [
                                                              {
                                                                "id": 16057,
                                                                "name": "capitalRepayment",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15218,
                                                                "src": "18245:16:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              }
                                                            ],
                                                            "expression": {
                                                              "argumentTypes": [
                                                                {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              ],
                                                              "expression": {
                                                                "expression": {
                                                                  "id": 16052,
                                                                  "name": "_bondDetails",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 15200,
                                                                  "src": "18208:12:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                                                  }
                                                                },
                                                                "id": 16055,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "18221:18:55",
                                                                "memberName": "__capitalRepayment",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 18540,
                                                                "src": "18208:31:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                                  "typeString": "uint256[] storage ref"
                                                                }
                                                              },
                                                              "id": 16056,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "memberLocation": "18240:4:55",
                                                              "memberName": "push",
                                                              "nodeType": "MemberAccess",
                                                              "src": "18208:36:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                                "typeString": "function (uint256[] storage pointer,uint256)"
                                                              }
                                                            },
                                                            "id": 16058,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "18208:54:55",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_tuple$__$",
                                                              "typeString": "tuple()"
                                                            }
                                                          },
                                                          "id": 16059,
                                                          "nodeType": "ExpressionStatement",
                                                          "src": "18208:54:55"
                                                        },
                                                        {
                                                          "expression": {
                                                            "arguments": [
                                                              {
                                                                "id": 16065,
                                                                "name": "remainingCapital",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15222,
                                                                "src": "18325:16:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              }
                                                            ],
                                                            "expression": {
                                                              "argumentTypes": [
                                                                {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              ],
                                                              "expression": {
                                                                "expression": {
                                                                  "id": 16060,
                                                                  "name": "_bondDetails",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 15200,
                                                                  "src": "18288:12:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                                                  }
                                                                },
                                                                "id": 16063,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "18301:18:55",
                                                                "memberName": "__remainingCapital",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 18543,
                                                                "src": "18288:31:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                                  "typeString": "uint256[] storage ref"
                                                                }
                                                              },
                                                              "id": 16064,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "memberLocation": "18320:4:55",
                                                              "memberName": "push",
                                                              "nodeType": "MemberAccess",
                                                              "src": "18288:36:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                                "typeString": "function (uint256[] storage pointer,uint256)"
                                                              }
                                                            },
                                                            "id": 16066,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "18288:54:55",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_tuple$__$",
                                                              "typeString": "tuple()"
                                                            }
                                                          },
                                                          "id": 16067,
                                                          "nodeType": "ExpressionStatement",
                                                          "src": "18288:54:55"
                                                        }
                                                      ]
                                                    }
                                                  }
                                                ]
                                              }
                                            },
                                            {
                                              "condition": {
                                                "commonType": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                },
                                                "id": 16151,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  },
                                                  "id": 16139,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "components": [
                                                      {
                                                        "commonType": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        },
                                                        "id": 16124,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "commonType": {
                                                            "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                            "typeString": "enum BondStorage.Periodicity"
                                                          },
                                                          "id": 16117,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "expression": {
                                                              "id": 16113,
                                                              "name": "_bondDetails",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15200,
                                                              "src": "18841:12:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                "typeString": "struct BondStorage.BondParams storage pointer"
                                                              }
                                                            },
                                                            "id": 16114,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "18854:13:55",
                                                            "memberName": "__periodicity",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 18562,
                                                            "src": "18841:26:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                              "typeString": "enum BondStorage.Periodicity"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "==",
                                                          "rightExpression": {
                                                            "expression": {
                                                              "id": 16115,
                                                              "name": "Periodicity",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 18452,
                                                              "src": "18871:11:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                                "typeString": "type(enum BondStorage.Periodicity)"
                                                              }
                                                            },
                                                            "id": 16116,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "memberLocation": "18883:6:55",
                                                            "memberName": "Annual",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 18449,
                                                            "src": "18871:18:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                              "typeString": "enum BondStorage.Periodicity"
                                                            }
                                                          },
                                                          "src": "18841:48:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&&",
                                                        "rightExpression": {
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "id": 16123,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "id": 16118,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15317,
                                                            "src": "18893:1:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "<",
                                                          "rightExpression": {
                                                            "commonType": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            },
                                                            "id": 16122,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                              "expression": {
                                                                "id": 16119,
                                                                "name": "_bondDetails",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15200,
                                                                "src": "18897:12:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                                                }
                                                              },
                                                              "id": 16120,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "memberLocation": "18910:21:55",
                                                              "memberName": "__gracePeriodDuration",
                                                              "nodeType": "MemberAccess",
                                                              "referencedDeclaration": 18494,
                                                              "src": "18897:34:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                              "hexValue": "3132",
                                                              "id": 16121,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "kind": "number",
                                                              "lValueRequested": false,
                                                              "nodeType": "Literal",
                                                              "src": "18934:2:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_12_by_1",
                                                                "typeString": "int_const 12"
                                                              },
                                                              "value": "12"
                                                            },
                                                            "src": "18897:39:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "src": "18893:43:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                          }
                                                        },
                                                        "src": "18841:95:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        }
                                                      }
                                                    ],
                                                    "id": 16125,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "18840:97:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "||",
                                                  "rightExpression": {
                                                    "components": [
                                                      {
                                                        "commonType": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        },
                                                        "id": 16137,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "commonType": {
                                                            "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                            "typeString": "enum BondStorage.Periodicity"
                                                          },
                                                          "id": 16130,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "expression": {
                                                              "id": 16126,
                                                              "name": "_bondDetails",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15200,
                                                              "src": "18995:12:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                "typeString": "struct BondStorage.BondParams storage pointer"
                                                              }
                                                            },
                                                            "id": 16127,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "19008:13:55",
                                                            "memberName": "__periodicity",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 18562,
                                                            "src": "18995:26:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                              "typeString": "enum BondStorage.Periodicity"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "==",
                                                          "rightExpression": {
                                                            "expression": {
                                                              "id": 16128,
                                                              "name": "Periodicity",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 18452,
                                                              "src": "19025:11:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                                "typeString": "type(enum BondStorage.Periodicity)"
                                                              }
                                                            },
                                                            "id": 16129,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "memberLocation": "19037:9:55",
                                                            "memberName": "Quarterly",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 18450,
                                                            "src": "19025:21:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                              "typeString": "enum BondStorage.Periodicity"
                                                            }
                                                          },
                                                          "src": "18995:51:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&&",
                                                        "rightExpression": {
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "id": 16136,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "id": 16131,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15317,
                                                            "src": "19082:1:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "<",
                                                          "rightExpression": {
                                                            "commonType": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            },
                                                            "id": 16135,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                              "expression": {
                                                                "id": 16132,
                                                                "name": "_bondDetails",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15200,
                                                                "src": "19086:12:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                                                }
                                                              },
                                                              "id": 16133,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "memberLocation": "19099:21:55",
                                                              "memberName": "__gracePeriodDuration",
                                                              "nodeType": "MemberAccess",
                                                              "referencedDeclaration": 18494,
                                                              "src": "19086:34:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                              "hexValue": "33",
                                                              "id": 16134,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "kind": "number",
                                                              "lValueRequested": false,
                                                              "nodeType": "Literal",
                                                              "src": "19123:1:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_3_by_1",
                                                                "typeString": "int_const 3"
                                                              },
                                                              "value": "3"
                                                            },
                                                            "src": "19086:38:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "src": "19082:42:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                          }
                                                        },
                                                        "src": "18995:129:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        }
                                                      }
                                                    ],
                                                    "id": 16138,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "18965:185:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  },
                                                  "src": "18840:310:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "||",
                                                "rightExpression": {
                                                  "components": [
                                                    {
                                                      "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      },
                                                      "id": 16149,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "commonType": {
                                                          "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                          "typeString": "enum BondStorage.Periodicity"
                                                        },
                                                        "id": 16144,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "expression": {
                                                            "id": 16140,
                                                            "name": "_bondDetails",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15200,
                                                            "src": "19155:12:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                              "typeString": "struct BondStorage.BondParams storage pointer"
                                                            }
                                                          },
                                                          "id": 16141,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberLocation": "19168:13:55",
                                                          "memberName": "__periodicity",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 18562,
                                                          "src": "19155:26:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                            "typeString": "enum BondStorage.Periodicity"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                          "expression": {
                                                            "id": 16142,
                                                            "name": "Periodicity",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 18452,
                                                            "src": "19185:11:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                              "typeString": "type(enum BondStorage.Periodicity)"
                                                            }
                                                          },
                                                          "id": 16143,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "memberLocation": "19197:7:55",
                                                          "memberName": "Monthly",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 18451,
                                                          "src": "19185:19:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                            "typeString": "enum BondStorage.Periodicity"
                                                          }
                                                        },
                                                        "src": "19155:49:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "&&",
                                                      "rightExpression": {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        "id": 16148,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "id": 16145,
                                                          "name": "i",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15317,
                                                          "src": "19208:1:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<",
                                                        "rightExpression": {
                                                          "expression": {
                                                            "id": 16146,
                                                            "name": "_bondDetails",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15200,
                                                            "src": "19212:12:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                              "typeString": "struct BondStorage.BondParams storage pointer"
                                                            }
                                                          },
                                                          "id": 16147,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberLocation": "19225:21:55",
                                                          "memberName": "__gracePeriodDuration",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 18494,
                                                          "src": "19212:34:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "src": "19208:38:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        }
                                                      },
                                                      "src": "19155:91:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      }
                                                    }
                                                  ],
                                                  "id": 16150,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "TupleExpression",
                                                  "src": "19154:93:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                },
                                                "src": "18840:407:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              "id": 16161,
                                              "nodeType": "IfStatement",
                                              "src": "18815:546:55",
                                              "trueBody": {
                                                "id": 16160,
                                                "nodeType": "Block",
                                                "src": "19266:95:55",
                                                "statements": [
                                                  {
                                                    "expression": {
                                                      "id": 16154,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftHandSide": {
                                                        "id": 16152,
                                                        "name": "grossInterest",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15519,
                                                        "src": "19288:13:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "Assignment",
                                                      "operator": "=",
                                                      "rightHandSide": {
                                                        "hexValue": "30",
                                                        "id": 16153,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "19304:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_0_by_1",
                                                          "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                      },
                                                      "src": "19288:17:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 16155,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "19288:17:55"
                                                  },
                                                  {
                                                    "expression": {
                                                      "id": 16158,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftHandSide": {
                                                        "id": 16156,
                                                        "name": "netInterest",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15558,
                                                        "src": "19327:11:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "Assignment",
                                                      "operator": "=",
                                                      "rightHandSide": {
                                                        "hexValue": "30",
                                                        "id": 16157,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "19341:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_0_by_1",
                                                          "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                      },
                                                      "src": "19327:15:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 16159,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "19327:15:55"
                                                  }
                                                ]
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      "id": 16164,
                                      "nodeType": "IfStatement",
                                      "src": "15896:3479:55",
                                      "trueBody": {
                                        "id": 15996,
                                        "nodeType": "Block",
                                        "src": "15967:1307:55",
                                        "statements": [
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "id": 15915,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "commonType": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                },
                                                "id": 15903,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "components": [
                                                    {
                                                      "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      },
                                                      "id": 15888,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "commonType": {
                                                          "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                          "typeString": "enum BondStorage.Periodicity"
                                                        },
                                                        "id": 15881,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "expression": {
                                                            "id": 15877,
                                                            "name": "_bondDetails",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15200,
                                                            "src": "16011:12:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                              "typeString": "struct BondStorage.BondParams storage pointer"
                                                            }
                                                          },
                                                          "id": 15878,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberLocation": "16024:13:55",
                                                          "memberName": "__periodicity",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 18562,
                                                          "src": "16011:26:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                            "typeString": "enum BondStorage.Periodicity"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                          "expression": {
                                                            "id": 15879,
                                                            "name": "Periodicity",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 18452,
                                                            "src": "16041:11:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                              "typeString": "type(enum BondStorage.Periodicity)"
                                                            }
                                                          },
                                                          "id": 15880,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "memberLocation": "16053:6:55",
                                                          "memberName": "Annual",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 18449,
                                                          "src": "16041:18:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                            "typeString": "enum BondStorage.Periodicity"
                                                          }
                                                        },
                                                        "src": "16011:48:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "&&",
                                                      "rightExpression": {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        "id": 15887,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "id": 15882,
                                                          "name": "i",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15317,
                                                          "src": "16063:1:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">=",
                                                        "rightExpression": {
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "id": 15886,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "expression": {
                                                              "id": 15883,
                                                              "name": "_bondDetails",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15200,
                                                              "src": "16068:12:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                "typeString": "struct BondStorage.BondParams storage pointer"
                                                              }
                                                            },
                                                            "id": 15884,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "16081:21:55",
                                                            "memberName": "__gracePeriodDuration",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 18494,
                                                            "src": "16068:34:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "/",
                                                          "rightExpression": {
                                                            "hexValue": "3132",
                                                            "id": 15885,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "16105:2:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_rational_12_by_1",
                                                              "typeString": "int_const 12"
                                                            },
                                                            "value": "12"
                                                          },
                                                          "src": "16068:39:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "src": "16063:44:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        }
                                                      },
                                                      "src": "16011:96:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      }
                                                    }
                                                  ],
                                                  "id": 15889,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "TupleExpression",
                                                  "src": "16010:98:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "||",
                                                "rightExpression": {
                                                  "components": [
                                                    {
                                                      "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      },
                                                      "id": 15901,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "commonType": {
                                                          "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                          "typeString": "enum BondStorage.Periodicity"
                                                        },
                                                        "id": 15894,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "expression": {
                                                            "id": 15890,
                                                            "name": "_bondDetails",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15200,
                                                            "src": "16166:12:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                              "typeString": "struct BondStorage.BondParams storage pointer"
                                                            }
                                                          },
                                                          "id": 15891,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberLocation": "16179:13:55",
                                                          "memberName": "__periodicity",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 18562,
                                                          "src": "16166:26:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                            "typeString": "enum BondStorage.Periodicity"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                          "expression": {
                                                            "id": 15892,
                                                            "name": "Periodicity",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 18452,
                                                            "src": "16196:11:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                              "typeString": "type(enum BondStorage.Periodicity)"
                                                            }
                                                          },
                                                          "id": 15893,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "memberLocation": "16208:9:55",
                                                          "memberName": "Quarterly",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 18450,
                                                          "src": "16196:21:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                            "typeString": "enum BondStorage.Periodicity"
                                                          }
                                                        },
                                                        "src": "16166:51:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "&&",
                                                      "rightExpression": {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        "id": 15900,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "id": 15895,
                                                          "name": "i",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15317,
                                                          "src": "16253:1:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">=",
                                                        "rightExpression": {
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "id": 15899,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "expression": {
                                                              "id": 15896,
                                                              "name": "_bondDetails",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15200,
                                                              "src": "16258:12:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                "typeString": "struct BondStorage.BondParams storage pointer"
                                                              }
                                                            },
                                                            "id": 15897,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "16271:21:55",
                                                            "memberName": "__gracePeriodDuration",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 18494,
                                                            "src": "16258:34:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "/",
                                                          "rightExpression": {
                                                            "hexValue": "33",
                                                            "id": 15898,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "16295:1:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_rational_3_by_1",
                                                              "typeString": "int_const 3"
                                                            },
                                                            "value": "3"
                                                          },
                                                          "src": "16258:38:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "src": "16253:43:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        }
                                                      },
                                                      "src": "16166:130:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      }
                                                    }
                                                  ],
                                                  "id": 15902,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "TupleExpression",
                                                  "src": "16136:186:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                },
                                                "src": "16010:312:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "||",
                                              "rightExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    },
                                                    "id": 15913,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                        "typeString": "enum BondStorage.Periodicity"
                                                      },
                                                      "id": 15908,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "expression": {
                                                          "id": 15904,
                                                          "name": "_bondDetails",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15200,
                                                          "src": "16327:12:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                                          }
                                                        },
                                                        "id": 15905,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "16340:13:55",
                                                        "memberName": "__periodicity",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 18562,
                                                        "src": "16327:26:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                          "typeString": "enum BondStorage.Periodicity"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "==",
                                                      "rightExpression": {
                                                        "expression": {
                                                          "id": 15906,
                                                          "name": "Periodicity",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 18452,
                                                          "src": "16357:11:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                            "typeString": "type(enum BondStorage.Periodicity)"
                                                          }
                                                        },
                                                        "id": 15907,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberLocation": "16369:7:55",
                                                        "memberName": "Monthly",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 18451,
                                                        "src": "16357:19:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                          "typeString": "enum BondStorage.Periodicity"
                                                        }
                                                      },
                                                      "src": "16327:49:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 15912,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "id": 15909,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15317,
                                                        "src": "16380:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": ">=",
                                                      "rightExpression": {
                                                        "expression": {
                                                          "id": 15910,
                                                          "name": "_bondDetails",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15200,
                                                          "src": "16385:12:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                                          }
                                                        },
                                                        "id": 15911,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "16398:21:55",
                                                        "memberName": "__gracePeriodDuration",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 18494,
                                                        "src": "16385:34:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "src": "16380:39:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      }
                                                    },
                                                    "src": "16327:92:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  }
                                                ],
                                                "id": 15914,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "16326:94:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              "src": "16010:410:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 15994,
                                              "nodeType": "Block",
                                              "src": "17028:232:55",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 15972,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 15970,
                                                      "name": "grossInterest",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15519,
                                                      "src": "17050:13:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "30",
                                                      "id": 15971,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "17066:1:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                      },
                                                      "value": "0"
                                                    },
                                                    "src": "17050:17:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 15973,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "17050:17:55"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 15976,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 15974,
                                                      "name": "netInterest",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15558,
                                                      "src": "17089:11:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "30",
                                                      "id": 15975,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "17103:1:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                      },
                                                      "value": "0"
                                                    },
                                                    "src": "17089:15:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 15977,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "17089:15:55"
                                                },
                                                {
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "hexValue": "30",
                                                        "id": 15983,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "17163:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_0_by_1",
                                                          "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_rational_0_by_1",
                                                          "typeString": "int_const 0"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "expression": {
                                                          "id": 15978,
                                                          "name": "_bondDetails",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15200,
                                                          "src": "17126:12:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                                          }
                                                        },
                                                        "id": 15981,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "17139:18:55",
                                                        "memberName": "__capitalRepayment",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 18540,
                                                        "src": "17126:31:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                          "typeString": "uint256[] storage ref"
                                                        }
                                                      },
                                                      "id": 15982,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberLocation": "17158:4:55",
                                                      "memberName": "push",
                                                      "nodeType": "MemberAccess",
                                                      "src": "17126:36:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                        "typeString": "function (uint256[] storage pointer,uint256)"
                                                      }
                                                    },
                                                    "id": 15984,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "17126:39:55",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_tuple$__$",
                                                      "typeString": "tuple()"
                                                    }
                                                  },
                                                  "id": 15985,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "17126:39:55"
                                                },
                                                {
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "id": 15991,
                                                        "name": "remainingCapital",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15222,
                                                        "src": "17224:16:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "expression": {
                                                          "id": 15986,
                                                          "name": "_bondDetails",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15200,
                                                          "src": "17187:12:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                                          }
                                                        },
                                                        "id": 15989,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "17200:18:55",
                                                        "memberName": "__remainingCapital",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 18543,
                                                        "src": "17187:31:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                          "typeString": "uint256[] storage ref"
                                                        }
                                                      },
                                                      "id": 15990,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberLocation": "17219:4:55",
                                                      "memberName": "push",
                                                      "nodeType": "MemberAccess",
                                                      "src": "17187:36:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                        "typeString": "function (uint256[] storage pointer,uint256)"
                                                      }
                                                    },
                                                    "id": 15992,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "17187:54:55",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_tuple$__$",
                                                      "typeString": "tuple()"
                                                    }
                                                  },
                                                  "id": 15993,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "17187:54:55"
                                                }
                                              ]
                                            },
                                            "id": 15995,
                                            "nodeType": "IfStatement",
                                            "src": "15985:1275:55",
                                            "trueBody": {
                                              "id": 15969,
                                              "nodeType": "Block",
                                              "src": "16439:583:55",
                                              "statements": [
                                                {
                                                  "condition": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 15920,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 15916,
                                                      "name": "i",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15317,
                                                      "src": "16465:1:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 15919,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "id": 15917,
                                                        "name": "nbrOfPayments",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15215,
                                                        "src": "16469:13:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "-",
                                                      "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 15918,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "16485:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                      },
                                                      "src": "16469:17:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "16465:21:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  },
                                                  "falseBody": {
                                                    "id": 15967,
                                                    "nodeType": "Block",
                                                    "src": "16757:247:55",
                                                    "statements": [
                                                      {
                                                        "expression": {
                                                          "id": 15946,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftHandSide": {
                                                            "id": 15944,
                                                            "name": "remainingCapital",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15222,
                                                            "src": "16783:16:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "nodeType": "Assignment",
                                                          "operator": "=",
                                                          "rightHandSide": {
                                                            "hexValue": "30",
                                                            "id": 15945,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "16802:1:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_rational_0_by_1",
                                                              "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                          },
                                                          "src": "16783:20:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 15947,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "16783:20:55"
                                                      },
                                                      {
                                                        "expression": {
                                                          "arguments": [
                                                            {
                                                              "id": 15953,
                                                              "name": "remainingCapital",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15222,
                                                              "src": "16866:16:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            ],
                                                            "expression": {
                                                              "expression": {
                                                                "id": 15948,
                                                                "name": "_bondDetails",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15200,
                                                                "src": "16829:12:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                                                }
                                                              },
                                                              "id": 15951,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "memberLocation": "16842:18:55",
                                                              "memberName": "__remainingCapital",
                                                              "nodeType": "MemberAccess",
                                                              "referencedDeclaration": 18543,
                                                              "src": "16829:31:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                                "typeString": "uint256[] storage ref"
                                                              }
                                                            },
                                                            "id": 15952,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "16861:4:55",
                                                            "memberName": "push",
                                                            "nodeType": "MemberAccess",
                                                            "src": "16829:36:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                              "typeString": "function (uint256[] storage pointer,uint256)"
                                                            }
                                                          },
                                                          "id": 15954,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "functionCall",
                                                          "lValueRequested": false,
                                                          "nameLocations": [],
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "16829:54:55",
                                                          "tryCall": false,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                          }
                                                        },
                                                        "id": 15955,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "16829:54:55"
                                                      },
                                                      {
                                                        "expression": {
                                                          "arguments": [
                                                            {
                                                              "baseExpression": {
                                                                "expression": {
                                                                  "id": 15961,
                                                                  "name": "_bondDetails",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 15200,
                                                                  "src": "16946:12:55",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                                                  }
                                                                },
                                                                "id": 15962,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "16959:18:55",
                                                                "memberName": "__remainingCapital",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 18543,
                                                                "src": "16946:31:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                                  "typeString": "uint256[] storage ref"
                                                                }
                                                              },
                                                              "id": 15964,
                                                              "indexExpression": {
                                                                "id": 15963,
                                                                "name": "i",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15317,
                                                                "src": "16978:1:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              },
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "nodeType": "IndexAccess",
                                                              "src": "16946:34:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            ],
                                                            "expression": {
                                                              "expression": {
                                                                "id": 15956,
                                                                "name": "_bondDetails",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15200,
                                                                "src": "16909:12:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                                                }
                                                              },
                                                              "id": 15959,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "memberLocation": "16922:18:55",
                                                              "memberName": "__capitalRepayment",
                                                              "nodeType": "MemberAccess",
                                                              "referencedDeclaration": 18540,
                                                              "src": "16909:31:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                                "typeString": "uint256[] storage ref"
                                                              }
                                                            },
                                                            "id": 15960,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "16941:4:55",
                                                            "memberName": "push",
                                                            "nodeType": "MemberAccess",
                                                            "src": "16909:36:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                              "typeString": "function (uint256[] storage pointer,uint256)"
                                                            }
                                                          },
                                                          "id": 15965,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "functionCall",
                                                          "lValueRequested": false,
                                                          "nameLocations": [],
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "16909:72:55",
                                                          "tryCall": false,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                          }
                                                        },
                                                        "id": 15966,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "16909:72:55"
                                                      }
                                                    ]
                                                  },
                                                  "id": 15968,
                                                  "nodeType": "IfStatement",
                                                  "src": "16461:543:55",
                                                  "trueBody": {
                                                    "id": 15943,
                                                    "nodeType": "Block",
                                                    "src": "16488:263:55",
                                                    "statements": [
                                                      {
                                                        "expression": {
                                                          "id": 15925,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftHandSide": {
                                                            "id": 15921,
                                                            "name": "remainingCapital",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15222,
                                                            "src": "16514:16:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "nodeType": "Assignment",
                                                          "operator": "=",
                                                          "rightHandSide": {
                                                            "commonType": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            },
                                                            "id": 15924,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                              "id": 15922,
                                                              "name": "remainingCapital",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15222,
                                                              "src": "16533:16:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "-",
                                                            "rightExpression": {
                                                              "id": 15923,
                                                              "name": "capitalRepayment",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15218,
                                                              "src": "16552:16:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "src": "16533:35:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "src": "16514:54:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 15926,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "16514:54:55"
                                                      },
                                                      {
                                                        "expression": {
                                                          "arguments": [
                                                            {
                                                              "id": 15932,
                                                              "name": "capitalRepayment",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15218,
                                                              "src": "16631:16:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            ],
                                                            "expression": {
                                                              "expression": {
                                                                "id": 15927,
                                                                "name": "_bondDetails",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15200,
                                                                "src": "16594:12:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                                                }
                                                              },
                                                              "id": 15930,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "memberLocation": "16607:18:55",
                                                              "memberName": "__capitalRepayment",
                                                              "nodeType": "MemberAccess",
                                                              "referencedDeclaration": 18540,
                                                              "src": "16594:31:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                                "typeString": "uint256[] storage ref"
                                                              }
                                                            },
                                                            "id": 15931,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "16626:4:55",
                                                            "memberName": "push",
                                                            "nodeType": "MemberAccess",
                                                            "src": "16594:36:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                              "typeString": "function (uint256[] storage pointer,uint256)"
                                                            }
                                                          },
                                                          "id": 15933,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "functionCall",
                                                          "lValueRequested": false,
                                                          "nameLocations": [],
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "16594:54:55",
                                                          "tryCall": false,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                          }
                                                        },
                                                        "id": 15934,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "16594:54:55"
                                                      },
                                                      {
                                                        "expression": {
                                                          "arguments": [
                                                            {
                                                              "id": 15940,
                                                              "name": "remainingCapital",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15222,
                                                              "src": "16711:16:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            ],
                                                            "expression": {
                                                              "expression": {
                                                                "id": 15935,
                                                                "name": "_bondDetails",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15200,
                                                                "src": "16674:12:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                                                }
                                                              },
                                                              "id": 15938,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "memberLocation": "16687:18:55",
                                                              "memberName": "__remainingCapital",
                                                              "nodeType": "MemberAccess",
                                                              "referencedDeclaration": 18543,
                                                              "src": "16674:31:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                                "typeString": "uint256[] storage ref"
                                                              }
                                                            },
                                                            "id": 15939,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "16706:4:55",
                                                            "memberName": "push",
                                                            "nodeType": "MemberAccess",
                                                            "src": "16674:36:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                              "typeString": "function (uint256[] storage pointer,uint256)"
                                                            }
                                                          },
                                                          "id": 15941,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "functionCall",
                                                          "lValueRequested": false,
                                                          "nameLocations": [],
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "16674:54:55",
                                                          "tryCall": false,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                          }
                                                        },
                                                        "id": 15942,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "16674:54:55"
                                                      }
                                                    ]
                                                  }
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      }
                                    },
                                    "id": 16165,
                                    "nodeType": "IfStatement",
                                    "src": "14358:5017:55",
                                    "trueBody": {
                                      "id": 15871,
                                      "nodeType": "Block",
                                      "src": "14451:1439:55",
                                      "statements": [
                                        {
                                          "condition": {
                                            "commonType": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "id": 15798,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "id": 15786,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    },
                                                    "id": 15771,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                        "typeString": "enum BondStorage.Periodicity"
                                                      },
                                                      "id": 15764,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "expression": {
                                                          "id": 15760,
                                                          "name": "_bondDetails",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15200,
                                                          "src": "14520:12:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                                          }
                                                        },
                                                        "id": 15761,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "14533:13:55",
                                                        "memberName": "__periodicity",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 18562,
                                                        "src": "14520:26:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                          "typeString": "enum BondStorage.Periodicity"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "==",
                                                      "rightExpression": {
                                                        "expression": {
                                                          "id": 15762,
                                                          "name": "Periodicity",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 18452,
                                                          "src": "14550:11:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                            "typeString": "type(enum BondStorage.Periodicity)"
                                                          }
                                                        },
                                                        "id": 15763,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberLocation": "14562:6:55",
                                                        "memberName": "Annual",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 18449,
                                                        "src": "14550:18:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                          "typeString": "enum BondStorage.Periodicity"
                                                        }
                                                      },
                                                      "src": "14520:48:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 15770,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "id": 15765,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15317,
                                                        "src": "14600:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": ">=",
                                                      "rightExpression": {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        "id": 15769,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "expression": {
                                                            "id": 15766,
                                                            "name": "_bondDetails",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15200,
                                                            "src": "14605:12:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                              "typeString": "struct BondStorage.BondParams storage pointer"
                                                            }
                                                          },
                                                          "id": 15767,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberLocation": "14618:29:55",
                                                          "memberName": "__capitalAmortizationDuration",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 18492,
                                                          "src": "14605:42:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "/",
                                                        "rightExpression": {
                                                          "hexValue": "3132",
                                                          "id": 15768,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "14650:2:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_12_by_1",
                                                            "typeString": "int_const 12"
                                                          },
                                                          "value": "12"
                                                        },
                                                        "src": "14605:47:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "src": "14600:52:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      }
                                                    },
                                                    "src": "14520:132:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  }
                                                ],
                                                "id": 15772,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "14494:180:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "||",
                                              "rightExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    },
                                                    "id": 15784,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                        "typeString": "enum BondStorage.Periodicity"
                                                      },
                                                      "id": 15777,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "expression": {
                                                          "id": 15773,
                                                          "name": "_bondDetails",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15200,
                                                          "src": "14732:12:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                                          }
                                                        },
                                                        "id": 15774,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "14745:13:55",
                                                        "memberName": "__periodicity",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 18562,
                                                        "src": "14732:26:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                          "typeString": "enum BondStorage.Periodicity"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "==",
                                                      "rightExpression": {
                                                        "expression": {
                                                          "id": 15775,
                                                          "name": "Periodicity",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 18452,
                                                          "src": "14762:11:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                            "typeString": "type(enum BondStorage.Periodicity)"
                                                          }
                                                        },
                                                        "id": 15776,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberLocation": "14774:9:55",
                                                        "memberName": "Quarterly",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 18450,
                                                        "src": "14762:21:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                          "typeString": "enum BondStorage.Periodicity"
                                                        }
                                                      },
                                                      "src": "14732:51:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 15783,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "id": 15778,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15317,
                                                        "src": "14819:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": ">=",
                                                      "rightExpression": {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        "id": 15782,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "expression": {
                                                            "id": 15779,
                                                            "name": "_bondDetails",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15200,
                                                            "src": "14824:12:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                              "typeString": "struct BondStorage.BondParams storage pointer"
                                                            }
                                                          },
                                                          "id": 15780,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberLocation": "14837:29:55",
                                                          "memberName": "__capitalAmortizationDuration",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 18492,
                                                          "src": "14824:42:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "/",
                                                        "rightExpression": {
                                                          "hexValue": "33",
                                                          "id": 15781,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "14869:1:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_3_by_1",
                                                            "typeString": "int_const 3"
                                                          },
                                                          "value": "3"
                                                        },
                                                        "src": "14824:46:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "src": "14819:51:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      }
                                                    },
                                                    "src": "14732:138:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  }
                                                ],
                                                "id": 15785,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "14702:194:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              "src": "14494:402:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "||",
                                            "rightExpression": {
                                              "components": [
                                                {
                                                  "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  },
                                                  "id": 15796,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                      "typeString": "enum BondStorage.Periodicity"
                                                    },
                                                    "id": 15791,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "expression": {
                                                        "id": 15787,
                                                        "name": "_bondDetails",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15200,
                                                        "src": "14954:12:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                          "typeString": "struct BondStorage.BondParams storage pointer"
                                                        }
                                                      },
                                                      "id": 15788,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberLocation": "14967:13:55",
                                                      "memberName": "__periodicity",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 18562,
                                                      "src": "14954:26:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                        "typeString": "enum BondStorage.Periodicity"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                      "expression": {
                                                        "id": 15789,
                                                        "name": "Periodicity",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 18452,
                                                        "src": "14984:11:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                                          "typeString": "type(enum BondStorage.Periodicity)"
                                                        }
                                                      },
                                                      "id": 15790,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "memberLocation": "14996:7:55",
                                                      "memberName": "Monthly",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 18451,
                                                      "src": "14984:19:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_enum$_Periodicity_$18452",
                                                        "typeString": "enum BondStorage.Periodicity"
                                                      }
                                                    },
                                                    "src": "14954:49:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "&&",
                                                  "rightExpression": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 15795,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 15792,
                                                      "name": "i",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15317,
                                                      "src": "15039:1:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                      "expression": {
                                                        "id": 15793,
                                                        "name": "_bondDetails",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15200,
                                                        "src": "15044:12:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                          "typeString": "struct BondStorage.BondParams storage pointer"
                                                        }
                                                      },
                                                      "id": 15794,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberLocation": "15057:29:55",
                                                      "memberName": "__capitalAmortizationDuration",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 18492,
                                                      "src": "15044:42:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "15039:47:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  },
                                                  "src": "14954:132:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                }
                                              ],
                                              "id": 15797,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "14924:188:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "src": "14494:618:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseBody": {
                                            "id": 15869,
                                            "nodeType": "Block",
                                            "src": "15720:156:55",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "arguments": [
                                                    {
                                                      "hexValue": "30",
                                                      "id": 15858,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "15779:1:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                      },
                                                      "value": "0"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "expression": {
                                                        "id": 15853,
                                                        "name": "_bondDetails",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15200,
                                                        "src": "15742:12:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                          "typeString": "struct BondStorage.BondParams storage pointer"
                                                        }
                                                      },
                                                      "id": 15856,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberLocation": "15755:18:55",
                                                      "memberName": "__capitalRepayment",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 18540,
                                                      "src": "15742:31:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                        "typeString": "uint256[] storage ref"
                                                      }
                                                    },
                                                    "id": 15857,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "15774:4:55",
                                                    "memberName": "push",
                                                    "nodeType": "MemberAccess",
                                                    "src": "15742:36:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                      "typeString": "function (uint256[] storage pointer,uint256)"
                                                    }
                                                  },
                                                  "id": 15859,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "15742:39:55",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_tuple$__$",
                                                    "typeString": "tuple()"
                                                  }
                                                },
                                                "id": 15860,
                                                "nodeType": "ExpressionStatement",
                                                "src": "15742:39:55"
                                              },
                                              {
                                                "expression": {
                                                  "arguments": [
                                                    {
                                                      "id": 15866,
                                                      "name": "remainingCapital",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15222,
                                                      "src": "15840:16:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "expression": {
                                                        "id": 15861,
                                                        "name": "_bondDetails",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15200,
                                                        "src": "15803:12:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                          "typeString": "struct BondStorage.BondParams storage pointer"
                                                        }
                                                      },
                                                      "id": 15864,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberLocation": "15816:18:55",
                                                      "memberName": "__remainingCapital",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 18543,
                                                      "src": "15803:31:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                        "typeString": "uint256[] storage ref"
                                                      }
                                                    },
                                                    "id": 15865,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "15835:4:55",
                                                    "memberName": "push",
                                                    "nodeType": "MemberAccess",
                                                    "src": "15803:36:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                      "typeString": "function (uint256[] storage pointer,uint256)"
                                                    }
                                                  },
                                                  "id": 15867,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "15803:54:55",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_tuple$__$",
                                                    "typeString": "tuple()"
                                                  }
                                                },
                                                "id": 15868,
                                                "nodeType": "ExpressionStatement",
                                                "src": "15803:54:55"
                                              }
                                            ]
                                          },
                                          "id": 15870,
                                          "nodeType": "IfStatement",
                                          "src": "14469:1407:55",
                                          "trueBody": {
                                            "id": 15852,
                                            "nodeType": "Block",
                                            "src": "15131:583:55",
                                            "statements": [
                                              {
                                                "condition": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 15803,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 15799,
                                                    "name": "i",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 15317,
                                                    "src": "15157:1:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "<",
                                                  "rightExpression": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 15802,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 15800,
                                                      "name": "nbrOfPayments",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15215,
                                                      "src": "15161:13:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                      "hexValue": "31",
                                                      "id": 15801,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "15177:1:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "15161:17:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "15157:21:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                },
                                                "falseBody": {
                                                  "id": 15850,
                                                  "nodeType": "Block",
                                                  "src": "15449:247:55",
                                                  "statements": [
                                                    {
                                                      "expression": {
                                                        "id": 15829,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                          "id": 15827,
                                                          "name": "remainingCapital",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15222,
                                                          "src": "15475:16:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "=",
                                                        "rightHandSide": {
                                                          "hexValue": "30",
                                                          "id": 15828,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "15494:1:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                          },
                                                          "value": "0"
                                                        },
                                                        "src": "15475:20:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "id": 15830,
                                                      "nodeType": "ExpressionStatement",
                                                      "src": "15475:20:55"
                                                    },
                                                    {
                                                      "expression": {
                                                        "arguments": [
                                                          {
                                                            "id": 15836,
                                                            "name": "remainingCapital",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15222,
                                                            "src": "15558:16:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          ],
                                                          "expression": {
                                                            "expression": {
                                                              "id": 15831,
                                                              "name": "_bondDetails",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15200,
                                                              "src": "15521:12:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                "typeString": "struct BondStorage.BondParams storage pointer"
                                                              }
                                                            },
                                                            "id": 15834,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "15534:18:55",
                                                            "memberName": "__remainingCapital",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 18543,
                                                            "src": "15521:31:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                              "typeString": "uint256[] storage ref"
                                                            }
                                                          },
                                                          "id": 15835,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberLocation": "15553:4:55",
                                                          "memberName": "push",
                                                          "nodeType": "MemberAccess",
                                                          "src": "15521:36:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                            "typeString": "function (uint256[] storage pointer,uint256)"
                                                          }
                                                        },
                                                        "id": 15837,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "15521:54:55",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_tuple$__$",
                                                          "typeString": "tuple()"
                                                        }
                                                      },
                                                      "id": 15838,
                                                      "nodeType": "ExpressionStatement",
                                                      "src": "15521:54:55"
                                                    },
                                                    {
                                                      "expression": {
                                                        "arguments": [
                                                          {
                                                            "baseExpression": {
                                                              "expression": {
                                                                "id": 15844,
                                                                "name": "_bondDetails",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 15200,
                                                                "src": "15638:12:55",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                                                }
                                                              },
                                                              "id": 15845,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "memberLocation": "15651:18:55",
                                                              "memberName": "__remainingCapital",
                                                              "nodeType": "MemberAccess",
                                                              "referencedDeclaration": 18543,
                                                              "src": "15638:31:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                                "typeString": "uint256[] storage ref"
                                                              }
                                                            },
                                                            "id": 15847,
                                                            "indexExpression": {
                                                              "id": 15846,
                                                              "name": "i",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15317,
                                                              "src": "15670:1:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "15638:34:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          ],
                                                          "expression": {
                                                            "expression": {
                                                              "id": 15839,
                                                              "name": "_bondDetails",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15200,
                                                              "src": "15601:12:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                "typeString": "struct BondStorage.BondParams storage pointer"
                                                              }
                                                            },
                                                            "id": 15842,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "15614:18:55",
                                                            "memberName": "__capitalRepayment",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 18540,
                                                            "src": "15601:31:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                              "typeString": "uint256[] storage ref"
                                                            }
                                                          },
                                                          "id": 15843,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberLocation": "15633:4:55",
                                                          "memberName": "push",
                                                          "nodeType": "MemberAccess",
                                                          "src": "15601:36:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                            "typeString": "function (uint256[] storage pointer,uint256)"
                                                          }
                                                        },
                                                        "id": 15848,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "15601:72:55",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_tuple$__$",
                                                          "typeString": "tuple()"
                                                        }
                                                      },
                                                      "id": 15849,
                                                      "nodeType": "ExpressionStatement",
                                                      "src": "15601:72:55"
                                                    }
                                                  ]
                                                },
                                                "id": 15851,
                                                "nodeType": "IfStatement",
                                                "src": "15153:543:55",
                                                "trueBody": {
                                                  "id": 15826,
                                                  "nodeType": "Block",
                                                  "src": "15180:263:55",
                                                  "statements": [
                                                    {
                                                      "expression": {
                                                        "id": 15808,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                          "id": 15804,
                                                          "name": "remainingCapital",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15222,
                                                          "src": "15206:16:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "=",
                                                        "rightHandSide": {
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "id": 15807,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "id": 15805,
                                                            "name": "remainingCapital",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15222,
                                                            "src": "15225:16:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "-",
                                                          "rightExpression": {
                                                            "id": 15806,
                                                            "name": "capitalRepayment",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15218,
                                                            "src": "15244:16:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "src": "15225:35:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "src": "15206:54:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "id": 15809,
                                                      "nodeType": "ExpressionStatement",
                                                      "src": "15206:54:55"
                                                    },
                                                    {
                                                      "expression": {
                                                        "arguments": [
                                                          {
                                                            "id": 15815,
                                                            "name": "capitalRepayment",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15218,
                                                            "src": "15323:16:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          ],
                                                          "expression": {
                                                            "expression": {
                                                              "id": 15810,
                                                              "name": "_bondDetails",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15200,
                                                              "src": "15286:12:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                "typeString": "struct BondStorage.BondParams storage pointer"
                                                              }
                                                            },
                                                            "id": 15813,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "15299:18:55",
                                                            "memberName": "__capitalRepayment",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 18540,
                                                            "src": "15286:31:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                              "typeString": "uint256[] storage ref"
                                                            }
                                                          },
                                                          "id": 15814,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberLocation": "15318:4:55",
                                                          "memberName": "push",
                                                          "nodeType": "MemberAccess",
                                                          "src": "15286:36:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                            "typeString": "function (uint256[] storage pointer,uint256)"
                                                          }
                                                        },
                                                        "id": 15816,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "15286:54:55",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_tuple$__$",
                                                          "typeString": "tuple()"
                                                        }
                                                      },
                                                      "id": 15817,
                                                      "nodeType": "ExpressionStatement",
                                                      "src": "15286:54:55"
                                                    },
                                                    {
                                                      "expression": {
                                                        "arguments": [
                                                          {
                                                            "id": 15823,
                                                            "name": "remainingCapital",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15222,
                                                            "src": "15403:16:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          ],
                                                          "expression": {
                                                            "expression": {
                                                              "id": 15818,
                                                              "name": "_bondDetails",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 15200,
                                                              "src": "15366:12:55",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                                "typeString": "struct BondStorage.BondParams storage pointer"
                                                              }
                                                            },
                                                            "id": 15821,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "15379:18:55",
                                                            "memberName": "__remainingCapital",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 18543,
                                                            "src": "15366:31:55",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                              "typeString": "uint256[] storage ref"
                                                            }
                                                          },
                                                          "id": 15822,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberLocation": "15398:4:55",
                                                          "memberName": "push",
                                                          "nodeType": "MemberAccess",
                                                          "src": "15366:36:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                            "typeString": "function (uint256[] storage pointer,uint256)"
                                                          }
                                                        },
                                                        "id": 15824,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "15366:54:55",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_tuple$__$",
                                                          "typeString": "tuple()"
                                                        }
                                                      },
                                                      "id": 15825,
                                                      "nodeType": "ExpressionStatement",
                                                      "src": "15366:54:55"
                                                    }
                                                  ]
                                                }
                                              }
                                            ]
                                          }
                                        }
                                      ]
                                    }
                                  },
                                  "id": 16166,
                                  "nodeType": "IfStatement",
                                  "src": "13796:5579:55",
                                  "trueBody": {
                                    "id": 15754,
                                    "nodeType": "Block",
                                    "src": "13866:486:55",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 15709,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 15705,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15317,
                                            "src": "13888:1:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 15708,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 15706,
                                              "name": "nbrOfPayments",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 15215,
                                              "src": "13892:13:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "hexValue": "31",
                                              "id": 15707,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "13908:1:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "13892:17:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "13888:21:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": {
                                          "id": 15752,
                                          "nodeType": "Block",
                                          "src": "14164:174:55",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "hexValue": "30",
                                                    "id": 15738,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "14223:1:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "expression": {
                                                      "id": 15733,
                                                      "name": "_bondDetails",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15200,
                                                      "src": "14186:12:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                                      }
                                                    },
                                                    "id": 15736,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "14199:18:55",
                                                    "memberName": "__remainingCapital",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 18543,
                                                    "src": "14186:31:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                      "typeString": "uint256[] storage ref"
                                                    }
                                                  },
                                                  "id": 15737,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "14218:4:55",
                                                  "memberName": "push",
                                                  "nodeType": "MemberAccess",
                                                  "src": "14186:36:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                    "typeString": "function (uint256[] storage pointer,uint256)"
                                                  }
                                                },
                                                "id": 15739,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "14186:39:55",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 15740,
                                              "nodeType": "ExpressionStatement",
                                              "src": "14186:39:55"
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "baseExpression": {
                                                      "expression": {
                                                        "id": 15746,
                                                        "name": "_bondDetails",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15200,
                                                        "src": "14284:12:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                          "typeString": "struct BondStorage.BondParams storage pointer"
                                                        }
                                                      },
                                                      "id": 15747,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberLocation": "14297:18:55",
                                                      "memberName": "__remainingCapital",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 18543,
                                                      "src": "14284:31:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                        "typeString": "uint256[] storage ref"
                                                      }
                                                    },
                                                    "id": 15749,
                                                    "indexExpression": {
                                                      "id": 15748,
                                                      "name": "i",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15317,
                                                      "src": "14316:1:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "14284:34:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "expression": {
                                                      "id": 15741,
                                                      "name": "_bondDetails",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15200,
                                                      "src": "14247:12:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                                      }
                                                    },
                                                    "id": 15744,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "14260:18:55",
                                                    "memberName": "__capitalRepayment",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 18540,
                                                    "src": "14247:31:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                      "typeString": "uint256[] storage ref"
                                                    }
                                                  },
                                                  "id": 15745,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "14279:4:55",
                                                  "memberName": "push",
                                                  "nodeType": "MemberAccess",
                                                  "src": "14247:36:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                    "typeString": "function (uint256[] storage pointer,uint256)"
                                                  }
                                                },
                                                "id": 15750,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "14247:72:55",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 15751,
                                              "nodeType": "ExpressionStatement",
                                              "src": "14247:72:55"
                                            }
                                          ]
                                        },
                                        "id": 15753,
                                        "nodeType": "IfStatement",
                                        "src": "13884:454:55",
                                        "trueBody": {
                                          "id": 15732,
                                          "nodeType": "Block",
                                          "src": "13911:247:55",
                                          "statements": [
                                            {
                                              "expression": {
                                                "id": 15714,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                  "id": 15710,
                                                  "name": "remainingCapital",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 15222,
                                                  "src": "13933:16:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 15713,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 15711,
                                                    "name": "remainingCapital",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 15222,
                                                    "src": "13952:16:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "-",
                                                  "rightExpression": {
                                                    "id": 15712,
                                                    "name": "capitalRepayment",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 15218,
                                                    "src": "13971:16:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "13952:35:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "13933:54:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 15715,
                                              "nodeType": "ExpressionStatement",
                                              "src": "13933:54:55"
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "id": 15721,
                                                    "name": "remainingCapital",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 15222,
                                                    "src": "14046:16:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "expression": {
                                                      "id": 15716,
                                                      "name": "_bondDetails",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15200,
                                                      "src": "14009:12:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                                      }
                                                    },
                                                    "id": 15719,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "14022:18:55",
                                                    "memberName": "__remainingCapital",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 18543,
                                                    "src": "14009:31:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                      "typeString": "uint256[] storage ref"
                                                    }
                                                  },
                                                  "id": 15720,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "14041:4:55",
                                                  "memberName": "push",
                                                  "nodeType": "MemberAccess",
                                                  "src": "14009:36:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                    "typeString": "function (uint256[] storage pointer,uint256)"
                                                  }
                                                },
                                                "id": 15722,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "14009:54:55",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 15723,
                                              "nodeType": "ExpressionStatement",
                                              "src": "14009:54:55"
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "id": 15729,
                                                    "name": "capitalRepayment",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 15218,
                                                    "src": "14122:16:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "expression": {
                                                      "id": 15724,
                                                      "name": "_bondDetails",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15200,
                                                      "src": "14085:12:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                                      }
                                                    },
                                                    "id": 15727,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "14098:18:55",
                                                    "memberName": "__capitalRepayment",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 18540,
                                                    "src": "14085:31:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                      "typeString": "uint256[] storage ref"
                                                    }
                                                  },
                                                  "id": 15728,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "14117:4:55",
                                                  "memberName": "push",
                                                  "nodeType": "MemberAccess",
                                                  "src": "14085:36:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                    "typeString": "function (uint256[] storage pointer,uint256)"
                                                  }
                                                },
                                                "id": 15730,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "14085:54:55",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 15731,
                                              "nodeType": "ExpressionStatement",
                                              "src": "14085:54:55"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                },
                                "id": 16167,
                                "nodeType": "IfStatement",
                                "src": "12936:6439:55",
                                "trueBody": {
                                  "id": 15699,
                                  "nodeType": "Block",
                                  "src": "13003:787:55",
                                  "statements": [
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 15616,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 15614,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15317,
                                          "src": "13025:1:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 15615,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "13030:1:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "13025:6:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 15662,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 15658,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15317,
                                            "src": "13434:1:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 15661,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 15659,
                                              "name": "nbrOfPayments",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 15215,
                                              "src": "13439:13:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "hexValue": "31",
                                              "id": 15660,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "13455:1:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "13439:17:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "13434:22:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": {
                                          "id": 15696,
                                          "nodeType": "Block",
                                          "src": "13620:156:55",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "id": 15685,
                                                    "name": "remainingCapital",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 15222,
                                                    "src": "13679:16:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "expression": {
                                                      "id": 15680,
                                                      "name": "_bondDetails",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15200,
                                                      "src": "13642:12:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                                      }
                                                    },
                                                    "id": 15683,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "13655:18:55",
                                                    "memberName": "__remainingCapital",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 18543,
                                                    "src": "13642:31:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                      "typeString": "uint256[] storage ref"
                                                    }
                                                  },
                                                  "id": 15684,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "13674:4:55",
                                                  "memberName": "push",
                                                  "nodeType": "MemberAccess",
                                                  "src": "13642:36:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                    "typeString": "function (uint256[] storage pointer,uint256)"
                                                  }
                                                },
                                                "id": 15686,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "13642:54:55",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 15687,
                                              "nodeType": "ExpressionStatement",
                                              "src": "13642:54:55"
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "hexValue": "30",
                                                    "id": 15693,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "13755:1:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "expression": {
                                                      "id": 15688,
                                                      "name": "_bondDetails",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15200,
                                                      "src": "13718:12:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                                      }
                                                    },
                                                    "id": 15691,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "13731:18:55",
                                                    "memberName": "__capitalRepayment",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 18540,
                                                    "src": "13718:31:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                      "typeString": "uint256[] storage ref"
                                                    }
                                                  },
                                                  "id": 15692,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "13750:4:55",
                                                  "memberName": "push",
                                                  "nodeType": "MemberAccess",
                                                  "src": "13718:36:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                    "typeString": "function (uint256[] storage pointer,uint256)"
                                                  }
                                                },
                                                "id": 15694,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "13718:39:55",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 15695,
                                              "nodeType": "ExpressionStatement",
                                              "src": "13718:39:55"
                                            }
                                          ]
                                        },
                                        "id": 15697,
                                        "nodeType": "IfStatement",
                                        "src": "13430:346:55",
                                        "trueBody": {
                                          "id": 15679,
                                          "nodeType": "Block",
                                          "src": "13458:156:55",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "hexValue": "30",
                                                    "id": 15668,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "13517:1:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "expression": {
                                                      "id": 15663,
                                                      "name": "_bondDetails",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15200,
                                                      "src": "13480:12:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                                      }
                                                    },
                                                    "id": 15666,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "13493:18:55",
                                                    "memberName": "__remainingCapital",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 18543,
                                                    "src": "13480:31:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                      "typeString": "uint256[] storage ref"
                                                    }
                                                  },
                                                  "id": 15667,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "13512:4:55",
                                                  "memberName": "push",
                                                  "nodeType": "MemberAccess",
                                                  "src": "13480:36:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                    "typeString": "function (uint256[] storage pointer,uint256)"
                                                  }
                                                },
                                                "id": 15669,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "13480:39:55",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 15670,
                                              "nodeType": "ExpressionStatement",
                                              "src": "13480:39:55"
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "id": 15676,
                                                    "name": "remainingCapital",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 15222,
                                                    "src": "13578:16:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "expression": {
                                                      "id": 15671,
                                                      "name": "_bondDetails",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 15200,
                                                      "src": "13541:12:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                                      }
                                                    },
                                                    "id": 15674,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "13554:18:55",
                                                    "memberName": "__capitalRepayment",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 18540,
                                                    "src": "13541:31:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                      "typeString": "uint256[] storage ref"
                                                    }
                                                  },
                                                  "id": 15675,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "13573:4:55",
                                                  "memberName": "push",
                                                  "nodeType": "MemberAccess",
                                                  "src": "13541:36:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                    "typeString": "function (uint256[] storage pointer,uint256)"
                                                  }
                                                },
                                                "id": 15677,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "13541:54:55",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 15678,
                                              "nodeType": "ExpressionStatement",
                                              "src": "13541:54:55"
                                            }
                                          ]
                                        }
                                      },
                                      "id": 15698,
                                      "nodeType": "IfStatement",
                                      "src": "13021:755:55",
                                      "trueBody": {
                                        "id": 15657,
                                        "nodeType": "Block",
                                        "src": "13033:391:55",
                                        "statements": [
                                          {
                                            "assignments": [
                                              15618
                                            ],
                                            "declarations": [
                                              {
                                                "constant": false,
                                                "id": 15618,
                                                "mutability": "mutable",
                                                "name": "balloonRate",
                                                "nameLocation": "13063:11:55",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 15657,
                                                "src": "13055:19:55",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "typeName": {
                                                  "id": 15617,
                                                  "name": "uint256",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "13055:7:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "visibility": "internal"
                                              }
                                            ],
                                            "id": 15621,
                                            "initialValue": {
                                              "expression": {
                                                "id": 15619,
                                                "name": "_bondDetails",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 15200,
                                                "src": "13077:12:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                                }
                                              },
                                              "id": 15620,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "13090:13:55",
                                              "memberName": "__balloonRate",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 18484,
                                              "src": "13077:26:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "13055:48:55"
                                          },
                                          {
                                            "assignments": [
                                              15623
                                            ],
                                            "declarations": [
                                              {
                                                "constant": false,
                                                "id": 15623,
                                                "mutability": "mutable",
                                                "name": "temp",
                                                "nameLocation": "13133:4:55",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 15657,
                                                "src": "13125:12:55",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "typeName": {
                                                  "id": 15622,
                                                  "name": "uint256",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "13125:7:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "visibility": "internal"
                                              }
                                            ],
                                            "id": 15634,
                                            "initialValue": {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "id": 15627,
                                                          "name": "balloonRate",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15618,
                                                          "src": "13160:11:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "id": 15626,
                                                        "name": "ud60x18",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12643,
                                                        "src": "13152:7:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                          "typeString": "function (uint256) pure returns (UD60x18)"
                                                        }
                                                      },
                                                      "id": 15628,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "nameLocations": [],
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "13152:20:55",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                        "typeString": "UD60x18"
                                                      }
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "id": 15630,
                                                          "name": "remainingCapital",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 15222,
                                                          "src": "13182:16:55",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "id": 15629,
                                                        "name": "ud60x18",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12643,
                                                        "src": "13174:7:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                          "typeString": "function (uint256) pure returns (UD60x18)"
                                                        }
                                                      },
                                                      "id": 15631,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "nameLocations": [],
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "13174:25:55",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                        "typeString": "UD60x18"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                        "typeString": "UD60x18"
                                                      },
                                                      {
                                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                        "typeString": "UD60x18"
                                                      }
                                                    ],
                                                    "id": 15625,
                                                    "name": "mul",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13951,
                                                    "src": "13148:3:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                      "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                                    }
                                                  },
                                                  "id": 15632,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "13148:52:55",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                    "typeString": "UD60x18"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                    "typeString": "UD60x18"
                                                  }
                                                ],
                                                "id": 15624,
                                                "name": "convert",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [
                                                  12834,
                                                  12865
                                                ],
                                                "referencedDeclaration": 12834,
                                                "src": "13140:7:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                                }
                                              },
                                              "id": 15633,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "13140:61:55",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "13125:76:55"
                                          },
                                          {
                                            "expression": {
                                              "id": 15639,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 15635,
                                                "name": "remainingCapital",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 15222,
                                                "src": "13223:16:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 15638,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 15636,
                                                  "name": "remainingCapital",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 15222,
                                                  "src": "13242:16:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "-",
                                                "rightExpression": {
                                                  "id": 15637,
                                                  "name": "temp",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 15623,
                                                  "src": "13261:4:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "13242:23:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "13223:42:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 15640,
                                            "nodeType": "ExpressionStatement",
                                            "src": "13223:42:55"
                                          },
                                          {
                                            "expression": {
                                              "arguments": [
                                                {
                                                  "id": 15646,
                                                  "name": "remainingCapital",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 15222,
                                                  "src": "13324:16:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "expression": {
                                                    "id": 15641,
                                                    "name": "_bondDetails",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 15200,
                                                    "src": "13287:12:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                                    }
                                                  },
                                                  "id": 15644,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "13300:18:55",
                                                  "memberName": "__remainingCapital",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 18543,
                                                  "src": "13287:31:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                    "typeString": "uint256[] storage ref"
                                                  }
                                                },
                                                "id": 15645,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "13319:4:55",
                                                "memberName": "push",
                                                "nodeType": "MemberAccess",
                                                "src": "13287:36:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                  "typeString": "function (uint256[] storage pointer,uint256)"
                                                }
                                              },
                                              "id": 15647,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "13287:54:55",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$__$",
                                                "typeString": "tuple()"
                                              }
                                            },
                                            "id": 15648,
                                            "nodeType": "ExpressionStatement",
                                            "src": "13287:54:55"
                                          },
                                          {
                                            "expression": {
                                              "arguments": [
                                                {
                                                  "id": 15654,
                                                  "name": "temp",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 15623,
                                                  "src": "13400:4:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "expression": {
                                                    "id": 15649,
                                                    "name": "_bondDetails",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 15200,
                                                    "src": "13363:12:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                                    }
                                                  },
                                                  "id": 15652,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "13376:18:55",
                                                  "memberName": "__capitalRepayment",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 18540,
                                                  "src": "13363:31:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                    "typeString": "uint256[] storage ref"
                                                  }
                                                },
                                                "id": 15653,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "13395:4:55",
                                                "memberName": "push",
                                                "nodeType": "MemberAccess",
                                                "src": "13363:36:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                  "typeString": "function (uint256[] storage pointer,uint256)"
                                                }
                                              },
                                              "id": 15655,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "13363:42:55",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$__$",
                                                "typeString": "tuple()"
                                              }
                                            },
                                            "id": 15656,
                                            "nodeType": "ExpressionStatement",
                                            "src": "13363:42:55"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 16168,
                              "nodeType": "IfStatement",
                              "src": "12487:6888:55",
                              "trueBody": {
                                "id": 15608,
                                "nodeType": "Block",
                                "src": "12553:377:55",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 15572,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 15568,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15317,
                                        "src": "12575:1:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 15571,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 15569,
                                          "name": "nbrOfPayments",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15215,
                                          "src": "12579:13:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "hexValue": "31",
                                          "id": 15570,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12595:1:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "12579:17:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "12575:21:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 15606,
                                      "nodeType": "Block",
                                      "src": "12760:156:55",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 15595,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12819:1:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                }
                                              ],
                                              "expression": {
                                                "expression": {
                                                  "id": 15590,
                                                  "name": "_bondDetails",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 15200,
                                                  "src": "12782:12:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                                  }
                                                },
                                                "id": 15593,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "12795:18:55",
                                                "memberName": "__remainingCapital",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 18543,
                                                "src": "12782:31:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                  "typeString": "uint256[] storage ref"
                                                }
                                              },
                                              "id": 15594,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "12814:4:55",
                                              "memberName": "push",
                                              "nodeType": "MemberAccess",
                                              "src": "12782:36:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                "typeString": "function (uint256[] storage pointer,uint256)"
                                              }
                                            },
                                            "id": 15596,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12782:39:55",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 15597,
                                          "nodeType": "ExpressionStatement",
                                          "src": "12782:39:55"
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 15603,
                                                "name": "remainingCapital",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 15222,
                                                "src": "12880:16:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "expression": {
                                                  "id": 15598,
                                                  "name": "_bondDetails",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 15200,
                                                  "src": "12843:12:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                                  }
                                                },
                                                "id": 15601,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "12856:18:55",
                                                "memberName": "__capitalRepayment",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 18540,
                                                "src": "12843:31:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                  "typeString": "uint256[] storage ref"
                                                }
                                              },
                                              "id": 15602,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "12875:4:55",
                                              "memberName": "push",
                                              "nodeType": "MemberAccess",
                                              "src": "12843:36:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                "typeString": "function (uint256[] storage pointer,uint256)"
                                              }
                                            },
                                            "id": 15604,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12843:54:55",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 15605,
                                          "nodeType": "ExpressionStatement",
                                          "src": "12843:54:55"
                                        }
                                      ]
                                    },
                                    "id": 15607,
                                    "nodeType": "IfStatement",
                                    "src": "12571:345:55",
                                    "trueBody": {
                                      "id": 15589,
                                      "nodeType": "Block",
                                      "src": "12598:156:55",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 15578,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12657:1:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                }
                                              ],
                                              "expression": {
                                                "expression": {
                                                  "id": 15573,
                                                  "name": "_bondDetails",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 15200,
                                                  "src": "12620:12:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                                  }
                                                },
                                                "id": 15576,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "12633:18:55",
                                                "memberName": "__capitalRepayment",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 18540,
                                                "src": "12620:31:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                  "typeString": "uint256[] storage ref"
                                                }
                                              },
                                              "id": 15577,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "12652:4:55",
                                              "memberName": "push",
                                              "nodeType": "MemberAccess",
                                              "src": "12620:36:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                "typeString": "function (uint256[] storage pointer,uint256)"
                                              }
                                            },
                                            "id": 15579,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12620:39:55",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 15580,
                                          "nodeType": "ExpressionStatement",
                                          "src": "12620:39:55"
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 15586,
                                                "name": "remainingCapital",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 15222,
                                                "src": "12718:16:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "expression": {
                                                  "id": 15581,
                                                  "name": "_bondDetails",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 15200,
                                                  "src": "12681:12:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                                  }
                                                },
                                                "id": 15584,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "12694:18:55",
                                                "memberName": "__remainingCapital",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 18543,
                                                "src": "12681:31:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                  "typeString": "uint256[] storage ref"
                                                }
                                              },
                                              "id": 15585,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "12713:4:55",
                                              "memberName": "push",
                                              "nodeType": "MemberAccess",
                                              "src": "12681:36:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                                "typeString": "function (uint256[] storage pointer,uint256)"
                                              }
                                            },
                                            "id": 15587,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12681:54:55",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 15588,
                                          "nodeType": "ExpressionStatement",
                                          "src": "12681:54:55"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 16174,
                                    "name": "grossInterest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15519,
                                    "src": "19425:13:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "expression": {
                                      "id": 16169,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15200,
                                      "src": "19388:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 16172,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "19401:18:55",
                                    "memberName": "__grossCouponRates",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18531,
                                    "src": "19388:31:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 16173,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "19420:4:55",
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "src": "19388:36:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                    "typeString": "function (uint256[] storage pointer,uint256)"
                                  }
                                },
                                "id": 16175,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19388:51:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 16176,
                              "nodeType": "ExpressionStatement",
                              "src": "19388:51:55"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 16182,
                                    "name": "netInterest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15558,
                                    "src": "19489:11:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "expression": {
                                      "id": 16177,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15200,
                                      "src": "19454:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 16180,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "19467:16:55",
                                    "memberName": "__netCouponRates",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18537,
                                    "src": "19454:29:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 16181,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "19484:4:55",
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "src": "19454:34:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                    "typeString": "function (uint256[] storage pointer,uint256)"
                                  }
                                },
                                "id": 16183,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19454:47:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 16184,
                              "nodeType": "ExpressionStatement",
                              "src": "19454:47:55"
                            },
                            {
                              "expression": {
                                "id": 16189,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 16185,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15200,
                                    "src": "19515:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 16187,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "19528:17:55",
                                  "memberName": "__totalToBeRepaid",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18508,
                                  "src": "19515:30:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 16188,
                                  "name": "netInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15558,
                                  "src": "19549:11:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19515:45:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 16190,
                              "nodeType": "ExpressionStatement",
                              "src": "19515:45:55"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 15322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 15320,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15317,
                            "src": "9331:1:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 15321,
                            "name": "nbrOfPayments",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15215,
                            "src": "9335:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9331:17:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16192,
                        "initializationExpression": {
                          "assignments": [
                            15317
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 15317,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "9324:1:55",
                              "nodeType": "VariableDeclaration",
                              "scope": 16192,
                              "src": "9316:9:55",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 15316,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9316:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 15319,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 15318,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9328:1:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "9316:13:55"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 15324,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "9350:3:55",
                            "subExpression": {
                              "id": 15323,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15317,
                              "src": "9352:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 15325,
                          "nodeType": "ExpressionStatement",
                          "src": "9350:3:55"
                        },
                        "nodeType": "ForStatement",
                        "src": "9311:10260:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 16194,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15186,
                              "src": "19610:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 16195,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15200,
                                "src": "19619:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 16196,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "19632:22:55",
                              "memberName": "__periodicInterestRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18480,
                              "src": "19619:35:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16193,
                            "name": "PeriodicInterestRateSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14739,
                            "src": "19586:23:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 16197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19586:69:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16198,
                        "nodeType": "EmitStatement",
                        "src": "19581:74:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 16200,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15186,
                              "src": "19700:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 16201,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15200,
                                "src": "19721:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 16202,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "19734:13:55",
                              "memberName": "__couponDates",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18534,
                              "src": "19721:26:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            {
                              "expression": {
                                "id": 16203,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15200,
                                "src": "19761:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 16204,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "19774:18:55",
                              "memberName": "__remainingCapital",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18543,
                              "src": "19761:31:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            {
                              "expression": {
                                "id": 16205,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15200,
                                "src": "19806:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 16206,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "19819:18:55",
                              "memberName": "__capitalRepayment",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18540,
                              "src": "19806:31:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            {
                              "expression": {
                                "id": 16207,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15200,
                                "src": "19851:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 16208,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "19864:18:55",
                              "memberName": "__grossCouponRates",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18531,
                              "src": "19851:31:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            {
                              "expression": {
                                "id": 16209,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15200,
                                "src": "19896:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 16210,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "19909:16:55",
                              "memberName": "__netCouponRates",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18537,
                              "src": "19896:29:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            ],
                            "id": 16199,
                            "name": "CouponsComputed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14675,
                            "src": "19671:15:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (uint256,uint256[] memory,uint256[] memory,uint256[] memory,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 16211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19671:264:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16212,
                        "nodeType": "EmitStatement",
                        "src": "19666:269:55"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "expression": {
                                "id": 16213,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15200,
                                "src": "19953:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 16214,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "19966:13:55",
                              "memberName": "__couponDates",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18534,
                              "src": "19953:26:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            {
                              "expression": {
                                "id": 16215,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15200,
                                "src": "19981:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 16216,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "19994:18:55",
                              "memberName": "__grossCouponRates",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18531,
                              "src": "19981:31:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            {
                              "expression": {
                                "id": 16217,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15200,
                                "src": "20014:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 16218,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "20027:16:55",
                              "memberName": "__netCouponRates",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18537,
                              "src": "20014:29:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            }
                          ],
                          "id": 16219,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "19952:92:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_storage_$_t_array$_t_uint256_$dyn_storage_$_t_array$_t_uint256_$dyn_storage_$",
                            "typeString": "tuple(uint256[] storage ref,uint256[] storage ref,uint256[] storage ref)"
                          }
                        },
                        "functionReturnParameters": 15197,
                        "id": 16220,
                        "nodeType": "Return",
                        "src": "19945:99:55"
                      }
                    ]
                  },
                  "id": 16222,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setCouponRates",
                  "nameLocation": "8103:14:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15187,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15186,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "8126:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 16222,
                        "src": "8118:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15185,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8118:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8117:17:55"
                  },
                  "returnParameters": {
                    "id": 15197,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15190,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16222,
                        "src": "8153:16:55",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 15188,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8153:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 15189,
                          "nodeType": "ArrayTypeName",
                          "src": "8153:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15193,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16222,
                        "src": "8171:16:55",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 15191,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8171:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 15192,
                          "nodeType": "ArrayTypeName",
                          "src": "8171:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15196,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16222,
                        "src": "8189:16:55",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 15194,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8189:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 15195,
                          "nodeType": "ArrayTypeName",
                          "src": "8189:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8152:54:55"
                  },
                  "scope": 18048,
                  "src": "8094:11957:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16910,
                    "nodeType": "Block",
                    "src": "20146:6285:55",
                    "statements": [
                      {
                        "assignments": [
                          16232
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16232,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "20248:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 16910,
                            "src": "20229:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 16231,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 16230,
                                "name": "BondParams",
                                "nameLocations": [
                                  "20229:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "20229:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "20229:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16237,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 16234,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16225,
                                "src": "20275:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16235,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "20278:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "20275:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16233,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "20263:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 16236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20263:24:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20229:58:55"
                      },
                      {
                        "expression": {
                          "id": 16243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 16238,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16232,
                              "src": "20297:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 16240,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "20310:8:55",
                            "memberName": "__issuer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18575,
                            "src": "20297:21:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 16241,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16225,
                              "src": "20321:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            "id": 16242,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "20324:8:55",
                            "memberName": "__issuer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22861,
                            "src": "20321:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "20297:35:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 16244,
                        "nodeType": "ExpressionStatement",
                        "src": "20297:35:55"
                      },
                      {
                        "expression": {
                          "id": 16250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 16245,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16232,
                              "src": "20342:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 16247,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "20355:9:55",
                            "memberName": "__coupure",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18474,
                            "src": "20342:22:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 16248,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16225,
                              "src": "20367:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            "id": 16249,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "20370:9:55",
                            "memberName": "__coupure",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22833,
                            "src": "20367:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20342:37:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16251,
                        "nodeType": "ExpressionStatement",
                        "src": "20342:37:55"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 16252,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16225,
                              "src": "20393:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            "id": 16253,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "20396:13:55",
                            "memberName": "__interestDen",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22837,
                            "src": "20393:16:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 16254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20413:1:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20393:21:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16260,
                        "nodeType": "IfStatement",
                        "src": "20389:73:55",
                        "trueBody": {
                          "id": 16259,
                          "nodeType": "Block",
                          "src": "20416:46:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 16256,
                                  "name": "DivideByZero",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14803,
                                  "src": "20437:12:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 16257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20437:14:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 16258,
                              "nodeType": "RevertStatement",
                              "src": "20430:21:55"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 16261,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16225,
                              "src": "20475:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            "id": 16262,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "20478:13:55",
                            "memberName": "__periodicity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22855,
                            "src": "20475:16:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 16265,
                                  "name": "Periodicity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18452,
                                  "src": "20503:11:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                    "typeString": "type(enum BondStorage.Periodicity)"
                                  }
                                },
                                "id": 16266,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "20515:6:55",
                                "memberName": "Annual",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18449,
                                "src": "20503:18:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Periodicity_$18452",
                                  "typeString": "enum BondStorage.Periodicity"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_Periodicity_$18452",
                                  "typeString": "enum BondStorage.Periodicity"
                                }
                              ],
                              "id": 16264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "20495:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 16263,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "20495:7:55",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 16267,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20495:27:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20475:47:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16288,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 16281,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16225,
                                "src": "20658:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16282,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "20661:13:55",
                              "memberName": "__periodicity",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22855,
                              "src": "20658:16:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 16285,
                                    "name": "Periodicity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18452,
                                    "src": "20686:11:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                      "typeString": "type(enum BondStorage.Periodicity)"
                                    }
                                  },
                                  "id": 16286,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "20698:9:55",
                                  "memberName": "Quarterly",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18450,
                                  "src": "20686:21:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Periodicity_$18452",
                                    "typeString": "enum BondStorage.Periodicity"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_Periodicity_$18452",
                                    "typeString": "enum BondStorage.Periodicity"
                                  }
                                ],
                                "id": 16284,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "20678:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 16283,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "20678:7:55",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 16287,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20678:30:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "20658:50:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 16301,
                          "nodeType": "IfStatement",
                          "src": "20654:178:55",
                          "trueBody": {
                            "id": 16300,
                            "nodeType": "Block",
                            "src": "20710:122:55",
                            "statements": [
                              {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16294,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16292,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 16289,
                                        "name": "bi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16225,
                                        "src": "20728:2:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                          "typeString": "struct BondInitParams.BondInit memory"
                                        }
                                      },
                                      "id": 16290,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "20731:10:55",
                                      "memberName": "__duration",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22847,
                                      "src": "20728:13:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "%",
                                    "rightExpression": {
                                      "hexValue": "33",
                                      "id": 16291,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "20744:1:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "src": "20728:17:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 16293,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20749:1:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "20728:22:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 16299,
                                "nodeType": "IfStatement",
                                "src": "20724:98:55",
                                "trueBody": {
                                  "id": 16298,
                                  "nodeType": "Block",
                                  "src": "20752:70:55",
                                  "statements": [
                                    {
                                      "errorCall": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 16295,
                                          "name": "DurationIsNotAMultpleOfThree",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14785,
                                          "src": "20777:28:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                            "typeString": "function () pure returns (error)"
                                          }
                                        },
                                        "id": 16296,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "20777:30:55",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_error",
                                          "typeString": "error"
                                        }
                                      },
                                      "id": 16297,
                                      "nodeType": "RevertStatement",
                                      "src": "20770:37:55"
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        },
                        "id": 16302,
                        "nodeType": "IfStatement",
                        "src": "20471:361:55",
                        "trueBody": {
                          "id": 16280,
                          "nodeType": "Block",
                          "src": "20524:124:55",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16272,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 16269,
                                      "name": "bi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16225,
                                      "src": "20542:2:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                        "typeString": "struct BondInitParams.BondInit memory"
                                      }
                                    },
                                    "id": 16270,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "20545:10:55",
                                    "memberName": "__duration",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22847,
                                    "src": "20542:13:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "%",
                                  "rightExpression": {
                                    "hexValue": "3132",
                                    "id": 16271,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20558:2:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_12_by_1",
                                      "typeString": "int_const 12"
                                    },
                                    "value": "12"
                                  },
                                  "src": "20542:18:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 16273,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20564:1:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "20542:23:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 16279,
                              "nodeType": "IfStatement",
                              "src": "20538:100:55",
                              "trueBody": {
                                "id": 16278,
                                "nodeType": "Block",
                                "src": "20567:71:55",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 16275,
                                        "name": "DurationIsNotAMultpleOfTwelve",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14783,
                                        "src": "20592:29:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 16276,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20592:31:55",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 16277,
                                    "nodeType": "RevertStatement",
                                    "src": "20585:38:55"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 16303,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16225,
                              "src": "20845:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            "id": 16304,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "20848:21:55",
                            "memberName": "__gracePeriodDuration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22851,
                            "src": "20845:24:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 16305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20873:1:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20845:29:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16370,
                        "nodeType": "IfStatement",
                        "src": "20841:722:55",
                        "trueBody": {
                          "id": 16369,
                          "nodeType": "Block",
                          "src": "20876:687:55",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 16307,
                                    "name": "bi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16225,
                                    "src": "20894:2:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                      "typeString": "struct BondInitParams.BondInit memory"
                                    }
                                  },
                                  "id": 16308,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "20897:13:55",
                                  "memberName": "__periodicity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22855,
                                  "src": "20894:16:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 16311,
                                        "name": "Periodicity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18452,
                                        "src": "20922:11:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                          "typeString": "type(enum BondStorage.Periodicity)"
                                        }
                                      },
                                      "id": 16312,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "20934:6:55",
                                      "memberName": "Annual",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 18449,
                                      "src": "20922:18:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Periodicity_$18452",
                                        "typeString": "enum BondStorage.Periodicity"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_Periodicity_$18452",
                                        "typeString": "enum BondStorage.Periodicity"
                                      }
                                    ],
                                    "id": 16310,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "20914:7:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 16309,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "20914:7:55",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 16313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20914:27:55",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20894:47:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16344,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 16337,
                                      "name": "bi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16225,
                                      "src": "21228:2:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                        "typeString": "struct BondInitParams.BondInit memory"
                                      }
                                    },
                                    "id": 16338,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "21231:13:55",
                                    "memberName": "__periodicity",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22855,
                                    "src": "21228:16:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 16341,
                                          "name": "Periodicity",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18452,
                                          "src": "21256:11:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                            "typeString": "type(enum BondStorage.Periodicity)"
                                          }
                                        },
                                        "id": 16342,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "21268:9:55",
                                        "memberName": "Quarterly",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18450,
                                        "src": "21256:21:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_Periodicity_$18452",
                                          "typeString": "enum BondStorage.Periodicity"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_enum$_Periodicity_$18452",
                                          "typeString": "enum BondStorage.Periodicity"
                                        }
                                      ],
                                      "id": 16340,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "21248:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 16339,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "21248:7:55",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 16343,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "21248:30:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "21228:50:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 16367,
                                "nodeType": "IfStatement",
                                "src": "21224:329:55",
                                "trueBody": {
                                  "id": 16366,
                                  "nodeType": "Block",
                                  "src": "21280:273:55",
                                  "statements": [
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 16350,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 16348,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 16345,
                                              "name": "bi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 16225,
                                              "src": "21302:2:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                                "typeString": "struct BondInitParams.BondInit memory"
                                              }
                                            },
                                            "id": 16346,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "21305:21:55",
                                            "memberName": "__gracePeriodDuration",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22851,
                                            "src": "21302:24:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "%",
                                          "rightExpression": {
                                            "hexValue": "33",
                                            "id": 16347,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "21329:1:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_3_by_1",
                                              "typeString": "int_const 3"
                                            },
                                            "value": "3"
                                          },
                                          "src": "21302:28:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 16349,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "21334:1:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "21302:33:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 16364,
                                        "nodeType": "Block",
                                        "src": "21432:107:55",
                                        "statements": [
                                          {
                                            "expression": {
                                              "arguments": [
                                                {
                                                  "expression": {
                                                    "id": 16358,
                                                    "name": "bi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 16225,
                                                    "src": "21482:2:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                                      "typeString": "struct BondInitParams.BondInit memory"
                                                    }
                                                  },
                                                  "id": 16359,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "21485:8:55",
                                                  "memberName": "__bondId",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 22823,
                                                  "src": "21482:11:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "id": 16360,
                                                    "name": "bi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 16225,
                                                    "src": "21495:2:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                                      "typeString": "struct BondInitParams.BondInit memory"
                                                    }
                                                  },
                                                  "id": 16361,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "21498:21:55",
                                                  "memberName": "__gracePeriodDuration",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 22851,
                                                  "src": "21495:24:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "id": 16355,
                                                  "name": "this",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": -28,
                                                  "src": "21454:4:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_BondFacet_$18048",
                                                    "typeString": "contract BondFacet"
                                                  }
                                                },
                                                "id": 16357,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "21459:22:55",
                                                "memberName": "setGracePeriodDuration",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17263,
                                                "src": "21454:27:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                                                  "typeString": "function (uint256,uint256) external"
                                                }
                                              },
                                              "id": 16362,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "21454:66:55",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$__$",
                                                "typeString": "tuple()"
                                              }
                                            },
                                            "id": 16363,
                                            "nodeType": "ExpressionStatement",
                                            "src": "21454:66:55"
                                          }
                                        ]
                                      },
                                      "id": 16365,
                                      "nodeType": "IfStatement",
                                      "src": "21298:241:55",
                                      "trueBody": {
                                        "id": 16354,
                                        "nodeType": "Block",
                                        "src": "21337:89:55",
                                        "statements": [
                                          {
                                            "errorCall": {
                                              "arguments": [],
                                              "expression": {
                                                "argumentTypes": [],
                                                "id": 16351,
                                                "name": "GracePeriodDurationIsNotAMultpleOfThree",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14789,
                                                "src": "21366:39:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                                  "typeString": "function () pure returns (error)"
                                                }
                                              },
                                              "id": 16352,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "21366:41:55",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_error",
                                                "typeString": "error"
                                              }
                                            },
                                            "id": 16353,
                                            "nodeType": "RevertStatement",
                                            "src": "21359:48:55"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 16368,
                              "nodeType": "IfStatement",
                              "src": "20890:663:55",
                              "trueBody": {
                                "id": 16336,
                                "nodeType": "Block",
                                "src": "20943:275:55",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 16320,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 16318,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 16315,
                                            "name": "bi",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16225,
                                            "src": "20965:2:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                              "typeString": "struct BondInitParams.BondInit memory"
                                            }
                                          },
                                          "id": 16316,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "20968:21:55",
                                          "memberName": "__gracePeriodDuration",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22851,
                                          "src": "20965:24:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "%",
                                        "rightExpression": {
                                          "hexValue": "3132",
                                          "id": 16317,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "20992:2:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_12_by_1",
                                            "typeString": "int_const 12"
                                          },
                                          "value": "12"
                                        },
                                        "src": "20965:29:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 16319,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "20998:1:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "20965:34:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 16334,
                                      "nodeType": "Block",
                                      "src": "21097:107:55",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "expression": {
                                                  "id": 16328,
                                                  "name": "bi",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 16225,
                                                  "src": "21147:2:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                                    "typeString": "struct BondInitParams.BondInit memory"
                                                  }
                                                },
                                                "id": 16329,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "21150:8:55",
                                                "memberName": "__bondId",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 22823,
                                                "src": "21147:11:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "expression": {
                                                  "id": 16330,
                                                  "name": "bi",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 16225,
                                                  "src": "21160:2:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                                    "typeString": "struct BondInitParams.BondInit memory"
                                                  }
                                                },
                                                "id": 16331,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "21163:21:55",
                                                "memberName": "__gracePeriodDuration",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 22851,
                                                "src": "21160:24:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "id": 16325,
                                                "name": "this",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -28,
                                                "src": "21119:4:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_BondFacet_$18048",
                                                  "typeString": "contract BondFacet"
                                                }
                                              },
                                              "id": 16327,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "21124:22:55",
                                              "memberName": "setGracePeriodDuration",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 17263,
                                              "src": "21119:27:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (uint256,uint256) external"
                                              }
                                            },
                                            "id": 16332,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "21119:66:55",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 16333,
                                          "nodeType": "ExpressionStatement",
                                          "src": "21119:66:55"
                                        }
                                      ]
                                    },
                                    "id": 16335,
                                    "nodeType": "IfStatement",
                                    "src": "20961:243:55",
                                    "trueBody": {
                                      "id": 16324,
                                      "nodeType": "Block",
                                      "src": "21001:90:55",
                                      "statements": [
                                        {
                                          "errorCall": {
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "id": 16321,
                                              "name": "GracePeriodDurationIsNotAMultpleOfTwelve",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14787,
                                              "src": "21030:40:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                                "typeString": "function () pure returns (error)"
                                              }
                                            },
                                            "id": 16322,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "21030:42:55",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_error",
                                              "typeString": "error"
                                            }
                                          },
                                          "id": 16323,
                                          "nodeType": "RevertStatement",
                                          "src": "21023:49:55"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 16371,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16225,
                              "src": "21576:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            "id": 16372,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "21579:29:55",
                            "memberName": "__capitalAmortizationDuration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22849,
                            "src": "21576:32:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 16373,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21612:1:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "21576:37:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16438,
                        "nodeType": "IfStatement",
                        "src": "21572:822:55",
                        "trueBody": {
                          "id": 16437,
                          "nodeType": "Block",
                          "src": "21615:779:55",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 16375,
                                    "name": "bi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16225,
                                    "src": "21633:2:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                      "typeString": "struct BondInitParams.BondInit memory"
                                    }
                                  },
                                  "id": 16376,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "21636:13:55",
                                  "memberName": "__periodicity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22855,
                                  "src": "21633:16:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 16379,
                                        "name": "Periodicity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18452,
                                        "src": "21661:11:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                          "typeString": "type(enum BondStorage.Periodicity)"
                                        }
                                      },
                                      "id": 16380,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "21673:6:55",
                                      "memberName": "Annual",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 18449,
                                      "src": "21661:18:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Periodicity_$18452",
                                        "typeString": "enum BondStorage.Periodicity"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_Periodicity_$18452",
                                        "typeString": "enum BondStorage.Periodicity"
                                      }
                                    ],
                                    "id": 16378,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "21653:7:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 16377,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "21653:7:55",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 16381,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21653:27:55",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21633:47:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16412,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 16405,
                                      "name": "bi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16225,
                                      "src": "22013:2:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                        "typeString": "struct BondInitParams.BondInit memory"
                                      }
                                    },
                                    "id": 16406,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "22016:13:55",
                                    "memberName": "__periodicity",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22855,
                                    "src": "22013:16:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 16409,
                                          "name": "Periodicity",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18452,
                                          "src": "22041:11:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                            "typeString": "type(enum BondStorage.Periodicity)"
                                          }
                                        },
                                        "id": 16410,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "22053:9:55",
                                        "memberName": "Quarterly",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18450,
                                        "src": "22041:21:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_Periodicity_$18452",
                                          "typeString": "enum BondStorage.Periodicity"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_enum$_Periodicity_$18452",
                                          "typeString": "enum BondStorage.Periodicity"
                                        }
                                      ],
                                      "id": 16408,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "22033:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 16407,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "22033:7:55",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 16411,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22033:30:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "22013:50:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 16435,
                                "nodeType": "IfStatement",
                                "src": "22009:375:55",
                                "trueBody": {
                                  "id": 16434,
                                  "nodeType": "Block",
                                  "src": "22065:319:55",
                                  "statements": [
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 16418,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 16416,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 16413,
                                              "name": "bi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 16225,
                                              "src": "22087:2:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                                "typeString": "struct BondInitParams.BondInit memory"
                                              }
                                            },
                                            "id": 16414,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "22090:29:55",
                                            "memberName": "__capitalAmortizationDuration",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22849,
                                            "src": "22087:32:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "%",
                                          "rightExpression": {
                                            "hexValue": "33",
                                            "id": 16415,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "22122:1:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_3_by_1",
                                              "typeString": "int_const 3"
                                            },
                                            "value": "3"
                                          },
                                          "src": "22087:36:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 16417,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "22127:1:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "22087:41:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 16432,
                                        "nodeType": "Block",
                                        "src": "22243:127:55",
                                        "statements": [
                                          {
                                            "expression": {
                                              "arguments": [
                                                {
                                                  "expression": {
                                                    "id": 16426,
                                                    "name": "bi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 16225,
                                                    "src": "22305:2:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                                      "typeString": "struct BondInitParams.BondInit memory"
                                                    }
                                                  },
                                                  "id": 16427,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "22308:8:55",
                                                  "memberName": "__bondId",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 22823,
                                                  "src": "22305:11:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "id": 16428,
                                                    "name": "bi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 16225,
                                                    "src": "22318:2:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                                      "typeString": "struct BondInitParams.BondInit memory"
                                                    }
                                                  },
                                                  "id": 16429,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "22321:29:55",
                                                  "memberName": "__capitalAmortizationDuration",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 22849,
                                                  "src": "22318:32:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "id": 16423,
                                                  "name": "this",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": -28,
                                                  "src": "22265:4:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_BondFacet_$18048",
                                                    "typeString": "contract BondFacet"
                                                  }
                                                },
                                                "id": 16425,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "22270:34:55",
                                                "memberName": "setCapitalAmortizationFreeDuration",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17237,
                                                "src": "22265:39:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                                                  "typeString": "function (uint256,uint256) external"
                                                }
                                              },
                                              "id": 16430,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "22265:86:55",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$__$",
                                                "typeString": "tuple()"
                                              }
                                            },
                                            "id": 16431,
                                            "nodeType": "ExpressionStatement",
                                            "src": "22265:86:55"
                                          }
                                        ]
                                      },
                                      "id": 16433,
                                      "nodeType": "IfStatement",
                                      "src": "22083:287:55",
                                      "trueBody": {
                                        "id": 16422,
                                        "nodeType": "Block",
                                        "src": "22130:107:55",
                                        "statements": [
                                          {
                                            "errorCall": {
                                              "arguments": [],
                                              "expression": {
                                                "argumentTypes": [],
                                                "id": 16419,
                                                "name": "CapitalAmortizationFreePeriodDurationIsNotAMultpleOfThree",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14793,
                                                "src": "22159:57:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                                  "typeString": "function () pure returns (error)"
                                                }
                                              },
                                              "id": 16420,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "22159:59:55",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_error",
                                                "typeString": "error"
                                              }
                                            },
                                            "id": 16421,
                                            "nodeType": "RevertStatement",
                                            "src": "22152:66:55"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 16436,
                              "nodeType": "IfStatement",
                              "src": "21629:755:55",
                              "trueBody": {
                                "id": 16404,
                                "nodeType": "Block",
                                "src": "21682:321:55",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 16388,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 16386,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 16383,
                                            "name": "bi",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16225,
                                            "src": "21704:2:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                              "typeString": "struct BondInitParams.BondInit memory"
                                            }
                                          },
                                          "id": 16384,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "21707:29:55",
                                          "memberName": "__capitalAmortizationDuration",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22849,
                                          "src": "21704:32:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "%",
                                        "rightExpression": {
                                          "hexValue": "3132",
                                          "id": 16385,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "21739:2:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_12_by_1",
                                            "typeString": "int_const 12"
                                          },
                                          "value": "12"
                                        },
                                        "src": "21704:37:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 16387,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "21745:1:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "21704:42:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 16402,
                                      "nodeType": "Block",
                                      "src": "21862:127:55",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "expression": {
                                                  "id": 16396,
                                                  "name": "bi",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 16225,
                                                  "src": "21924:2:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                                    "typeString": "struct BondInitParams.BondInit memory"
                                                  }
                                                },
                                                "id": 16397,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "21927:8:55",
                                                "memberName": "__bondId",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 22823,
                                                "src": "21924:11:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "expression": {
                                                  "id": 16398,
                                                  "name": "bi",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 16225,
                                                  "src": "21937:2:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                                    "typeString": "struct BondInitParams.BondInit memory"
                                                  }
                                                },
                                                "id": 16399,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "21940:29:55",
                                                "memberName": "__capitalAmortizationDuration",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 22849,
                                                "src": "21937:32:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "id": 16393,
                                                "name": "this",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -28,
                                                "src": "21884:4:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_BondFacet_$18048",
                                                  "typeString": "contract BondFacet"
                                                }
                                              },
                                              "id": 16395,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "21889:34:55",
                                              "memberName": "setCapitalAmortizationFreeDuration",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 17237,
                                              "src": "21884:39:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (uint256,uint256) external"
                                              }
                                            },
                                            "id": 16400,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "21884:86:55",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 16401,
                                          "nodeType": "ExpressionStatement",
                                          "src": "21884:86:55"
                                        }
                                      ]
                                    },
                                    "id": 16403,
                                    "nodeType": "IfStatement",
                                    "src": "21700:289:55",
                                    "trueBody": {
                                      "id": 16392,
                                      "nodeType": "Block",
                                      "src": "21748:108:55",
                                      "statements": [
                                        {
                                          "errorCall": {
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "id": 16389,
                                              "name": "CapitalAmortizationFreePeriodDurationIsNotAMultpleOfTwelve",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14791,
                                              "src": "21777:58:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                                "typeString": "function () pure returns (error)"
                                              }
                                            },
                                            "id": 16390,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "21777:60:55",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_error",
                                              "typeString": "error"
                                            }
                                          },
                                          "id": 16391,
                                          "nodeType": "RevertStatement",
                                          "src": "21770:67:55"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 16454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 16439,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16232,
                              "src": "22403:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 16441,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "22416:14:55",
                            "memberName": "__interestRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18476,
                            "src": "22403:27:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 16444,
                                          "name": "bi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16225,
                                          "src": "22445:2:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                            "typeString": "struct BondInitParams.BondInit memory"
                                          }
                                        },
                                        "id": 16445,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "22448:13:55",
                                        "memberName": "__interestNum",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22835,
                                        "src": "22445:16:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 16443,
                                      "name": "ud60x18",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12643,
                                      "src": "22437:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (uint256) pure returns (UD60x18)"
                                      }
                                    },
                                    "id": 16446,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22437:25:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 16448,
                                          "name": "bi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16225,
                                          "src": "22472:2:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                            "typeString": "struct BondInitParams.BondInit memory"
                                          }
                                        },
                                        "id": 16449,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "22475:13:55",
                                        "memberName": "__interestDen",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22837,
                                        "src": "22472:16:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 16447,
                                      "name": "ud60x18",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12643,
                                      "src": "22464:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (uint256) pure returns (UD60x18)"
                                      }
                                    },
                                    "id": 16450,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22464:25:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    },
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  ],
                                  "id": 16442,
                                  "name": "div",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13538,
                                  "src": "22433:3:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                    "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                  }
                                },
                                "id": 16451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22433:57:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              },
                              "id": 16452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "22491:6:55",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12660,
                              "src": "22433:64:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                "typeString": "function (UD60x18) pure returns (uint256)"
                              }
                            },
                            "id": 16453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22433:66:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22403:96:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16455,
                        "nodeType": "ExpressionStatement",
                        "src": "22403:96:55"
                      },
                      {
                        "expression": {
                          "id": 16471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 16456,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16232,
                              "src": "22509:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 16458,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "22522:16:55",
                            "memberName": "__withholdingTax",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18482,
                            "src": "22509:29:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 16461,
                                          "name": "bi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16225,
                                          "src": "22553:2:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                            "typeString": "struct BondInitParams.BondInit memory"
                                          }
                                        },
                                        "id": 16462,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "22556:19:55",
                                        "memberName": "__withholdingTaxNum",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22839,
                                        "src": "22553:22:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 16460,
                                      "name": "ud60x18",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12643,
                                      "src": "22545:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (uint256) pure returns (UD60x18)"
                                      }
                                    },
                                    "id": 16463,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22545:31:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 16465,
                                          "name": "bi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16225,
                                          "src": "22586:2:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                            "typeString": "struct BondInitParams.BondInit memory"
                                          }
                                        },
                                        "id": 16466,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "22589:19:55",
                                        "memberName": "__withholdingTaxDen",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22841,
                                        "src": "22586:22:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 16464,
                                      "name": "ud60x18",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12643,
                                      "src": "22578:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (uint256) pure returns (UD60x18)"
                                      }
                                    },
                                    "id": 16467,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22578:31:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    },
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  ],
                                  "id": 16459,
                                  "name": "div",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13538,
                                  "src": "22541:3:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                    "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                  }
                                },
                                "id": 16468,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22541:69:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              },
                              "id": 16469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "22611:6:55",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12660,
                              "src": "22541:76:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                "typeString": "function (UD60x18) pure returns (uint256)"
                              }
                            },
                            "id": 16470,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22541:78:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22509:110:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16472,
                        "nodeType": "ExpressionStatement",
                        "src": "22509:110:55"
                      },
                      {
                        "expression": {
                          "id": 16478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 16473,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16232,
                              "src": "22630:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 16475,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "22643:19:55",
                            "memberName": "__campaignMaxAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18466,
                            "src": "22630:32:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 16476,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16225,
                              "src": "22665:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            "id": 16477,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "22668:19:55",
                            "memberName": "__campaignMaxAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22827,
                            "src": "22665:22:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22630:57:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16479,
                        "nodeType": "ExpressionStatement",
                        "src": "22630:57:55"
                      },
                      {
                        "expression": {
                          "id": 16485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 16480,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16232,
                              "src": "22697:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 16482,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "22710:19:55",
                            "memberName": "__campaignMinAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18464,
                            "src": "22697:32:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 16483,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16225,
                              "src": "22732:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            "id": 16484,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "22735:19:55",
                            "memberName": "__campaignMinAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22825,
                            "src": "22732:22:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22697:57:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16486,
                        "nodeType": "ExpressionStatement",
                        "src": "22697:57:55"
                      },
                      {
                        "expression": {
                          "id": 16502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 16487,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16232,
                              "src": "22764:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 16489,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "22777:11:55",
                            "memberName": "__maxSupply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18496,
                            "src": "22764:24:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 16493,
                                          "name": "bi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16225,
                                          "src": "22811:2:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                            "typeString": "struct BondInitParams.BondInit memory"
                                          }
                                        },
                                        "id": 16494,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "22814:19:55",
                                        "memberName": "__campaignMaxAmount",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22827,
                                        "src": "22811:22:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 16492,
                                      "name": "ud60x18",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12643,
                                      "src": "22803:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (uint256) pure returns (UD60x18)"
                                      }
                                    },
                                    "id": 16495,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22803:31:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 16497,
                                          "name": "bi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16225,
                                          "src": "22844:2:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                            "typeString": "struct BondInitParams.BondInit memory"
                                          }
                                        },
                                        "id": 16498,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "22847:9:55",
                                        "memberName": "__coupure",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22833,
                                        "src": "22844:12:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 16496,
                                      "name": "ud60x18",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12643,
                                      "src": "22836:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (uint256) pure returns (UD60x18)"
                                      }
                                    },
                                    "id": 16499,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22836:21:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    },
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  ],
                                  "id": 16491,
                                  "name": "div",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13538,
                                  "src": "22799:3:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                    "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                  }
                                },
                                "id": 16500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22799:59:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "id": 16490,
                              "name": "convert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                12834,
                                12865
                              ],
                              "referencedDeclaration": 12834,
                              "src": "22791:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                                "typeString": "function (UD60x18) pure returns (uint256)"
                              }
                            },
                            "id": 16501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22791:68:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22764:95:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16503,
                        "nodeType": "ExpressionStatement",
                        "src": "22764:95:55"
                      },
                      {
                        "expression": {
                          "id": 16509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 16504,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16232,
                              "src": "22953:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 16506,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "22966:22:55",
                            "memberName": "__maxAmountPerInvestor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18500,
                            "src": "22953:35:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 16507,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16225,
                              "src": "22991:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            "id": 16508,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "22994:22:55",
                            "memberName": "__maxAmountPerInvestor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22853,
                            "src": "22991:25:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22953:63:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16510,
                        "nodeType": "ExpressionStatement",
                        "src": "22953:63:55"
                      },
                      {
                        "expression": {
                          "id": 16516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 16511,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16232,
                              "src": "23026:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 16513,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "23039:10:55",
                            "memberName": "__duration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18490,
                            "src": "23026:23:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 16514,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16225,
                              "src": "23052:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            "id": 16515,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "23055:10:55",
                            "memberName": "__duration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22847,
                            "src": "23052:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23026:39:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16517,
                        "nodeType": "ExpressionStatement",
                        "src": "23026:39:55"
                      },
                      {
                        "expression": {
                          "id": 16523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 16518,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16232,
                              "src": "23076:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 16520,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "23089:19:55",
                            "memberName": "__campaignStartDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18468,
                            "src": "23076:32:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 16521,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16225,
                              "src": "23111:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            "id": 16522,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "23114:19:55",
                            "memberName": "__campaignStartDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22829,
                            "src": "23111:22:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23076:57:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16524,
                        "nodeType": "ExpressionStatement",
                        "src": "23076:57:55"
                      },
                      {
                        "expression": {
                          "id": 16534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 16525,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16232,
                              "src": "23143:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 16527,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "23156:17:55",
                            "memberName": "__campaignEndDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18470,
                            "src": "23143:30:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 16530,
                                  "name": "bi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16225,
                                  "src": "23212:2:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                    "typeString": "struct BondInitParams.BondInit memory"
                                  }
                                },
                                "id": 16531,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "23215:19:55",
                                "memberName": "__campaignStartDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22829,
                                "src": "23212:22:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "3630",
                                "id": 16532,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23236:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_60_by_1",
                                  "typeString": "int_const 60"
                                },
                                "value": "60"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_60_by_1",
                                  "typeString": "int_const 60"
                                }
                              ],
                              "expression": {
                                "id": 16528,
                                "name": "BokkyPooBahsDateTimeLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22113,
                                "src": "23176:27:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$22113_$",
                                  "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                }
                              },
                              "id": 16529,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "23204:7:55",
                              "memberName": "addDays",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21598,
                              "src": "23176:35:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 16533,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23176:63:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23143:96:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16535,
                        "nodeType": "ExpressionStatement",
                        "src": "23143:96:55"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 16536,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16225,
                              "src": "23254:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            "id": 16537,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "23257:13:55",
                            "memberName": "__periodicity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22855,
                            "src": "23254:16:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 16540,
                                  "name": "Periodicity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18452,
                                  "src": "23282:11:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                    "typeString": "type(enum BondStorage.Periodicity)"
                                  }
                                },
                                "id": 16541,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "23294:6:55",
                                "memberName": "Annual",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18449,
                                "src": "23282:18:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Periodicity_$18452",
                                  "typeString": "enum BondStorage.Periodicity"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_Periodicity_$18452",
                                  "typeString": "enum BondStorage.Periodicity"
                                }
                              ],
                              "id": 16539,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "23274:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 16538,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "23274:7:55",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 16542,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23274:27:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23254:47:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 16559,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16225,
                                "src": "23464:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16560,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "23467:13:55",
                              "memberName": "__periodicity",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22855,
                              "src": "23464:16:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 16563,
                                    "name": "Periodicity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18452,
                                    "src": "23492:11:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                      "typeString": "type(enum BondStorage.Periodicity)"
                                    }
                                  },
                                  "id": 16564,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "23504:9:55",
                                  "memberName": "Quarterly",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18450,
                                  "src": "23492:21:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Periodicity_$18452",
                                    "typeString": "enum BondStorage.Periodicity"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_Periodicity_$18452",
                                    "typeString": "enum BondStorage.Periodicity"
                                  }
                                ],
                                "id": 16562,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "23484:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 16561,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "23484:7:55",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 16565,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23484:30:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "23464:50:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 16630,
                                  "name": "bi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16225,
                                  "src": "23895:2:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                    "typeString": "struct BondInitParams.BondInit memory"
                                  }
                                },
                                "id": 16631,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "23898:13:55",
                                "memberName": "__periodicity",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22855,
                                "src": "23895:16:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 16634,
                                      "name": "Periodicity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18452,
                                      "src": "23923:11:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                        "typeString": "type(enum BondStorage.Periodicity)"
                                      }
                                    },
                                    "id": 16635,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "23935:7:55",
                                    "memberName": "Monthly",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18451,
                                    "src": "23923:19:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Periodicity_$18452",
                                      "typeString": "enum BondStorage.Periodicity"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_Periodicity_$18452",
                                      "typeString": "enum BondStorage.Periodicity"
                                    }
                                  ],
                                  "id": 16633,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "23915:7:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 16632,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "23915:7:55",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 16636,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23915:28:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "23895:48:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 16701,
                            "nodeType": "IfStatement",
                            "src": "23891:422:55",
                            "trueBody": {
                              "id": 16700,
                              "nodeType": "Block",
                              "src": "23945:368:55",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 16643,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "id": 16638,
                                        "name": "_bondDetails",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16232,
                                        "src": "23959:12:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                          "typeString": "struct BondStorage.BondParams storage pointer"
                                        }
                                      },
                                      "id": 16640,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberLocation": "23972:13:55",
                                      "memberName": "__periodicity",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 18562,
                                      "src": "23959:26:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Periodicity_$18452",
                                        "typeString": "enum BondStorage.Periodicity"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "expression": {
                                        "id": 16641,
                                        "name": "Periodicity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18452,
                                        "src": "23988:11:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                          "typeString": "type(enum BondStorage.Periodicity)"
                                        }
                                      },
                                      "id": 16642,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "24000:7:55",
                                      "memberName": "Monthly",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 18451,
                                      "src": "23988:19:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Periodicity_$18452",
                                        "typeString": "enum BondStorage.Periodicity"
                                      }
                                    },
                                    "src": "23959:48:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Periodicity_$18452",
                                      "typeString": "enum BondStorage.Periodicity"
                                    }
                                  },
                                  "id": 16644,
                                  "nodeType": "ExpressionStatement",
                                  "src": "23959:48:55"
                                },
                                {
                                  "assignments": [
                                    16647
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 16647,
                                      "mutability": "mutable",
                                      "name": "a",
                                      "nameLocation": "24029:1:55",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 16700,
                                      "src": "24021:9:55",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      },
                                      "typeName": {
                                        "id": 16646,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 16645,
                                          "name": "UD60x18",
                                          "nameLocations": [
                                            "24021:7:55"
                                          ],
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 14179,
                                          "src": "24021:7:55"
                                        },
                                        "referencedDeclaration": 14179,
                                        "src": "24021:7:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                          "typeString": "UD60x18"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 16655,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 16653,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 16649,
                                            "name": "bi",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16225,
                                            "src": "24041:2:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                              "typeString": "struct BondInitParams.BondInit memory"
                                            }
                                          },
                                          "id": 16650,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "24044:13:55",
                                          "memberName": "__interestDen",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22837,
                                          "src": "24041:16:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "expression": {
                                            "id": 16651,
                                            "name": "bi",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16225,
                                            "src": "24060:2:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                              "typeString": "struct BondInitParams.BondInit memory"
                                            }
                                          },
                                          "id": 16652,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "24063:13:55",
                                          "memberName": "__interestNum",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22835,
                                          "src": "24060:16:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "24041:35:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 16648,
                                      "name": "ud60x18",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12643,
                                      "src": "24033:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (uint256) pure returns (UD60x18)"
                                      }
                                    },
                                    "id": 16654,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "24033:44:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "24021:56:55"
                                },
                                {
                                  "assignments": [
                                    16658
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 16658,
                                      "mutability": "mutable",
                                      "name": "b",
                                      "nameLocation": "24099:1:55",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 16700,
                                      "src": "24091:9:55",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      },
                                      "typeName": {
                                        "id": 16657,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 16656,
                                          "name": "UD60x18",
                                          "nameLocations": [
                                            "24091:7:55"
                                          ],
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 14179,
                                          "src": "24091:7:55"
                                        },
                                        "referencedDeclaration": 14179,
                                        "src": "24091:7:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                          "typeString": "UD60x18"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 16663,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 16660,
                                          "name": "bi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16225,
                                          "src": "24111:2:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                            "typeString": "struct BondInitParams.BondInit memory"
                                          }
                                        },
                                        "id": 16661,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "24114:13:55",
                                        "memberName": "__interestDen",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22837,
                                        "src": "24111:16:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 16659,
                                      "name": "ud60x18",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12643,
                                      "src": "24103:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (uint256) pure returns (UD60x18)"
                                      }
                                    },
                                    "id": 16662,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "24103:25:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "24091:37:55"
                                },
                                {
                                  "assignments": [
                                    16666
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 16666,
                                      "mutability": "mutable",
                                      "name": "c",
                                      "nameLocation": "24150:1:55",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 16700,
                                      "src": "24142:9:55",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      },
                                      "typeName": {
                                        "id": 16665,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 16664,
                                          "name": "UD60x18",
                                          "nameLocations": [
                                            "24142:7:55"
                                          ],
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 14179,
                                          "src": "24142:7:55"
                                        },
                                        "referencedDeclaration": 14179,
                                        "src": "24142:7:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                          "typeString": "UD60x18"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 16670,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "hexValue": "31",
                                        "id": 16668,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "24162:1:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "id": 16667,
                                      "name": "ud60x18",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12643,
                                      "src": "24154:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (uint256) pure returns (UD60x18)"
                                      }
                                    },
                                    "id": 16669,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "24154:10:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "24142:22:55"
                                },
                                {
                                  "assignments": [
                                    16673
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 16673,
                                      "mutability": "mutable",
                                      "name": "d",
                                      "nameLocation": "24186:1:55",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 16700,
                                      "src": "24178:9:55",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      },
                                      "typeName": {
                                        "id": 16672,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 16671,
                                          "name": "UD60x18",
                                          "nameLocations": [
                                            "24178:7:55"
                                          ],
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 14179,
                                          "src": "24178:7:55"
                                        },
                                        "referencedDeclaration": 14179,
                                        "src": "24178:7:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                          "typeString": "UD60x18"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 16677,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "hexValue": "3132",
                                        "id": 16675,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "24198:2:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_12_by_1",
                                          "typeString": "int_const 12"
                                        },
                                        "value": "12"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_12_by_1",
                                          "typeString": "int_const 12"
                                        }
                                      ],
                                      "id": 16674,
                                      "name": "ud60x18",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12643,
                                      "src": "24190:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (uint256) pure returns (UD60x18)"
                                      }
                                    },
                                    "id": 16676,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "24190:11:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "24178:23:55"
                                },
                                {
                                  "expression": {
                                    "id": 16698,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "id": 16678,
                                        "name": "_bondDetails",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16232,
                                        "src": "24215:12:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                          "typeString": "struct BondStorage.BondParams storage pointer"
                                        }
                                      },
                                      "id": 16680,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberLocation": "24228:22:55",
                                      "memberName": "__periodicInterestRate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 18480,
                                      "src": "24215:35:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                "typeString": "UD60x18"
                                              },
                                              "function": 13336,
                                              "id": 16694,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "id": 16683,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 16647,
                                                        "src": "24262:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                          "typeString": "UD60x18"
                                                        }
                                                      },
                                                      {
                                                        "id": 16684,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 16658,
                                                        "src": "24265:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                          "typeString": "UD60x18"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                          "typeString": "UD60x18"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                          "typeString": "UD60x18"
                                                        }
                                                      ],
                                                      "id": 16682,
                                                      "name": "div",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 13538,
                                                      "src": "24258:3:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                        "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                                      }
                                                    },
                                                    "id": 16685,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "24258:9:55",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                      "typeString": "UD60x18"
                                                    }
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "id": 16687,
                                                        "name": "c",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 16666,
                                                        "src": "24273:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                          "typeString": "UD60x18"
                                                        }
                                                      },
                                                      {
                                                        "id": 16688,
                                                        "name": "d",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 16673,
                                                        "src": "24276:1:55",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                          "typeString": "UD60x18"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                          "typeString": "UD60x18"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                          "typeString": "UD60x18"
                                                        }
                                                      ],
                                                      "id": 16686,
                                                      "name": "div",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 13538,
                                                      "src": "24269:3:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                        "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                                      }
                                                    },
                                                    "id": 16689,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "24269:9:55",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                      "typeString": "UD60x18"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                      "typeString": "UD60x18"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                      "typeString": "UD60x18"
                                                    }
                                                  ],
                                                  "id": 16681,
                                                  "name": "pow",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14058,
                                                  "src": "24254:3:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                    "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                                  }
                                                },
                                                "id": 16690,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "24254:25:55",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                  "typeString": "UD60x18"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "arguments": [
                                                  {
                                                    "hexValue": "31",
                                                    "id": 16692,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "24290:1:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_1_by_1",
                                                      "typeString": "int_const 1"
                                                    },
                                                    "value": "1"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_rational_1_by_1",
                                                      "typeString": "int_const 1"
                                                    }
                                                  ],
                                                  "id": 16691,
                                                  "name": "ud60x18",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 12643,
                                                  "src": "24282:7:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                    "typeString": "function (uint256) pure returns (UD60x18)"
                                                  }
                                                },
                                                "id": 16693,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "24282:10:55",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                  "typeString": "UD60x18"
                                                }
                                              },
                                              "src": "24254:38:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                "typeString": "UD60x18"
                                              }
                                            }
                                          ],
                                          "id": 16695,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "24253:40:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                            "typeString": "UD60x18"
                                          }
                                        },
                                        "id": 16696,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "24294:6:55",
                                        "memberName": "unwrap",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12660,
                                        "src": "24253:47:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                          "typeString": "function (UD60x18) pure returns (uint256)"
                                        }
                                      },
                                      "id": 16697,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "24253:49:55",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "24215:87:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 16699,
                                  "nodeType": "ExpressionStatement",
                                  "src": "24215:87:55"
                                }
                              ]
                            }
                          },
                          "id": 16702,
                          "nodeType": "IfStatement",
                          "src": "23460:853:55",
                          "trueBody": {
                            "id": 16629,
                            "nodeType": "Block",
                            "src": "23516:369:55",
                            "statements": [
                              {
                                "expression": {
                                  "id": 16572,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "expression": {
                                      "id": 16567,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16232,
                                      "src": "23530:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 16569,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberLocation": "23543:13:55",
                                    "memberName": "__periodicity",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18562,
                                    "src": "23530:26:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Periodicity_$18452",
                                      "typeString": "enum BondStorage.Periodicity"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "expression": {
                                      "id": 16570,
                                      "name": "Periodicity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18452,
                                      "src": "23559:11:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                        "typeString": "type(enum BondStorage.Periodicity)"
                                      }
                                    },
                                    "id": 16571,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "23571:9:55",
                                    "memberName": "Quarterly",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18450,
                                    "src": "23559:21:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Periodicity_$18452",
                                      "typeString": "enum BondStorage.Periodicity"
                                    }
                                  },
                                  "src": "23530:50:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Periodicity_$18452",
                                    "typeString": "enum BondStorage.Periodicity"
                                  }
                                },
                                "id": 16573,
                                "nodeType": "ExpressionStatement",
                                "src": "23530:50:55"
                              },
                              {
                                "assignments": [
                                  16576
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 16576,
                                    "mutability": "mutable",
                                    "name": "a",
                                    "nameLocation": "23602:1:55",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 16629,
                                    "src": "23594:9:55",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    },
                                    "typeName": {
                                      "id": 16575,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 16574,
                                        "name": "UD60x18",
                                        "nameLocations": [
                                          "23594:7:55"
                                        ],
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 14179,
                                        "src": "23594:7:55"
                                      },
                                      "referencedDeclaration": 14179,
                                      "src": "23594:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 16584,
                                "initialValue": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 16582,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 16578,
                                          "name": "bi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16225,
                                          "src": "23614:2:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                            "typeString": "struct BondInitParams.BondInit memory"
                                          }
                                        },
                                        "id": 16579,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "23617:13:55",
                                        "memberName": "__interestDen",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22837,
                                        "src": "23614:16:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "expression": {
                                          "id": 16580,
                                          "name": "bi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16225,
                                          "src": "23633:2:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                            "typeString": "struct BondInitParams.BondInit memory"
                                          }
                                        },
                                        "id": 16581,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "23636:13:55",
                                        "memberName": "__interestNum",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22835,
                                        "src": "23633:16:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "23614:35:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 16577,
                                    "name": "ud60x18",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12643,
                                    "src": "23606:7:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (uint256) pure returns (UD60x18)"
                                    }
                                  },
                                  "id": 16583,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23606:44:55",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "23594:56:55"
                              },
                              {
                                "assignments": [
                                  16587
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 16587,
                                    "mutability": "mutable",
                                    "name": "b",
                                    "nameLocation": "23672:1:55",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 16629,
                                    "src": "23664:9:55",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    },
                                    "typeName": {
                                      "id": 16586,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 16585,
                                        "name": "UD60x18",
                                        "nameLocations": [
                                          "23664:7:55"
                                        ],
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 14179,
                                        "src": "23664:7:55"
                                      },
                                      "referencedDeclaration": 14179,
                                      "src": "23664:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 16592,
                                "initialValue": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 16589,
                                        "name": "bi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16225,
                                        "src": "23684:2:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                          "typeString": "struct BondInitParams.BondInit memory"
                                        }
                                      },
                                      "id": 16590,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "23687:13:55",
                                      "memberName": "__interestDen",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22837,
                                      "src": "23684:16:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 16588,
                                    "name": "ud60x18",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12643,
                                    "src": "23676:7:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (uint256) pure returns (UD60x18)"
                                    }
                                  },
                                  "id": 16591,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23676:25:55",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "23664:37:55"
                              },
                              {
                                "assignments": [
                                  16595
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 16595,
                                    "mutability": "mutable",
                                    "name": "c",
                                    "nameLocation": "23723:1:55",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 16629,
                                    "src": "23715:9:55",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    },
                                    "typeName": {
                                      "id": 16594,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 16593,
                                        "name": "UD60x18",
                                        "nameLocations": [
                                          "23715:7:55"
                                        ],
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 14179,
                                        "src": "23715:7:55"
                                      },
                                      "referencedDeclaration": 14179,
                                      "src": "23715:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 16599,
                                "initialValue": {
                                  "arguments": [
                                    {
                                      "hexValue": "31",
                                      "id": 16597,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "23735:1:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      }
                                    ],
                                    "id": 16596,
                                    "name": "ud60x18",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12643,
                                    "src": "23727:7:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (uint256) pure returns (UD60x18)"
                                    }
                                  },
                                  "id": 16598,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23727:10:55",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "23715:22:55"
                              },
                              {
                                "assignments": [
                                  16602
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 16602,
                                    "mutability": "mutable",
                                    "name": "d",
                                    "nameLocation": "23759:1:55",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 16629,
                                    "src": "23751:9:55",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    },
                                    "typeName": {
                                      "id": 16601,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 16600,
                                        "name": "UD60x18",
                                        "nameLocations": [
                                          "23751:7:55"
                                        ],
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 14179,
                                        "src": "23751:7:55"
                                      },
                                      "referencedDeclaration": 14179,
                                      "src": "23751:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 16606,
                                "initialValue": {
                                  "arguments": [
                                    {
                                      "hexValue": "34",
                                      "id": 16604,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "23771:1:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      }
                                    ],
                                    "id": 16603,
                                    "name": "ud60x18",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12643,
                                    "src": "23763:7:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (uint256) pure returns (UD60x18)"
                                    }
                                  },
                                  "id": 16605,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23763:10:55",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "23751:22:55"
                              },
                              {
                                "expression": {
                                  "id": 16627,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "expression": {
                                      "id": 16607,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16232,
                                      "src": "23787:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 16609,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberLocation": "23800:22:55",
                                    "memberName": "__periodicInterestRate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18480,
                                    "src": "23787:35:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                              "typeString": "UD60x18"
                                            },
                                            "function": 13336,
                                            "id": 16623,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "id": 16612,
                                                      "name": "a",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 16576,
                                                      "src": "23834:1:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                        "typeString": "UD60x18"
                                                      }
                                                    },
                                                    {
                                                      "id": 16613,
                                                      "name": "b",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 16587,
                                                      "src": "23837:1:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                        "typeString": "UD60x18"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                        "typeString": "UD60x18"
                                                      },
                                                      {
                                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                        "typeString": "UD60x18"
                                                      }
                                                    ],
                                                    "id": 16611,
                                                    "name": "div",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13538,
                                                    "src": "23830:3:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                      "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                                    }
                                                  },
                                                  "id": 16614,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "23830:9:55",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                    "typeString": "UD60x18"
                                                  }
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "id": 16616,
                                                      "name": "c",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 16595,
                                                      "src": "23845:1:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                        "typeString": "UD60x18"
                                                      }
                                                    },
                                                    {
                                                      "id": 16617,
                                                      "name": "d",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 16602,
                                                      "src": "23848:1:55",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                        "typeString": "UD60x18"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                        "typeString": "UD60x18"
                                                      },
                                                      {
                                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                        "typeString": "UD60x18"
                                                      }
                                                    ],
                                                    "id": 16615,
                                                    "name": "div",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13538,
                                                    "src": "23841:3:55",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                      "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                                    }
                                                  },
                                                  "id": 16618,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "23841:9:55",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                    "typeString": "UD60x18"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                    "typeString": "UD60x18"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                    "typeString": "UD60x18"
                                                  }
                                                ],
                                                "id": 16610,
                                                "name": "pow",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14058,
                                                "src": "23826:3:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                  "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                                }
                                              },
                                              "id": 16619,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "23826:25:55",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                "typeString": "UD60x18"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "arguments": [
                                                {
                                                  "hexValue": "31",
                                                  "id": 16621,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "23862:1:55",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                  },
                                                  "value": "1"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                  }
                                                ],
                                                "id": 16620,
                                                "name": "ud60x18",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12643,
                                                "src": "23854:7:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                                  "typeString": "function (uint256) pure returns (UD60x18)"
                                                }
                                              },
                                              "id": 16622,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "23854:10:55",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                                "typeString": "UD60x18"
                                              }
                                            },
                                            "src": "23826:38:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                              "typeString": "UD60x18"
                                            }
                                          }
                                        ],
                                        "id": 16624,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "23825:40:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                          "typeString": "UD60x18"
                                        }
                                      },
                                      "id": 16625,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "23866:6:55",
                                      "memberName": "unwrap",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12660,
                                      "src": "23825:47:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (UD60x18) pure returns (uint256)"
                                      }
                                    },
                                    "id": 16626,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "23825:49:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "23787:87:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 16628,
                                "nodeType": "ExpressionStatement",
                                "src": "23787:87:55"
                              }
                            ]
                          }
                        },
                        "id": 16703,
                        "nodeType": "IfStatement",
                        "src": "23250:1063:55",
                        "trueBody": {
                          "id": 16558,
                          "nodeType": "Block",
                          "src": "23303:151:55",
                          "statements": [
                            {
                              "expression": {
                                "id": 16549,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 16544,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16232,
                                    "src": "23317:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 16546,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "23330:13:55",
                                  "memberName": "__periodicity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18562,
                                  "src": "23317:26:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Periodicity_$18452",
                                    "typeString": "enum BondStorage.Periodicity"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 16547,
                                    "name": "Periodicity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18452,
                                    "src": "23346:11:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Periodicity_$18452_$",
                                      "typeString": "type(enum BondStorage.Periodicity)"
                                    }
                                  },
                                  "id": 16548,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "23358:6:55",
                                  "memberName": "Annual",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18449,
                                  "src": "23346:18:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Periodicity_$18452",
                                    "typeString": "enum BondStorage.Periodicity"
                                  }
                                },
                                "src": "23317:47:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Periodicity_$18452",
                                  "typeString": "enum BondStorage.Periodicity"
                                }
                              },
                              "id": 16550,
                              "nodeType": "ExpressionStatement",
                              "src": "23317:47:55"
                            },
                            {
                              "expression": {
                                "id": 16556,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 16551,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16232,
                                    "src": "23378:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 16553,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "23391:22:55",
                                  "memberName": "__periodicInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18480,
                                  "src": "23378:35:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 16554,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16232,
                                    "src": "23416:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 16555,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "23429:14:55",
                                  "memberName": "__interestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18476,
                                  "src": "23416:27:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23378:65:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 16557,
                              "nodeType": "ExpressionStatement",
                              "src": "23378:65:55"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 16704,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16225,
                              "src": "24327:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            "id": 16705,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "24330:19:55",
                            "memberName": "__methodOfRepayment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22859,
                            "src": "24327:22:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 16708,
                                  "name": "MethodOfRepayment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18462,
                                  "src": "24361:17:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                    "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                  }
                                },
                                "id": 16709,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "24379:10:55",
                                "memberName": "Degressive",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18457,
                                "src": "24361:28:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                  "typeString": "enum BondStorage.MethodOfRepayment"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                  "typeString": "enum BondStorage.MethodOfRepayment"
                                }
                              ],
                              "id": 16707,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "24353:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 16706,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "24353:7:55",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 16710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24353:37:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24327:63:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 16747,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16225,
                                "src": "24828:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16748,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "24831:19:55",
                              "memberName": "__methodOfRepayment",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22859,
                              "src": "24828:22:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 16751,
                                    "name": "MethodOfRepayment",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18462,
                                    "src": "24862:17:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                      "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                    }
                                  },
                                  "id": 16752,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "24880:6:55",
                                  "memberName": "Bullet",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18456,
                                  "src": "24862:24:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                    "typeString": "enum BondStorage.MethodOfRepayment"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                    "typeString": "enum BondStorage.MethodOfRepayment"
                                  }
                                ],
                                "id": 16750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "24854:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 16749,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "24854:7:55",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 16753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24854:33:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "24828:59:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16770,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 16763,
                                  "name": "bi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16225,
                                  "src": "24983:2:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                    "typeString": "struct BondInitParams.BondInit memory"
                                  }
                                },
                                "id": 16764,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "24986:19:55",
                                "memberName": "__methodOfRepayment",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22859,
                                "src": "24983:22:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 16767,
                                      "name": "MethodOfRepayment",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18462,
                                      "src": "25017:17:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                        "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                      }
                                    },
                                    "id": 16768,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "25035:7:55",
                                    "memberName": "Balloon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18458,
                                    "src": "25017:25:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                      "typeString": "enum BondStorage.MethodOfRepayment"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                      "typeString": "enum BondStorage.MethodOfRepayment"
                                    }
                                  ],
                                  "id": 16766,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "25009:7:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 16765,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "25009:7:55",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 16769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25009:34:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "24983:60:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 16779,
                            "nodeType": "IfStatement",
                            "src": "24979:151:55",
                            "trueBody": {
                              "id": 16778,
                              "nodeType": "Block",
                              "src": "25045:85:55",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 16776,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "id": 16771,
                                        "name": "_bondDetails",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16232,
                                        "src": "25059:12:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                          "typeString": "struct BondStorage.BondParams storage pointer"
                                        }
                                      },
                                      "id": 16773,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberLocation": "25072:19:55",
                                      "memberName": "__methodOfRepayment",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 18568,
                                      "src": "25059:32:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                        "typeString": "enum BondStorage.MethodOfRepayment"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "expression": {
                                        "id": 16774,
                                        "name": "MethodOfRepayment",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18462,
                                        "src": "25094:17:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                          "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                        }
                                      },
                                      "id": 16775,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "25112:7:55",
                                      "memberName": "Balloon",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 18458,
                                      "src": "25094:25:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                        "typeString": "enum BondStorage.MethodOfRepayment"
                                      }
                                    },
                                    "src": "25059:60:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                      "typeString": "enum BondStorage.MethodOfRepayment"
                                    }
                                  },
                                  "id": 16777,
                                  "nodeType": "ExpressionStatement",
                                  "src": "25059:60:55"
                                }
                              ]
                            }
                          },
                          "id": 16780,
                          "nodeType": "IfStatement",
                          "src": "24824:306:55",
                          "trueBody": {
                            "id": 16762,
                            "nodeType": "Block",
                            "src": "24889:84:55",
                            "statements": [
                              {
                                "expression": {
                                  "id": 16760,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "expression": {
                                      "id": 16755,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16232,
                                      "src": "24903:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 16757,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberLocation": "24916:19:55",
                                    "memberName": "__methodOfRepayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18568,
                                    "src": "24903:32:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                      "typeString": "enum BondStorage.MethodOfRepayment"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "expression": {
                                      "id": 16758,
                                      "name": "MethodOfRepayment",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18462,
                                      "src": "24938:17:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                        "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                      }
                                    },
                                    "id": 16759,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "24956:6:55",
                                    "memberName": "Bullet",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18456,
                                    "src": "24938:24:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                      "typeString": "enum BondStorage.MethodOfRepayment"
                                    }
                                  },
                                  "src": "24903:59:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                    "typeString": "enum BondStorage.MethodOfRepayment"
                                  }
                                },
                                "id": 16761,
                                "nodeType": "ExpressionStatement",
                                "src": "24903:59:55"
                              }
                            ]
                          }
                        },
                        "id": 16781,
                        "nodeType": "IfStatement",
                        "src": "24323:807:55",
                        "trueBody": {
                          "id": 16746,
                          "nodeType": "Block",
                          "src": "24392:426:55",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16715,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 16712,
                                    "name": "bi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16225,
                                    "src": "24410:2:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                      "typeString": "struct BondInitParams.BondInit memory"
                                    }
                                  },
                                  "id": 16713,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "24413:29:55",
                                  "memberName": "__capitalAmortizationDuration",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22849,
                                  "src": "24410:32:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 16714,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24446:1:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "24410:37:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16727,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 16724,
                                      "name": "bi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16225,
                                      "src": "24578:2:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                        "typeString": "struct BondInitParams.BondInit memory"
                                      }
                                    },
                                    "id": 16725,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "24581:21:55",
                                    "memberName": "__gracePeriodDuration",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22851,
                                    "src": "24578:24:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 16726,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24606:1:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "24578:29:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 16743,
                                  "nodeType": "Block",
                                  "src": "24712:96:55",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 16741,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "expression": {
                                            "id": 16736,
                                            "name": "_bondDetails",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16232,
                                            "src": "24730:12:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                              "typeString": "struct BondStorage.BondParams storage pointer"
                                            }
                                          },
                                          "id": 16738,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "memberLocation": "24743:19:55",
                                          "memberName": "__methodOfRepayment",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 18568,
                                          "src": "24730:32:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                            "typeString": "enum BondStorage.MethodOfRepayment"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "expression": {
                                            "id": 16739,
                                            "name": "MethodOfRepayment",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18462,
                                            "src": "24765:17:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                              "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                            }
                                          },
                                          "id": 16740,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberLocation": "24783:10:55",
                                          "memberName": "Degressive",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 18457,
                                          "src": "24765:28:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                            "typeString": "enum BondStorage.MethodOfRepayment"
                                          }
                                        },
                                        "src": "24730:63:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                          "typeString": "enum BondStorage.MethodOfRepayment"
                                        }
                                      },
                                      "id": 16742,
                                      "nodeType": "ExpressionStatement",
                                      "src": "24730:63:55"
                                    }
                                  ]
                                },
                                "id": 16744,
                                "nodeType": "IfStatement",
                                "src": "24574:234:55",
                                "trueBody": {
                                  "id": 16735,
                                  "nodeType": "Block",
                                  "src": "24609:97:55",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 16733,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "expression": {
                                            "id": 16728,
                                            "name": "_bondDetails",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16232,
                                            "src": "24627:12:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                              "typeString": "struct BondStorage.BondParams storage pointer"
                                            }
                                          },
                                          "id": 16730,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "memberLocation": "24640:19:55",
                                          "memberName": "__methodOfRepayment",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 18568,
                                          "src": "24627:32:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                            "typeString": "enum BondStorage.MethodOfRepayment"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "expression": {
                                            "id": 16731,
                                            "name": "MethodOfRepayment",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18462,
                                            "src": "24662:17:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                              "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                            }
                                          },
                                          "id": 16732,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberLocation": "24680:11:55",
                                          "memberName": "GracePeriod",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 18460,
                                          "src": "24662:29:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                            "typeString": "enum BondStorage.MethodOfRepayment"
                                          }
                                        },
                                        "src": "24627:64:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                          "typeString": "enum BondStorage.MethodOfRepayment"
                                        }
                                      },
                                      "id": 16734,
                                      "nodeType": "ExpressionStatement",
                                      "src": "24627:64:55"
                                    }
                                  ]
                                }
                              },
                              "id": 16745,
                              "nodeType": "IfStatement",
                              "src": "24406:402:55",
                              "trueBody": {
                                "id": 16723,
                                "nodeType": "Block",
                                "src": "24449:119:55",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 16721,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "expression": {
                                          "id": 16716,
                                          "name": "_bondDetails",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16232,
                                          "src": "24467:12:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                          }
                                        },
                                        "id": 16718,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberLocation": "24480:19:55",
                                        "memberName": "__methodOfRepayment",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18568,
                                        "src": "24467:32:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                          "typeString": "enum BondStorage.MethodOfRepayment"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "expression": {
                                          "id": 16719,
                                          "name": "MethodOfRepayment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18462,
                                          "src": "24502:17:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_MethodOfRepayment_$18462_$",
                                            "typeString": "type(enum BondStorage.MethodOfRepayment)"
                                          }
                                        },
                                        "id": 16720,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "24520:33:55",
                                        "memberName": "WithCapitalAmortizationFreePeriod",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18459,
                                        "src": "24502:51:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                          "typeString": "enum BondStorage.MethodOfRepayment"
                                        }
                                      },
                                      "src": "24467:86:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                                        "typeString": "enum BondStorage.MethodOfRepayment"
                                      }
                                    },
                                    "id": 16722,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24467:86:55"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 16787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 16782,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16232,
                              "src": "25139:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 16784,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "25152:29:55",
                            "memberName": "__capitalAmortizationDuration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18492,
                            "src": "25139:42:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 16785,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16225,
                              "src": "25184:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            "id": 16786,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "25187:29:55",
                            "memberName": "__capitalAmortizationDuration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22849,
                            "src": "25184:32:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25139:77:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16788,
                        "nodeType": "ExpressionStatement",
                        "src": "25139:77:55"
                      },
                      {
                        "expression": {
                          "id": 16794,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 16789,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16232,
                              "src": "25226:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 16791,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "25239:21:55",
                            "memberName": "__gracePeriodDuration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18494,
                            "src": "25226:34:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 16792,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16225,
                              "src": "25263:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            "id": 16793,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "25266:21:55",
                            "memberName": "__gracePeriodDuration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22851,
                            "src": "25263:24:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25226:61:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16795,
                        "nodeType": "ExpressionStatement",
                        "src": "25226:61:55"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 16804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16799,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 16796,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16225,
                                "src": "25301:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16797,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "25304:16:55",
                              "memberName": "__balloonRateNum",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22843,
                              "src": "25301:19:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 16798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "25324:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "25301:24:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16803,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 16800,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16225,
                                "src": "25329:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16801,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "25332:16:55",
                              "memberName": "__balloonRateDen",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22845,
                              "src": "25329:19:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 16802,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "25352:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "25329:24:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "25301:52:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16834,
                        "nodeType": "IfStatement",
                        "src": "25297:272:55",
                        "trueBody": {
                          "id": 16833,
                          "nodeType": "Block",
                          "src": "25355:214:55",
                          "statements": [
                            {
                              "expression": {
                                "id": 16820,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 16805,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16232,
                                    "src": "25369:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 16807,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "25382:13:55",
                                  "memberName": "__balloonRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18484,
                                  "src": "25369:26:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "id": 16810,
                                                "name": "bi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 16225,
                                                "src": "25410:2:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                                  "typeString": "struct BondInitParams.BondInit memory"
                                                }
                                              },
                                              "id": 16811,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "25413:16:55",
                                              "memberName": "__balloonRateNum",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 22843,
                                              "src": "25410:19:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 16809,
                                            "name": "ud60x18",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12643,
                                            "src": "25402:7:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                              "typeString": "function (uint256) pure returns (UD60x18)"
                                            }
                                          },
                                          "id": 16812,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "25402:28:55",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                            "typeString": "UD60x18"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "id": 16814,
                                                "name": "bi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 16225,
                                                "src": "25440:2:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                                  "typeString": "struct BondInitParams.BondInit memory"
                                                }
                                              },
                                              "id": 16815,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "25443:16:55",
                                              "memberName": "__balloonRateDen",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 22845,
                                              "src": "25440:19:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 16813,
                                            "name": "ud60x18",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12643,
                                            "src": "25432:7:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                              "typeString": "function (uint256) pure returns (UD60x18)"
                                            }
                                          },
                                          "id": 16816,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "25432:28:55",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                            "typeString": "UD60x18"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                            "typeString": "UD60x18"
                                          },
                                          {
                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                            "typeString": "UD60x18"
                                          }
                                        ],
                                        "id": 16808,
                                        "name": "div",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13538,
                                        "src": "25398:3:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                          "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                        }
                                      },
                                      "id": 16817,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "25398:63:55",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    },
                                    "id": 16818,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "25462:6:55",
                                    "memberName": "unwrap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12660,
                                    "src": "25398:70:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (UD60x18) pure returns (uint256)"
                                    }
                                  },
                                  "id": 16819,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25398:72:55",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25369:101:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 16821,
                              "nodeType": "ExpressionStatement",
                              "src": "25369:101:55"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 16825,
                                      "name": "bi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16225,
                                      "src": "25504:2:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                        "typeString": "struct BondInitParams.BondInit memory"
                                      }
                                    },
                                    "id": 16826,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "25507:8:55",
                                    "memberName": "__bondId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22823,
                                    "src": "25504:11:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 16827,
                                      "name": "bi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16225,
                                      "src": "25517:2:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                        "typeString": "struct BondInitParams.BondInit memory"
                                      }
                                    },
                                    "id": 16828,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "25520:16:55",
                                    "memberName": "__balloonRateNum",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22843,
                                    "src": "25517:19:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 16829,
                                      "name": "bi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16225,
                                      "src": "25538:2:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                        "typeString": "struct BondInitParams.BondInit memory"
                                      }
                                    },
                                    "id": 16830,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "25541:16:55",
                                    "memberName": "__balloonRateDen",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22845,
                                    "src": "25538:19:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 16822,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "25484:4:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_BondFacet_$18048",
                                      "typeString": "contract BondFacet"
                                    }
                                  },
                                  "id": 16824,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "25489:14:55",
                                  "memberName": "setBalloonRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17211,
                                  "src": "25484:19:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint256,uint256) external"
                                  }
                                },
                                "id": 16831,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25484:74:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 16832,
                              "nodeType": "ExpressionStatement",
                              "src": "25484:74:55"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 16839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 16835,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16232,
                              "src": "25579:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 16837,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "25592:7:55",
                            "memberName": "__isSub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18520,
                            "src": "25579:20:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 16838,
                            "name": "replacementBond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16227,
                            "src": "25602:15:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "25579:38:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16840,
                        "nodeType": "ExpressionStatement",
                        "src": "25579:38:55"
                      },
                      {
                        "expression": {
                          "id": 16865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 16841,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16232,
                              "src": "25628:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 16843,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "25641:11:55",
                            "memberName": "__netReturn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18478,
                            "src": "25628:24:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16864,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 16844,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16232,
                                "src": "25655:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 16845,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "25668:14:55",
                              "memberName": "__interestRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18476,
                              "src": "25655:27:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 16848,
                                            "name": "_bondDetails",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16232,
                                            "src": "25726:12:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                              "typeString": "struct BondStorage.BondParams storage pointer"
                                            }
                                          },
                                          "id": 16849,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "25739:14:55",
                                          "memberName": "__interestRate",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 18476,
                                          "src": "25726:27:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 16847,
                                        "name": "ud60x18",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12643,
                                        "src": "25718:7:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                          "typeString": "function (uint256) pure returns (UD60x18)"
                                        }
                                      },
                                      "id": 16850,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "25718:36:55",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "id": 16853,
                                                "name": "bi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 16225,
                                                "src": "25768:2:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                                  "typeString": "struct BondInitParams.BondInit memory"
                                                }
                                              },
                                              "id": 16854,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "25771:19:55",
                                              "memberName": "__withholdingTaxNum",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 22839,
                                              "src": "25768:22:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 16852,
                                            "name": "ud60x18",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12643,
                                            "src": "25760:7:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                              "typeString": "function (uint256) pure returns (UD60x18)"
                                            }
                                          },
                                          "id": 16855,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "25760:31:55",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                            "typeString": "UD60x18"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "id": 16857,
                                                "name": "bi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 16225,
                                                "src": "25801:2:55",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                                  "typeString": "struct BondInitParams.BondInit memory"
                                                }
                                              },
                                              "id": 16858,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "25804:19:55",
                                              "memberName": "__withholdingTaxDen",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 22841,
                                              "src": "25801:22:55",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 16856,
                                            "name": "ud60x18",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12643,
                                            "src": "25793:7:55",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                              "typeString": "function (uint256) pure returns (UD60x18)"
                                            }
                                          },
                                          "id": 16859,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "25793:31:55",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                            "typeString": "UD60x18"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                            "typeString": "UD60x18"
                                          },
                                          {
                                            "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                            "typeString": "UD60x18"
                                          }
                                        ],
                                        "id": 16851,
                                        "name": "div",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13538,
                                        "src": "25756:3:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                          "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                        }
                                      },
                                      "id": 16860,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "25756:69:55",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      },
                                      {
                                        "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                        "typeString": "UD60x18"
                                      }
                                    ],
                                    "id": 16846,
                                    "name": "mul",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13951,
                                    "src": "25697:3:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                    }
                                  },
                                  "id": 16861,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25697:142:55",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                "id": 16862,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "25840:6:55",
                                "memberName": "unwrap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12660,
                                "src": "25697:149:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18) pure returns (uint256)"
                                }
                              },
                              "id": 16863,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25697:151:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "25655:193:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25628:220:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16866,
                        "nodeType": "ExpressionStatement",
                        "src": "25628:220:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 16868,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16225,
                                "src": "25879:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16869,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "25882:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "25879:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 16870,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16225,
                                "src": "25892:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16871,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "25895:21:55",
                              "memberName": "__gracePeriodDuration",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22851,
                              "src": "25892:24:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16867,
                            "name": "GracePeriodSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14707,
                            "src": "25864:14:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 16872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25864:53:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16873,
                        "nodeType": "EmitStatement",
                        "src": "25859:58:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 16875,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16225,
                                "src": "25947:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16876,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "25950:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "25947:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 16877,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16225,
                                "src": "25960:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16878,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "25963:16:55",
                              "memberName": "__balloonRateNum",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22843,
                              "src": "25960:19:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 16879,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16225,
                                "src": "25981:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16880,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "25984:16:55",
                              "memberName": "__balloonRateDen",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22845,
                              "src": "25981:19:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16874,
                            "name": "BalloonRateSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14701,
                            "src": "25932:14:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256)"
                            }
                          },
                          "id": 16881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25932:69:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16882,
                        "nodeType": "EmitStatement",
                        "src": "25927:74:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 16884,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16225,
                                "src": "26049:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16885,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "26052:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "26049:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 16886,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16225,
                                "src": "26062:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16887,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "26065:29:55",
                              "memberName": "__capitalAmortizationDuration",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22849,
                              "src": "26062:32:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16883,
                            "name": "CapitalAmortizationFreePeriodSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14713,
                            "src": "26016:32:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 16888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26016:79:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16889,
                        "nodeType": "EmitStatement",
                        "src": "26011:84:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 16891,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16225,
                                "src": "26142:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16892,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "26145:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "26142:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 16893,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16232,
                                "src": "26167:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 16894,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "26180:19:55",
                              "memberName": "__campaignMinAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18464,
                              "src": "26167:32:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 16895,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16232,
                                "src": "26213:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 16896,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "26226:19:55",
                              "memberName": "__campaignMaxAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18466,
                              "src": "26213:32:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 16897,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16232,
                                "src": "26259:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 16898,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "26272:22:55",
                              "memberName": "__maxAmountPerInvestor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18500,
                              "src": "26259:35:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16890,
                            "name": "MinAndMaxAmountSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14608,
                            "src": "26110:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 16899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26110:194:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16900,
                        "nodeType": "EmitStatement",
                        "src": "26105:199:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 16902,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16225,
                                "src": "26346:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16903,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "26349:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "26346:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 16904,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16232,
                                "src": "26359:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 16905,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "26372:19:55",
                              "memberName": "__campaignStartDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18468,
                              "src": "26359:32:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 16906,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16232,
                                "src": "26393:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 16907,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "26406:17:55",
                              "memberName": "__campaignEndDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18470,
                              "src": "26393:30:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16901,
                            "name": "CampaignStartAndEndDateSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14650,
                            "src": "26319:26:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256)"
                            }
                          },
                          "id": 16908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26319:105:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16909,
                        "nodeType": "EmitStatement",
                        "src": "26314:110:55"
                      }
                    ]
                  },
                  "id": 16911,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setParameters",
                  "nameLocation": "20066:13:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16228,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16225,
                        "mutability": "mutable",
                        "name": "bi",
                        "nameLocation": "20111:2:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 16911,
                        "src": "20080:33:55",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                          "typeString": "struct BondInitParams.BondInit"
                        },
                        "typeName": {
                          "id": 16224,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 16223,
                            "name": "BondInitParams.BondInit",
                            "nameLocations": [
                              "20080:14:55",
                              "20095:8:55"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 22862,
                            "src": "20080:23:55"
                          },
                          "referencedDeclaration": 22862,
                          "src": "20080:23:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondInit_$22862_storage_ptr",
                            "typeString": "struct BondInitParams.BondInit"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16227,
                        "mutability": "mutable",
                        "name": "replacementBond",
                        "nameLocation": "20120:15:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 16911,
                        "src": "20115:20:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16226,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "20115:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20079:57:55"
                  },
                  "returnParameters": {
                    "id": 16229,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20146:0:55"
                  },
                  "scope": 18048,
                  "src": "20057:6374:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    3049,
                    3061
                  ],
                  "body": {
                    "id": 16933,
                    "nodeType": "Block",
                    "src": "26545:113:55",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 16931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 16926,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 16921,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16913,
                              "src": "26562:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 16923,
                                    "name": "IERC1155Receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 453,
                                    "src": "26582:16:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$453_$",
                                      "typeString": "type(contract IERC1155Receiver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$453_$",
                                      "typeString": "type(contract IERC1155Receiver)"
                                    }
                                  ],
                                  "id": 16922,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "26577:4:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 16924,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26577:22:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155Receiver_$453",
                                  "typeString": "type(contract IERC1155Receiver)"
                                }
                              },
                              "id": 16925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "26600:11:55",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "26577:34:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "26562:49:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 16929,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16913,
                                "src": "26639:11:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 16927,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "26615:5:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_BondFacet_$18048_$",
                                  "typeString": "type(contract super BondFacet)"
                                }
                              },
                              "id": 16928,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "26621:17:55",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3049,
                              "src": "26615:23:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 16930,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26615:36:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "26562:89:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 16920,
                        "id": 16932,
                        "nodeType": "Return",
                        "src": "26555:96:55"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 16934,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "26446:17:55",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 16917,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 16915,
                        "name": "ERC165",
                        "nameLocations": [
                          "26513:6:55"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3050,
                        "src": "26513:6:55"
                      },
                      {
                        "id": 16916,
                        "name": "IERC165",
                        "nameLocations": [
                          "26521:7:55"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3062,
                        "src": "26521:7:55"
                      }
                    ],
                    "src": "26504:25:55"
                  },
                  "parameters": {
                    "id": 16914,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16913,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "26471:11:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 16934,
                        "src": "26464:18:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 16912,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "26464:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26463:20:55"
                  },
                  "returnParameters": {
                    "id": 16920,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16919,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16934,
                        "src": "26539:4:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16918,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "26539:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26538:6:55"
                  },
                  "scope": 18048,
                  "src": "26437:221:55",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    434
                  ],
                  "body": {
                    "id": 16954,
                    "nodeType": "Block",
                    "src": "26986:160:55",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "expression": {
                              "id": 16950,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "27108:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BondFacet_$18048",
                                "typeString": "contract BondFacet"
                              }
                            },
                            "id": 16951,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "27113:17:55",
                            "memberName": "onERC1155Received",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16955,
                            "src": "27108:22:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                            }
                          },
                          "id": 16952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "27131:8:55",
                          "memberName": "selector",
                          "nodeType": "MemberAccess",
                          "src": "27108:31:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 16949,
                        "id": 16953,
                        "nodeType": "Return",
                        "src": "27101:38:55"
                      }
                    ]
                  },
                  "functionSelector": "f23a6e61",
                  "id": 16955,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nameLocation": "26744:17:55",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 16946,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "26948:8:55"
                  },
                  "parameters": {
                    "id": 16945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16936,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16955,
                        "src": "26771:7:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16935,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26771:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16938,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16955,
                        "src": "26804:7:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16937,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26804:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16940,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16955,
                        "src": "26833:7:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16939,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26833:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16942,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16955,
                        "src": "26860:7:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16941,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26860:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16944,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16955,
                        "src": "26890:14:55",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16943,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "26890:5:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26761:161:55"
                  },
                  "returnParameters": {
                    "id": 16949,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16948,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16955,
                        "src": "26974:6:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 16947,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "26974:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26973:8:55"
                  },
                  "scope": 18048,
                  "src": "26735:411:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    452
                  ],
                  "body": {
                    "id": 16977,
                    "nodeType": "Block",
                    "src": "27510:163:55",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "expression": {
                              "id": 16973,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "27630:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BondFacet_$18048",
                                "typeString": "contract BondFacet"
                              }
                            },
                            "id": 16974,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "27635:22:55",
                            "memberName": "onERC1155BatchReceived",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16978,
                            "src": "27630:27:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                            }
                          },
                          "id": 16975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "27658:8:55",
                          "memberName": "selector",
                          "nodeType": "MemberAccess",
                          "src": "27630:36:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 16972,
                        "id": 16976,
                        "nodeType": "Return",
                        "src": "27623:43:55"
                      }
                    ]
                  },
                  "functionSelector": "bc197c81",
                  "id": 16978,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nameLocation": "27239:22:55",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 16969,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "27472:8:55"
                  },
                  "parameters": {
                    "id": 16968,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16957,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16978,
                        "src": "27271:7:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16956,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27271:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16959,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16978,
                        "src": "27304:7:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16958,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27304:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16962,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16978,
                        "src": "27333:18:55",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 16960,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "27333:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 16961,
                          "nodeType": "ArrayTypeName",
                          "src": "27333:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16965,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16978,
                        "src": "27372:18:55",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 16963,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "27372:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 16964,
                          "nodeType": "ArrayTypeName",
                          "src": "27372:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16967,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16978,
                        "src": "27414:14:55",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16966,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "27414:5:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27261:185:55"
                  },
                  "returnParameters": {
                    "id": 16972,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16971,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16978,
                        "src": "27498:6:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 16970,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "27498:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27497:8:55"
                  },
                  "scope": 18048,
                  "src": "27230:443:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 17074,
                    "nodeType": "Block",
                    "src": "27747:1113:55",
                    "statements": [
                      {
                        "expression": {
                          "id": 16989,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 16984,
                            "name": "__bond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14562,
                            "src": "27830:6:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 16987,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "27847:4:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BondFacet_$18048",
                                  "typeString": "contract BondFacet"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_BondFacet_$18048",
                                  "typeString": "contract BondFacet"
                                }
                              ],
                              "id": 16986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27839:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 16985,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "27839:7:55",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 16988,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27839:13:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "27830:22:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 16990,
                        "nodeType": "ExpressionStatement",
                        "src": "27830:22:55"
                      },
                      {
                        "assignments": [
                          16993
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16993,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "27881:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17074,
                            "src": "27862:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 16992,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 16991,
                                "name": "BondParams",
                                "nameLocations": [
                                  "27862:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "27862:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "27862:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16998,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 16995,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16981,
                                "src": "27908:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 16996,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "27911:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "27908:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16994,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "27896:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 16997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27896:24:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "27862:58:55"
                      },
                      {
                        "condition": {
                          "expression": {
                            "id": 16999,
                            "name": "_bondDetails",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16993,
                            "src": "27934:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams storage pointer"
                            }
                          },
                          "id": 17000,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "27947:10:55",
                          "memberName": "__initDone",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 18522,
                          "src": "27934:23:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17005,
                        "nodeType": "IfStatement",
                        "src": "27930:85:55",
                        "trueBody": {
                          "id": 17004,
                          "nodeType": "Block",
                          "src": "27959:56:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17001,
                                  "name": "BondAlreadyInitialized",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14775,
                                  "src": "27980:22:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 17002,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "27980:24:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 17003,
                              "nodeType": "RevertStatement",
                              "src": "27973:31:55"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17007,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16981,
                              "src": "28038:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 17008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28042:5:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 17006,
                            "name": "setParameters",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16911,
                            "src": "28024:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_BondInit_$22862_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (struct BondInitParams.BondInit memory,bool)"
                            }
                          },
                          "id": 17009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28024:24:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17010,
                        "nodeType": "ExpressionStatement",
                        "src": "28024:24:55"
                      },
                      {
                        "expression": {
                          "id": 17015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 17011,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16993,
                              "src": "28058:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17013,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "28071:10:55",
                            "memberName": "__initDone",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18522,
                            "src": "28058:23:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 17014,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28084:4:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "28058:30:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17016,
                        "nodeType": "ExpressionStatement",
                        "src": "28058:30:55"
                      },
                      {
                        "expression": {
                          "id": 17021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 17017,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16993,
                              "src": "28098:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17019,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "28111:17:55",
                            "memberName": "__currencyAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18573,
                            "src": "28098:30:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 17020,
                            "name": "__currencyAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14564,
                            "src": "28131:17:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "28098:50:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17022,
                        "nodeType": "ExpressionStatement",
                        "src": "28098:50:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17024,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16981,
                                "src": "28197:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17025,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28200:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "28197:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17026,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16981,
                                "src": "28222:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17027,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28225:9:55",
                              "memberName": "__coupure",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22833,
                              "src": "28222:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17028,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16981,
                                "src": "28248:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17029,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28251:13:55",
                              "memberName": "__interestNum",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22835,
                              "src": "28248:16:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17030,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16981,
                                "src": "28278:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17031,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28281:13:55",
                              "memberName": "__interestDen",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22837,
                              "src": "28278:16:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17032,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16981,
                                "src": "28308:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17033,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28311:19:55",
                              "memberName": "__withholdingTaxNum",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22839,
                              "src": "28308:22:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17034,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16981,
                                "src": "28344:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17035,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28347:19:55",
                              "memberName": "__withholdingTaxDen",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22841,
                              "src": "28344:22:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17036,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16981,
                                "src": "28380:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17037,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28383:8:55",
                              "memberName": "__issuer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22861,
                              "src": "28380:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 17023,
                            "name": "BondInitializedPart1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14580,
                            "src": "28163:20:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,address)"
                            }
                          },
                          "id": 17038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28163:238:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17039,
                        "nodeType": "EmitStatement",
                        "src": "28158:243:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17041,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16981,
                                "src": "28450:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17042,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28453:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "28450:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17043,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16993,
                                "src": "28475:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17044,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28488:22:55",
                              "memberName": "__periodicInterestRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18480,
                              "src": "28475:35:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17045,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16993,
                                "src": "28524:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17046,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28537:11:55",
                              "memberName": "__netReturn",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18478,
                              "src": "28524:24:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17047,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16981,
                                "src": "28562:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17048,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28565:13:55",
                              "memberName": "__periodicity",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22855,
                              "src": "28562:16:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17049,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16981,
                                "src": "28592:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17050,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28595:10:55",
                              "memberName": "__duration",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22847,
                              "src": "28592:13:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17051,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16981,
                                "src": "28619:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17052,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28622:19:55",
                              "memberName": "__methodOfRepayment",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22859,
                              "src": "28619:22:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17053,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16993,
                                "src": "28655:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17054,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28668:11:55",
                              "memberName": "__maxSupply",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18496,
                              "src": "28655:24:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 17057,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16993,
                                    "src": "28701:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 17058,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "28714:17:55",
                                  "memberName": "__formOfFinancing",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18565,
                                  "src": "28701:30:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_FormOfFinancing_$18455",
                                    "typeString": "enum BondStorage.FormOfFinancing"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_FormOfFinancing_$18455",
                                    "typeString": "enum BondStorage.FormOfFinancing"
                                  }
                                ],
                                "id": 17056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "28693:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 17055,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "28693:7:55",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 17059,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28693:39:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17040,
                            "name": "BondInitializedPart2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14598,
                            "src": "28416:20:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 17060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28416:326:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17061,
                        "nodeType": "EmitStatement",
                        "src": "28411:331:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17063,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16981,
                                "src": "28780:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17064,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28783:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "28780:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17065,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16981,
                                "src": "28793:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17066,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28796:19:55",
                              "memberName": "__expectedIssueDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22831,
                              "src": "28793:22:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17062,
                            "name": "setCouponDatesFromIssueDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15184,
                            "src": "28752:27:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 17067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28752:64:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17068,
                        "nodeType": "ExpressionStatement",
                        "src": "28752:64:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17070,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16981,
                                "src": "28841:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17071,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "28844:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "28841:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17069,
                            "name": "setCouponRates",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16222,
                            "src": "28826:14:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) returns (uint256[] memory,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 17072,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28826:27:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(uint256[] memory,uint256[] memory,uint256[] memory)"
                          }
                        },
                        "id": 17073,
                        "nodeType": "ExpressionStatement",
                        "src": "28826:27:55"
                      }
                    ]
                  },
                  "functionSelector": "60332e89",
                  "id": 17075,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "initializeBond",
                  "nameLocation": "27688:14:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16982,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16981,
                        "mutability": "mutable",
                        "name": "bi",
                        "nameLocation": "27734:2:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17075,
                        "src": "27703:33:55",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                          "typeString": "struct BondInitParams.BondInit"
                        },
                        "typeName": {
                          "id": 16980,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 16979,
                            "name": "BondInitParams.BondInit",
                            "nameLocations": [
                              "27703:14:55",
                              "27718:8:55"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 22862,
                            "src": "27703:23:55"
                          },
                          "referencedDeclaration": 22862,
                          "src": "27703:23:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondInit_$22862_storage_ptr",
                            "typeString": "struct BondInitParams.BondInit"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27702:35:55"
                  },
                  "returnParameters": {
                    "id": 16983,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27747:0:55"
                  },
                  "scope": 18048,
                  "src": "27679:1181:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 17172,
                    "nodeType": "Block",
                    "src": "28938:1314:55",
                    "statements": [
                      {
                        "assignments": [
                          17083
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17083,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "29040:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17172,
                            "src": "29021:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 17082,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 17081,
                                "name": "BondParams",
                                "nameLocations": [
                                  "29021:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "29021:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "29021:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17088,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17085,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "29067:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17086,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29070:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "29067:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17084,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "29055:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 17087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29055:24:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "29021:58:55"
                      },
                      {
                        "condition": {
                          "expression": {
                            "id": 17089,
                            "name": "_bondDetails",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17083,
                            "src": "29093:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams storage pointer"
                            }
                          },
                          "id": 17090,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "29106:8:55",
                          "memberName": "__issued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 18526,
                          "src": "29093:21:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17095,
                        "nodeType": "IfStatement",
                        "src": "29089:78:55",
                        "trueBody": {
                          "id": 17094,
                          "nodeType": "Block",
                          "src": "29116:51:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17091,
                                  "name": "BondAlreadyIssued",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14777,
                                  "src": "29137:17:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 17092,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29137:19:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 17093,
                              "nodeType": "RevertStatement",
                              "src": "29130:26:55"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17097,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17078,
                              "src": "29190:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 17098,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "29194:5:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                "typeString": "struct BondInitParams.BondInit memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 17096,
                            "name": "setParameters",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16911,
                            "src": "29176:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_BondInit_$22862_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (struct BondInitParams.BondInit memory,bool)"
                            }
                          },
                          "id": 17099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29176:24:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17100,
                        "nodeType": "ExpressionStatement",
                        "src": "29176:24:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17102,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "29242:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17103,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29245:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "29242:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17104,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17083,
                                "src": "29255:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17105,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29268:19:55",
                              "memberName": "__campaignStartDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18468,
                              "src": "29255:32:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17106,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17083,
                                "src": "29289:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17107,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29302:17:55",
                              "memberName": "__campaignEndDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18470,
                              "src": "29289:30:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17101,
                            "name": "CampaignStartAndEndDateSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14650,
                            "src": "29215:26:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256)"
                            }
                          },
                          "id": 17108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29215:105:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17109,
                        "nodeType": "EmitStatement",
                        "src": "29210:110:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17111,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "29367:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17112,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29370:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "29367:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17113,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17083,
                                "src": "29392:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17114,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29405:19:55",
                              "memberName": "__campaignMinAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18464,
                              "src": "29392:32:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17115,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17083,
                                "src": "29438:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17116,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29451:19:55",
                              "memberName": "__campaignMaxAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18466,
                              "src": "29438:32:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17117,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17083,
                                "src": "29484:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17118,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29497:22:55",
                              "memberName": "__maxAmountPerInvestor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18500,
                              "src": "29484:35:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17110,
                            "name": "MinAndMaxAmountSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14608,
                            "src": "29335:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 17119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29335:194:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17120,
                        "nodeType": "EmitStatement",
                        "src": "29330:199:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17122,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "29583:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17123,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29586:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "29583:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17124,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "29608:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17125,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29611:9:55",
                              "memberName": "__coupure",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22833,
                              "src": "29608:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17126,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "29634:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17127,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29637:13:55",
                              "memberName": "__interestNum",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22835,
                              "src": "29634:16:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17128,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "29664:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17129,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29667:13:55",
                              "memberName": "__interestDen",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22837,
                              "src": "29664:16:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17130,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "29694:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17131,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29697:19:55",
                              "memberName": "__withholdingTaxNum",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22839,
                              "src": "29694:22:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17132,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "29730:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17133,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29733:19:55",
                              "memberName": "__withholdingTaxDen",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22841,
                              "src": "29730:22:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17134,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "29766:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17135,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29769:8:55",
                              "memberName": "__issuer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22861,
                              "src": "29766:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 17121,
                            "name": "BondParametersEditedPart1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14624,
                            "src": "29544:25:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,address)"
                            }
                          },
                          "id": 17136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29544:243:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17137,
                        "nodeType": "EmitStatement",
                        "src": "29539:248:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17139,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "29841:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17140,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29844:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "29841:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17141,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17083,
                                "src": "29866:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17142,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29879:22:55",
                              "memberName": "__periodicInterestRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18480,
                              "src": "29866:35:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17143,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17083,
                                "src": "29915:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17144,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29928:11:55",
                              "memberName": "__netReturn",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18478,
                              "src": "29915:24:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17145,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "29953:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17146,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29956:13:55",
                              "memberName": "__periodicity",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22855,
                              "src": "29953:16:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17147,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "29983:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17148,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29986:10:55",
                              "memberName": "__duration",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22847,
                              "src": "29983:13:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17149,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "30010:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17150,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "30013:19:55",
                              "memberName": "__methodOfRepayment",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22859,
                              "src": "30010:22:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17151,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17083,
                                "src": "30046:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17152,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "30059:11:55",
                              "memberName": "__maxSupply",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18496,
                              "src": "30046:24:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 17155,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17083,
                                    "src": "30092:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 17156,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "30105:17:55",
                                  "memberName": "__formOfFinancing",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18565,
                                  "src": "30092:30:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_FormOfFinancing_$18455",
                                    "typeString": "enum BondStorage.FormOfFinancing"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_FormOfFinancing_$18455",
                                    "typeString": "enum BondStorage.FormOfFinancing"
                                  }
                                ],
                                "id": 17154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "30084:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 17153,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "30084:7:55",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 17157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "30084:39:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17138,
                            "name": "BondParametersEditedPart2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14642,
                            "src": "29802:25:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 17158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29802:331:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17159,
                        "nodeType": "EmitStatement",
                        "src": "29797:336:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17161,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "30172:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17162,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "30175:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "30172:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17163,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "30185:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17164,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "30188:19:55",
                              "memberName": "__expectedIssueDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22831,
                              "src": "30185:22:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17160,
                            "name": "setCouponDatesFromIssueDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15184,
                            "src": "30144:27:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 17165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30144:64:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17166,
                        "nodeType": "ExpressionStatement",
                        "src": "30144:64:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17168,
                                "name": "bi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17078,
                                "src": "30233:2:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                                  "typeString": "struct BondInitParams.BondInit memory"
                                }
                              },
                              "id": 17169,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "30236:8:55",
                              "memberName": "__bondId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22823,
                              "src": "30233:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17167,
                            "name": "setCouponRates",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16222,
                            "src": "30218:14:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) returns (uint256[] memory,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 17170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30218:27:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(uint256[] memory,uint256[] memory,uint256[] memory)"
                          }
                        },
                        "id": 17171,
                        "nodeType": "ExpressionStatement",
                        "src": "30218:27:55"
                      }
                    ]
                  },
                  "functionSelector": "9226537e",
                  "id": 17173,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "editBondParameters",
                  "nameLocation": "28875:18:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17079,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17078,
                        "mutability": "mutable",
                        "name": "bi",
                        "nameLocation": "28925:2:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17173,
                        "src": "28894:33:55",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_BondInit_$22862_memory_ptr",
                          "typeString": "struct BondInitParams.BondInit"
                        },
                        "typeName": {
                          "id": 17077,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 17076,
                            "name": "BondInitParams.BondInit",
                            "nameLocations": [
                              "28894:14:55",
                              "28909:8:55"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 22862,
                            "src": "28894:23:55"
                          },
                          "referencedDeclaration": 22862,
                          "src": "28894:23:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondInit_$22862_storage_ptr",
                            "typeString": "struct BondInitParams.BondInit"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28893:35:55"
                  },
                  "returnParameters": {
                    "id": 17080,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28938:0:55"
                  },
                  "scope": 18048,
                  "src": "28866:1386:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 17210,
                    "nodeType": "Block",
                    "src": "30358:315:55",
                    "statements": [
                      {
                        "assignments": [
                          17184
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17184,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "30456:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17210,
                            "src": "30437:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 17183,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 17182,
                                "name": "BondParams",
                                "nameLocations": [
                                  "30437:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "30437:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "30437:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17188,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17186,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17175,
                              "src": "30483:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17185,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "30471:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 17187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30471:20:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "30437:54:55"
                      },
                      {
                        "expression": {
                          "id": 17202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 17189,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17184,
                              "src": "30501:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17191,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "30514:13:55",
                            "memberName": "__balloonRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18484,
                            "src": "30501:26:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 17195,
                                        "name": "_balloonRateNum",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17177,
                                        "src": "30550:15:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 17194,
                                      "name": "ud60x18",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12643,
                                      "src": "30542:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (uint256) pure returns (UD60x18)"
                                      }
                                    },
                                    "id": 17196,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "30542:24:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 17198,
                                        "name": "_balloonRateDen",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17179,
                                        "src": "30576:15:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 17197,
                                      "name": "ud60x18",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12643,
                                      "src": "30568:7:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                        "typeString": "function (uint256) pure returns (UD60x18)"
                                      }
                                    },
                                    "id": 17199,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "30568:24:55",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    },
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                      "typeString": "UD60x18"
                                    }
                                  ],
                                  "id": 17193,
                                  "name": "div",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13538,
                                  "src": "30538:3:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                    "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                  }
                                },
                                "id": 17200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "30538:55:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                  "typeString": "UD60x18"
                                }
                              ],
                              "id": 17192,
                              "name": "convert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                12834,
                                12865
                              ],
                              "referencedDeclaration": 12834,
                              "src": "30530:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                                "typeString": "function (UD60x18) pure returns (uint256)"
                              }
                            },
                            "id": 17201,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30530:64:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30501:93:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17203,
                        "nodeType": "ExpressionStatement",
                        "src": "30501:93:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 17205,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17175,
                              "src": "30624:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17206,
                              "name": "_balloonRateNum",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17177,
                              "src": "30633:15:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17207,
                              "name": "_balloonRateDen",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17179,
                              "src": "30650:15:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17204,
                            "name": "BalloonRateSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14701,
                            "src": "30609:14:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256)"
                            }
                          },
                          "id": 17208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30609:57:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17209,
                        "nodeType": "EmitStatement",
                        "src": "30604:62:55"
                      }
                    ]
                  },
                  "functionSelector": "68aea41b",
                  "id": 17211,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setBalloonRate",
                  "nameLocation": "30267:14:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17180,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17175,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "30290:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17211,
                        "src": "30282:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17174,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30282:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17177,
                        "mutability": "mutable",
                        "name": "_balloonRateNum",
                        "nameLocation": "30307:15:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17211,
                        "src": "30299:23:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17176,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30299:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17179,
                        "mutability": "mutable",
                        "name": "_balloonRateDen",
                        "nameLocation": "30332:15:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17211,
                        "src": "30324:23:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17178,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30324:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30281:67:55"
                  },
                  "returnParameters": {
                    "id": 17181,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "30358:0:55"
                  },
                  "scope": 18048,
                  "src": "30258:415:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 17236,
                    "nodeType": "Block",
                    "src": "30768:271:55",
                    "statements": [
                      {
                        "assignments": [
                          17220
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17220,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "30866:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17236,
                            "src": "30847:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 17219,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 17218,
                                "name": "BondParams",
                                "nameLocations": [
                                  "30847:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "30847:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "30847:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17224,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17222,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17213,
                              "src": "30893:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17221,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "30881:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 17223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30881:20:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "30847:54:55"
                      },
                      {
                        "expression": {
                          "id": 17229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 17225,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17220,
                              "src": "30911:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17227,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "30924:29:55",
                            "memberName": "__capitalAmortizationDuration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18492,
                            "src": "30911:42:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 17228,
                            "name": "_duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17215,
                            "src": "30956:9:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30911:54:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17230,
                        "nodeType": "ExpressionStatement",
                        "src": "30911:54:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 17232,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17213,
                              "src": "31013:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17233,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17215,
                              "src": "31022:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17231,
                            "name": "CapitalAmortizationFreePeriodSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14713,
                            "src": "30980:32:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 17234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30980:52:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17235,
                        "nodeType": "EmitStatement",
                        "src": "30975:57:55"
                      }
                    ]
                  },
                  "functionSelector": "2dcb118e",
                  "id": 17237,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setCapitalAmortizationFreeDuration",
                  "nameLocation": "30688:34:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17213,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "30731:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17237,
                        "src": "30723:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17212,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30723:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17215,
                        "mutability": "mutable",
                        "name": "_duration",
                        "nameLocation": "30748:9:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17237,
                        "src": "30740:17:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17214,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30740:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30722:36:55"
                  },
                  "returnParameters": {
                    "id": 17217,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "30768:0:55"
                  },
                  "scope": 18048,
                  "src": "30679:360:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 17262,
                    "nodeType": "Block",
                    "src": "31122:245:55",
                    "statements": [
                      {
                        "assignments": [
                          17246
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17246,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "31220:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17262,
                            "src": "31201:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 17245,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 17244,
                                "name": "BondParams",
                                "nameLocations": [
                                  "31201:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "31201:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "31201:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17250,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17248,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17239,
                              "src": "31247:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17247,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "31235:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 17249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31235:20:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "31201:54:55"
                      },
                      {
                        "expression": {
                          "id": 17255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 17251,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17246,
                              "src": "31265:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17253,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "31278:21:55",
                            "memberName": "__gracePeriodDuration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18494,
                            "src": "31265:34:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 17254,
                            "name": "_duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17241,
                            "src": "31302:9:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "31265:46:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17256,
                        "nodeType": "ExpressionStatement",
                        "src": "31265:46:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 17258,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17239,
                              "src": "31341:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17259,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17241,
                              "src": "31350:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17257,
                            "name": "GracePeriodSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14707,
                            "src": "31326:14:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 17260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31326:34:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17261,
                        "nodeType": "EmitStatement",
                        "src": "31321:39:55"
                      }
                    ]
                  },
                  "functionSelector": "ee5b280a",
                  "id": 17263,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setGracePeriodDuration",
                  "nameLocation": "31054:22:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17242,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17239,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "31085:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17263,
                        "src": "31077:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17238,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31077:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17241,
                        "mutability": "mutable",
                        "name": "_duration",
                        "nameLocation": "31102:9:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17263,
                        "src": "31094:17:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17240,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31094:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31076:36:55"
                  },
                  "returnParameters": {
                    "id": 17243,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31122:0:55"
                  },
                  "scope": 18048,
                  "src": "31045:322:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 17418,
                    "nodeType": "Block",
                    "src": "31595:1650:55",
                    "statements": [
                      {
                        "assignments": [
                          17281
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17281,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "31624:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17418,
                            "src": "31605:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 17280,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 17279,
                                "name": "BondParams",
                                "nameLocations": [
                                  "31605:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "31605:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "31605:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17285,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17283,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17267,
                              "src": "31651:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17282,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "31639:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 17284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31639:20:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "31605:54:55"
                      },
                      {
                        "assignments": [
                          17287
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17287,
                            "mutability": "mutable",
                            "name": "availableAmountOfBonds",
                            "nameLocation": "31677:22:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17418,
                            "src": "31669:30:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17286,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "31669:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17288,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "31669:30:55"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 17289,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17281,
                              "src": "31713:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17290,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "31726:11:55",
                            "memberName": "__maxSupply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18496,
                            "src": "31713:24:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 17291,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17281,
                              "src": "31740:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17292,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "31753:16:55",
                            "memberName": "__reservedAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18498,
                            "src": "31740:29:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "31713:56:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 17307,
                          "nodeType": "Block",
                          "src": "31883:51:55",
                          "statements": [
                            {
                              "expression": {
                                "id": 17305,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 17303,
                                  "name": "availableAmountOfBonds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17287,
                                  "src": "31897:22:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "30",
                                  "id": 17304,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "31922:1:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "31897:26:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17306,
                              "nodeType": "ExpressionStatement",
                              "src": "31897:26:55"
                            }
                          ]
                        },
                        "id": 17308,
                        "nodeType": "IfStatement",
                        "src": "31709:225:55",
                        "trueBody": {
                          "id": 17302,
                          "nodeType": "Block",
                          "src": "31771:106:55",
                          "statements": [
                            {
                              "expression": {
                                "id": 17300,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 17294,
                                  "name": "availableAmountOfBonds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17287,
                                  "src": "31785:22:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17299,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 17295,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17281,
                                      "src": "31810:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 17296,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "31823:11:55",
                                    "memberName": "__maxSupply",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18496,
                                    "src": "31810:24:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 17297,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17281,
                                      "src": "31837:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 17298,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "31850:16:55",
                                    "memberName": "__reservedAmount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18498,
                                    "src": "31837:29:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "31810:56:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "31785:81:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17301,
                              "nodeType": "ExpressionStatement",
                              "src": "31785:81:55"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          17310
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17310,
                            "mutability": "mutable",
                            "name": "actualAmountOfBonds",
                            "nameLocation": "31951:19:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17418,
                            "src": "31943:27:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17309,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "31943:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17311,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "31943:27:55"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 17312,
                            "name": "_bondAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17269,
                            "src": "31984:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 17313,
                            "name": "availableAmountOfBonds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17287,
                            "src": "31998:22:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "31984:36:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 17324,
                          "nodeType": "Block",
                          "src": "32097:58:55",
                          "statements": [
                            {
                              "expression": {
                                "id": 17322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 17320,
                                  "name": "actualAmountOfBonds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17310,
                                  "src": "32111:19:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 17321,
                                  "name": "_bondAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17269,
                                  "src": "32133:11:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "32111:33:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17323,
                              "nodeType": "ExpressionStatement",
                              "src": "32111:33:55"
                            }
                          ]
                        },
                        "id": 17325,
                        "nodeType": "IfStatement",
                        "src": "31980:175:55",
                        "trueBody": {
                          "id": 17319,
                          "nodeType": "Block",
                          "src": "32022:69:55",
                          "statements": [
                            {
                              "expression": {
                                "id": 17317,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 17315,
                                  "name": "actualAmountOfBonds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17310,
                                  "src": "32036:19:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 17316,
                                  "name": "availableAmountOfBonds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17287,
                                  "src": "32058:22:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "32036:44:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17318,
                              "nodeType": "ExpressionStatement",
                              "src": "32036:44:55"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 17326,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "32169:5:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 17327,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "32175:9:55",
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "32169:15:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 17328,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17281,
                              "src": "32187:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17329,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "32200:19:55",
                            "memberName": "__campaignStartDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18468,
                            "src": "32187:32:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "32169:50:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17335,
                        "nodeType": "IfStatement",
                        "src": "32165:119:55",
                        "trueBody": {
                          "id": 17334,
                          "nodeType": "Block",
                          "src": "32221:63:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17331,
                                  "name": "CannotReserveBeforeSignupDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14797,
                                  "src": "32242:29:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 17332,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "32242:31:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 17333,
                              "nodeType": "RevertStatement",
                              "src": "32235:38:55"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 17336,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "32297:5:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 17337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "32303:9:55",
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "32297:15:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 17338,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17281,
                              "src": "32315:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17339,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "32328:17:55",
                            "memberName": "__campaignEndDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18470,
                            "src": "32315:30:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "32297:48:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17345,
                        "nodeType": "IfStatement",
                        "src": "32293:117:55",
                        "trueBody": {
                          "id": 17344,
                          "nodeType": "Block",
                          "src": "32347:63:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17341,
                                  "name": "CannotReserveAfterCampaignEnd",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14799,
                                  "src": "32368:29:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 17342,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "32368:31:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 17343,
                              "nodeType": "RevertStatement",
                              "src": "32361:38:55"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 17346,
                            "name": "actualAmountOfBonds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17310,
                            "src": "32423:19:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 17347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32446:1:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "32423:24:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17353,
                        "nodeType": "IfStatement",
                        "src": "32419:80:55",
                        "trueBody": {
                          "id": 17352,
                          "nodeType": "Block",
                          "src": "32449:50:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17349,
                                  "name": "NoMoreBondsToBuy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14781,
                                  "src": "32470:16:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 17350,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "32470:18:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 17351,
                              "nodeType": "RevertStatement",
                              "src": "32463:25:55"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 17359,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "expression": {
                                  "id": 17354,
                                  "name": "_bondDetails",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17281,
                                  "src": "32512:12:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                  }
                                },
                                "id": 17355,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "32525:25:55",
                                "memberName": "__reservedAmountByAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18555,
                                "src": "32512:38:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 17357,
                              "indexExpression": {
                                "id": 17356,
                                "name": "_buyer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17271,
                                "src": "32551:6:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "32512:46:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 17358,
                              "name": "actualAmountOfBonds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17310,
                              "src": "32561:19:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "32512:68:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 17360,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17281,
                              "src": "32583:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17361,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "32596:22:55",
                            "memberName": "__maxAmountPerInvestor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18500,
                            "src": "32583:35:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "32512:106:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17367,
                        "nodeType": "IfStatement",
                        "src": "32508:183:55",
                        "trueBody": {
                          "id": 17366,
                          "nodeType": "Block",
                          "src": "32628:63:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17363,
                                  "name": "ExceedingMaxAmountPerInvestor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14801,
                                  "src": "32649:29:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 17364,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "32649:31:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 17365,
                              "nodeType": "RevertStatement",
                              "src": "32642:38:55"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "expression": {
                                "id": 17368,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17281,
                                "src": "32704:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17369,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "32717:25:55",
                              "memberName": "__reservedAmountByAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18555,
                              "src": "32704:38:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 17371,
                            "indexExpression": {
                              "id": 17370,
                              "name": "_buyer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17271,
                              "src": "32743:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "32704:46:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 17372,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32754:1:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "32704:51:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17387,
                        "nodeType": "IfStatement",
                        "src": "32700:196:55",
                        "trueBody": {
                          "id": 17386,
                          "nodeType": "Block",
                          "src": "32757:139:55",
                          "statements": [
                            {
                              "expression": {
                                "id": 17378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 17374,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17281,
                                    "src": "32771:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 17376,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "32784:16:55",
                                  "memberName": "__investorsCount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18504,
                                  "src": "32771:29:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 17377,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "32804:1:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "32771:34:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17379,
                              "nodeType": "ExpressionStatement",
                              "src": "32771:34:55"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 17381,
                                    "name": "_bondId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17267,
                                    "src": "32846:7:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 17382,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17281,
                                      "src": "32855:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 17383,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "32868:16:55",
                                    "memberName": "__investorsCount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18504,
                                    "src": "32855:29:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 17380,
                                  "name": "InvestorsCountChanged",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14719,
                                  "src": "32824:21:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint256)"
                                  }
                                },
                                "id": 17384,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "32824:61:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 17385,
                              "nodeType": "EmitStatement",
                              "src": "32819:66:55"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 17392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 17388,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17281,
                              "src": "32905:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17390,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "32918:16:55",
                            "memberName": "__reservedAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18498,
                            "src": "32905:29:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 17391,
                            "name": "actualAmountOfBonds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17310,
                            "src": "32938:19:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "32905:52:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17393,
                        "nodeType": "ExpressionStatement",
                        "src": "32905:52:55"
                      },
                      {
                        "expression": {
                          "id": 17400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 17394,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17281,
                                "src": "32967:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17397,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "32980:25:55",
                              "memberName": "__reservedAmountByAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18555,
                              "src": "32967:38:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 17398,
                            "indexExpression": {
                              "id": 17396,
                              "name": "_buyer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17271,
                              "src": "33006:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "32967:46:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 17399,
                            "name": "actualAmountOfBonds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17310,
                            "src": "33017:19:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "32967:69:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17401,
                        "nodeType": "ExpressionStatement",
                        "src": "32967:69:55"
                      },
                      {
                        "expression": {
                          "id": 17408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 17402,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17281,
                                "src": "33046:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17405,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "33059:28:55",
                              "memberName": "__reservedAmountByPurchaseId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18559,
                              "src": "33046:41:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$",
                                "typeString": "mapping(string memory => uint256)"
                              }
                            },
                            "id": 17406,
                            "indexExpression": {
                              "id": 17404,
                              "name": "_bondPurchaseId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17265,
                              "src": "33088:15:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "33046:58:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 17407,
                            "name": "actualAmountOfBonds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17310,
                            "src": "33107:19:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "33046:80:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17409,
                        "nodeType": "ExpressionStatement",
                        "src": "33046:80:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 17411,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17267,
                              "src": "33163:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17412,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17281,
                                "src": "33172:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17413,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "33185:16:55",
                              "memberName": "__reservedAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18498,
                              "src": "33172:29:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17410,
                            "name": "ReservedAmountChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14757,
                            "src": "33141:21:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 17414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33141:61:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17415,
                        "nodeType": "EmitStatement",
                        "src": "33136:66:55"
                      },
                      {
                        "expression": {
                          "id": 17416,
                          "name": "actualAmountOfBonds",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17310,
                          "src": "33219:19:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 17278,
                        "id": 17417,
                        "nodeType": "Return",
                        "src": "33212:26:55"
                      }
                    ]
                  },
                  "functionSelector": "906b131a",
                  "id": 17419,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 17274,
                          "name": "_bondId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17267,
                          "src": "31556:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 17275,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 17273,
                        "name": "campaignNotPaused",
                        "nameLocations": [
                          "31538:17:55"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 14823,
                        "src": "31538:17:55"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "31538:26:55"
                    }
                  ],
                  "name": "reserve",
                  "nameLocation": "31382:7:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17272,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17265,
                        "mutability": "mutable",
                        "name": "_bondPurchaseId",
                        "nameLocation": "31413:15:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17419,
                        "src": "31399:29:55",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17264,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31399:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17267,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "31446:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17419,
                        "src": "31438:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17266,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31438:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17269,
                        "mutability": "mutable",
                        "name": "_bondAmount",
                        "nameLocation": "31471:11:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17419,
                        "src": "31463:19:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17268,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31463:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17271,
                        "mutability": "mutable",
                        "name": "_buyer",
                        "nameLocation": "31500:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17419,
                        "src": "31492:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17270,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "31492:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31389:123:55"
                  },
                  "returnParameters": {
                    "id": 17278,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17277,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 17419,
                        "src": "31582:7:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17276,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31582:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31581:9:55"
                  },
                  "scope": 18048,
                  "src": "31373:1872:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 17464,
                    "nodeType": "Block",
                    "src": "33300:408:55",
                    "statements": [
                      {
                        "assignments": [
                          17426
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17426,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "33329:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17464,
                            "src": "33310:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 17425,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 17424,
                                "name": "BondParams",
                                "nameLocations": [
                                  "33310:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "33310:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "33310:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17430,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17428,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17421,
                              "src": "33356:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17427,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "33344:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 17429,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33344:20:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "33310:54:55"
                      },
                      {
                        "condition": {
                          "expression": {
                            "id": 17431,
                            "name": "_bondDetails",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17426,
                            "src": "33378:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams storage pointer"
                            }
                          },
                          "id": 17432,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "33391:8:55",
                          "memberName": "__paused",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 18524,
                          "src": "33378:21:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17437,
                        "nodeType": "IfStatement",
                        "src": "33374:82:55",
                        "trueBody": {
                          "id": 17436,
                          "nodeType": "Block",
                          "src": "33401:55:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17433,
                                  "name": "CampaignAlreadyPaused",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14771,
                                  "src": "33422:21:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 17434,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "33422:23:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 17435,
                              "nodeType": "RevertStatement",
                              "src": "33415:30:55"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 17448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 17442,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 17438,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17426,
                                "src": "33470:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17439,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "33483:19:55",
                              "memberName": "__campaignStartDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18468,
                              "src": "33470:32:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "expression": {
                                "id": 17440,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "33506:5:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 17441,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "33512:9:55",
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "src": "33506:15:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "33470:51:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 17447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 17443,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17426,
                                "src": "33525:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17444,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "33538:17:55",
                              "memberName": "__campaignEndDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18470,
                              "src": "33525:30:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "expression": {
                                "id": 17445,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "33559:5:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 17446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "33565:9:55",
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "src": "33559:15:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "33525:49:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "33470:104:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17453,
                        "nodeType": "IfStatement",
                        "src": "33466:160:55",
                        "trueBody": {
                          "id": 17452,
                          "nodeType": "Block",
                          "src": "33576:50:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17449,
                                  "name": "CampaignIsClosed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14773,
                                  "src": "33597:16:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 17450,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "33597:18:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 17451,
                              "nodeType": "RevertStatement",
                              "src": "33590:25:55"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 17458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 17454,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17426,
                              "src": "33635:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17456,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "33648:8:55",
                            "memberName": "__paused",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18524,
                            "src": "33635:21:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 17457,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33659:4:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "33635:28:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17459,
                        "nodeType": "ExpressionStatement",
                        "src": "33635:28:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 17461,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17421,
                              "src": "33693:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17460,
                            "name": "CampaignPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14729,
                            "src": "33678:14:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 17462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33678:23:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17463,
                        "nodeType": "EmitStatement",
                        "src": "33673:28:55"
                      }
                    ]
                  },
                  "functionSelector": "de99347a",
                  "id": 17465,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pauseCampaign",
                  "nameLocation": "33260:13:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17422,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17421,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "33282:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17465,
                        "src": "33274:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17420,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "33274:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "33273:17:55"
                  },
                  "returnParameters": {
                    "id": 17423,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "33300:0:55"
                  },
                  "scope": 18048,
                  "src": "33251:457:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 17511,
                    "nodeType": "Block",
                    "src": "33765:407:55",
                    "statements": [
                      {
                        "assignments": [
                          17472
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17472,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "33794:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17511,
                            "src": "33775:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 17471,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 17470,
                                "name": "BondParams",
                                "nameLocations": [
                                  "33775:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "33775:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "33775:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17476,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17474,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17467,
                              "src": "33821:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17473,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "33809:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 17475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33809:20:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "33775:54:55"
                      },
                      {
                        "condition": {
                          "id": 17479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "33843:22:55",
                          "subExpression": {
                            "expression": {
                              "id": 17477,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17472,
                              "src": "33844:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17478,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "33857:8:55",
                            "memberName": "__paused",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18524,
                            "src": "33844:21:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17484,
                        "nodeType": "IfStatement",
                        "src": "33839:79:55",
                        "trueBody": {
                          "id": 17483,
                          "nodeType": "Block",
                          "src": "33867:51:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17480,
                                  "name": "CampaignNotPaused",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14769,
                                  "src": "33888:17:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 17481,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "33888:19:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 17482,
                              "nodeType": "RevertStatement",
                              "src": "33881:26:55"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 17495,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 17489,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 17485,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17472,
                                "src": "33931:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17486,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "33944:19:55",
                              "memberName": "__campaignStartDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18468,
                              "src": "33931:32:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "expression": {
                                "id": 17487,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "33967:5:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 17488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "33973:9:55",
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "src": "33967:15:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "33931:51:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 17494,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 17490,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17472,
                                "src": "33986:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17491,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "33999:17:55",
                              "memberName": "__campaignEndDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18470,
                              "src": "33986:30:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "expression": {
                                "id": 17492,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "34020:5:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 17493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "34026:9:55",
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "src": "34020:15:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "33986:49:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "33931:104:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17500,
                        "nodeType": "IfStatement",
                        "src": "33927:160:55",
                        "trueBody": {
                          "id": 17499,
                          "nodeType": "Block",
                          "src": "34037:50:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17496,
                                  "name": "CampaignIsClosed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14773,
                                  "src": "34058:16:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 17497,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "34058:18:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 17498,
                              "nodeType": "RevertStatement",
                              "src": "34051:25:55"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 17505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 17501,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17472,
                              "src": "34096:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17503,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "34109:8:55",
                            "memberName": "__paused",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18524,
                            "src": "34096:21:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 17504,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "34120:5:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "34096:29:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17506,
                        "nodeType": "ExpressionStatement",
                        "src": "34096:29:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 17508,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17467,
                              "src": "34157:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17507,
                            "name": "CampaignUnpaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14733,
                            "src": "34140:16:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 17509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34140:25:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17510,
                        "nodeType": "EmitStatement",
                        "src": "34135:30:55"
                      }
                    ]
                  },
                  "functionSelector": "43a19a65",
                  "id": 17512,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "unpauseCampaign",
                  "nameLocation": "33723:15:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17468,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17467,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "33747:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17512,
                        "src": "33739:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17466,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "33739:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "33738:17:55"
                  },
                  "returnParameters": {
                    "id": 17469,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "33765:0:55"
                  },
                  "scope": 18048,
                  "src": "33714:458:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 17618,
                    "nodeType": "Block",
                    "src": "34279:1148:55",
                    "statements": [
                      {
                        "assignments": [
                          17523
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17523,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "34308:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17618,
                            "src": "34289:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 17522,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 17521,
                                "name": "BondParams",
                                "nameLocations": [
                                  "34289:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "34289:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "34289:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17527,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17525,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17516,
                              "src": "34335:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17524,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "34323:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 17526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34323:20:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "34289:54:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17535,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 17529,
                                  "name": "_bondDetails",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17523,
                                  "src": "34375:12:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                  }
                                },
                                "id": 17530,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "34388:16:55",
                                "memberName": "__reservedAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18498,
                                "src": "34375:29:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 17531,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17523,
                                    "src": "34408:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 17532,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "34421:28:55",
                                  "memberName": "__reservedAmountByPurchaseId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18559,
                                  "src": "34408:41:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$",
                                    "typeString": "mapping(string memory => uint256)"
                                  }
                                },
                                "id": 17534,
                                "indexExpression": {
                                  "id": 17533,
                                  "name": "_bondPurchaseId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17514,
                                  "src": "34450:15:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "34408:58:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "34375:91:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "556e646572666c6f773a20726573657276656420616d6f756e74",
                              "id": 17536,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "34480:28:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_42461cfbb9e199995bee72c7d1758ee595d77e2bcbe016e7c0ec0df44bb04120",
                                "typeString": "literal_string \"Underflow: reserved amount\""
                              },
                              "value": "Underflow: reserved amount"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_42461cfbb9e199995bee72c7d1758ee595d77e2bcbe016e7c0ec0df44bb04120",
                                "typeString": "literal_string \"Underflow: reserved amount\""
                              }
                            ],
                            "id": 17528,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "34354:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34354:164:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17538,
                        "nodeType": "ExpressionStatement",
                        "src": "34354:164:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17548,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 17540,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17523,
                                    "src": "34549:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 17541,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "34562:25:55",
                                  "memberName": "__reservedAmountByAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18555,
                                  "src": "34549:38:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 17543,
                                "indexExpression": {
                                  "id": 17542,
                                  "name": "_buyer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17518,
                                  "src": "34588:6:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "34549:46:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 17544,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17523,
                                    "src": "34599:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 17545,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "34612:28:55",
                                  "memberName": "__reservedAmountByPurchaseId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18559,
                                  "src": "34599:41:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$",
                                    "typeString": "mapping(string memory => uint256)"
                                  }
                                },
                                "id": 17547,
                                "indexExpression": {
                                  "id": 17546,
                                  "name": "_bondPurchaseId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17514,
                                  "src": "34641:15:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "34599:58:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "34549:108:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "556e646572666c6f773a20726573657276656420616d6f756e742062792061646472657373",
                              "id": 17549,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "34671:39:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_36a9d319981723a3cda9faedcc4852fa32ca847ef5ae4aa5aefcebbb1f529c75",
                                "typeString": "literal_string \"Underflow: reserved amount by address\""
                              },
                              "value": "Underflow: reserved amount by address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_36a9d319981723a3cda9faedcc4852fa32ca847ef5ae4aa5aefcebbb1f529c75",
                                "typeString": "literal_string \"Underflow: reserved amount by address\""
                              }
                            ],
                            "id": 17539,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "34528:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34528:192:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17551,
                        "nodeType": "ExpressionStatement",
                        "src": "34528:192:55"
                      },
                      {
                        "expression": {
                          "id": 17559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 17552,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17523,
                              "src": "34731:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17554,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "34744:16:55",
                            "memberName": "__reservedAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18498,
                            "src": "34731:29:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 17555,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17523,
                                "src": "34764:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17556,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "34777:28:55",
                              "memberName": "__reservedAmountByPurchaseId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18559,
                              "src": "34764:41:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$",
                                "typeString": "mapping(string memory => uint256)"
                              }
                            },
                            "id": 17558,
                            "indexExpression": {
                              "id": 17557,
                              "name": "_bondPurchaseId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17514,
                              "src": "34806:15:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "34764:58:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "34731:91:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17560,
                        "nodeType": "ExpressionStatement",
                        "src": "34731:91:55"
                      },
                      {
                        "expression": {
                          "id": 17570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 17561,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17523,
                                "src": "34832:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17564,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "34845:25:55",
                              "memberName": "__reservedAmountByAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18555,
                              "src": "34832:38:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 17565,
                            "indexExpression": {
                              "id": 17563,
                              "name": "_buyer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17518,
                              "src": "34871:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "34832:46:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 17566,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17523,
                                "src": "34882:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17567,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "34895:28:55",
                              "memberName": "__reservedAmountByPurchaseId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18559,
                              "src": "34882:41:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$",
                                "typeString": "mapping(string memory => uint256)"
                              }
                            },
                            "id": 17569,
                            "indexExpression": {
                              "id": 17568,
                              "name": "_bondPurchaseId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17514,
                              "src": "34924:15:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "34882:58:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "34832:108:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17571,
                        "nodeType": "ExpressionStatement",
                        "src": "34832:108:55"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "expression": {
                                "id": 17572,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17523,
                                "src": "34955:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17573,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "34968:25:55",
                              "memberName": "__reservedAmountByAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18555,
                              "src": "34955:38:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 17575,
                            "indexExpression": {
                              "id": 17574,
                              "name": "_buyer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17518,
                              "src": "34994:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "34955:46:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 17576,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "35005:1:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "34955:51:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17591,
                        "nodeType": "IfStatement",
                        "src": "34951:196:55",
                        "trueBody": {
                          "id": 17590,
                          "nodeType": "Block",
                          "src": "35008:139:55",
                          "statements": [
                            {
                              "expression": {
                                "id": 17582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 17578,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17523,
                                    "src": "35022:12:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 17580,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "35035:16:55",
                                  "memberName": "__investorsCount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18504,
                                  "src": "35022:29:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 17581,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "35055:1:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "35022:34:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17583,
                              "nodeType": "ExpressionStatement",
                              "src": "35022:34:55"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 17585,
                                    "name": "_bondId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17516,
                                    "src": "35097:7:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 17586,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17523,
                                      "src": "35106:12:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 17587,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "35119:16:55",
                                    "memberName": "__investorsCount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18504,
                                    "src": "35106:29:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 17584,
                                  "name": "InvestorsCountChanged",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14719,
                                  "src": "35075:21:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint256)"
                                  }
                                },
                                "id": 17588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "35075:61:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 17589,
                              "nodeType": "EmitStatement",
                              "src": "35070:66:55"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 17596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 17592,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17523,
                              "src": "35156:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17594,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "35169:18:55",
                            "memberName": "__revocationsCount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18506,
                            "src": "35156:31:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 17595,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "35191:1:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "35156:36:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17597,
                        "nodeType": "ExpressionStatement",
                        "src": "35156:36:55"
                      },
                      {
                        "expression": {
                          "id": 17604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 17598,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17523,
                                "src": "35202:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17601,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "35215:28:55",
                              "memberName": "__reservedAmountByPurchaseId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18559,
                              "src": "35202:41:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$",
                                "typeString": "mapping(string memory => uint256)"
                              }
                            },
                            "id": 17602,
                            "indexExpression": {
                              "id": 17600,
                              "name": "_bondPurchaseId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17514,
                              "src": "35244:15:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "35202:58:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 17603,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "35263:1:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "35202:62:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17605,
                        "nodeType": "ExpressionStatement",
                        "src": "35202:62:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 17607,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17516,
                              "src": "35303:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17608,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17523,
                                "src": "35312:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17609,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "35325:18:55",
                              "memberName": "__revocationsCount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18506,
                              "src": "35312:31:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17606,
                            "name": "RevocationsCountChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14725,
                            "src": "35279:23:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 17610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35279:65:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17611,
                        "nodeType": "EmitStatement",
                        "src": "35274:70:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 17613,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17516,
                              "src": "35381:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17614,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17523,
                                "src": "35390:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17615,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "35403:16:55",
                              "memberName": "__reservedAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18498,
                              "src": "35390:29:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17612,
                            "name": "ReservedAmountChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14757,
                            "src": "35359:21:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 17616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35359:61:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17617,
                        "nodeType": "EmitStatement",
                        "src": "35354:66:55"
                      }
                    ]
                  },
                  "functionSelector": "25830db3",
                  "id": 17619,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rescindReservation",
                  "nameLocation": "34187:18:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17519,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17514,
                        "mutability": "mutable",
                        "name": "_bondPurchaseId",
                        "nameLocation": "34220:15:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17619,
                        "src": "34206:29:55",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17513,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "34206:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17516,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "34245:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17619,
                        "src": "34237:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17515,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "34237:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17518,
                        "mutability": "mutable",
                        "name": "_buyer",
                        "nameLocation": "34262:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17619,
                        "src": "34254:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17517,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "34254:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34205:64:55"
                  },
                  "returnParameters": {
                    "id": 17520,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "34279:0:55"
                  },
                  "scope": 18048,
                  "src": "34178:1249:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 17698,
                    "nodeType": "Block",
                    "src": "35508:615:55",
                    "statements": [
                      {
                        "assignments": [
                          17630
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17630,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "35537:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17698,
                            "src": "35518:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 17629,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 17628,
                                "name": "BondParams",
                                "nameLocations": [
                                  "35518:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "35518:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "35518:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17634,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17632,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17621,
                              "src": "35564:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17631,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "35552:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 17633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35552:20:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "35518:54:55"
                      },
                      {
                        "expression": {
                          "id": 17639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 17635,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17630,
                              "src": "35582:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17637,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "35595:13:55",
                            "memberName": "__currentLine",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18512,
                            "src": "35582:26:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 17638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "35611:1:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "35582:30:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17640,
                        "nodeType": "ExpressionStatement",
                        "src": "35582:30:55"
                      },
                      {
                        "condition": {
                          "expression": {
                            "id": 17641,
                            "name": "_bondDetails",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17630,
                            "src": "35626:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams storage pointer"
                            }
                          },
                          "id": 17642,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "35639:8:55",
                          "memberName": "__issued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 18526,
                          "src": "35626:21:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17647,
                        "nodeType": "IfStatement",
                        "src": "35622:78:55",
                        "trueBody": {
                          "id": 17646,
                          "nodeType": "Block",
                          "src": "35649:51:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17643,
                                  "name": "BondAlreadyIssued",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14777,
                                  "src": "35670:17:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 17644,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "35670:19:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 17645,
                              "nodeType": "RevertStatement",
                              "src": "35663:26:55"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17649,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17621,
                              "src": "35737:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17650,
                              "name": "_issueDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17623,
                              "src": "35746:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17648,
                            "name": "setCouponDatesFromIssueDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15184,
                            "src": "35709:27:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 17651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35709:48:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17652,
                        "nodeType": "ExpressionStatement",
                        "src": "35709:48:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17654,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17621,
                              "src": "35782:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17653,
                            "name": "setCouponRates",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16222,
                            "src": "35767:14:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) returns (uint256[] memory,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 17655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35767:23:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(uint256[] memory,uint256[] memory,uint256[] memory)"
                          }
                        },
                        "id": 17656,
                        "nodeType": "ExpressionStatement",
                        "src": "35767:23:55"
                      },
                      {
                        "expression": {
                          "id": 17661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 17657,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17630,
                              "src": "35800:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17659,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "35813:8:55",
                            "memberName": "__issued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18526,
                            "src": "35800:21:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 17660,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "35824:4:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "35800:28:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17662,
                        "nodeType": "ExpressionStatement",
                        "src": "35800:28:55"
                      },
                      {
                        "expression": {
                          "id": 17668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 17663,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17630,
                              "src": "35838:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17665,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "35851:8:55",
                            "memberName": "__status",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18571,
                            "src": "35838:21:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BondStatus_$18445",
                              "typeString": "enum BondStorage.BondStatus"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 17666,
                              "name": "BondStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18445,
                              "src": "35862:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_BondStatus_$18445_$",
                                "typeString": "type(enum BondStorage.BondStatus)"
                              }
                            },
                            "id": 17667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "35873:6:55",
                            "memberName": "Issued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18442,
                            "src": "35862:17:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BondStatus_$18445",
                              "typeString": "enum BondStorage.BondStatus"
                            }
                          },
                          "src": "35838:41:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BondStatus_$18445",
                            "typeString": "enum BondStorage.BondStatus"
                          }
                        },
                        "id": 17669,
                        "nodeType": "ExpressionStatement",
                        "src": "35838:41:55"
                      },
                      {
                        "expression": {
                          "id": 17675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 17670,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17630,
                              "src": "35889:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17672,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "35902:14:55",
                            "memberName": "__issuedAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18510,
                            "src": "35889:27:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 17673,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17630,
                              "src": "35919:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17674,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "35932:16:55",
                            "memberName": "__reservedAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18498,
                            "src": "35919:29:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "35889:59:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17676,
                        "nodeType": "ExpressionStatement",
                        "src": "35889:59:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 17683,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "35992:4:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BondFacet_$18048",
                                    "typeString": "contract BondFacet"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_BondFacet_$18048",
                                    "typeString": "contract BondFacet"
                                  }
                                ],
                                "id": 17682,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "35984:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 17681,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "35984:7:55",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 17684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "35984:13:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17685,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17621,
                              "src": "35999:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17686,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17630,
                                "src": "36008:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17687,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "36021:14:55",
                              "memberName": "__issuedAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18510,
                              "src": "36008:27:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 17688,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "36037:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 17678,
                                  "name": "__bond",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14562,
                                  "src": "35971:6:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 17677,
                                "name": "ERC1155Facet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20310,
                                "src": "35958:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC1155Facet_$20310_$",
                                  "typeString": "type(contract ERC1155Facet)"
                                }
                              },
                              "id": 17679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "35958:20:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC1155Facet_$20310",
                                "typeString": "contract ERC1155Facet"
                              }
                            },
                            "id": 17680,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "35979:4:55",
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20152,
                            "src": "35958:25:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory) external"
                            }
                          },
                          "id": 17689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35958:82:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17690,
                        "nodeType": "ExpressionStatement",
                        "src": "35958:82:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 17692,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17621,
                              "src": "36067:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17693,
                              "name": "_issueDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17623,
                              "src": "36076:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 17694,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17630,
                                "src": "36088:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17695,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "36101:14:55",
                              "memberName": "__issuedAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18510,
                              "src": "36088:27:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17691,
                            "name": "BondIssued",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14683,
                            "src": "36056:10:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256)"
                            }
                          },
                          "id": 17696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36056:60:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17697,
                        "nodeType": "EmitStatement",
                        "src": "36051:65:55"
                      }
                    ]
                  },
                  "functionSelector": "f844a31c",
                  "id": 17699,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 17626,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 17625,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "35498:9:55"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 20427,
                        "src": "35498:9:55"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "35498:9:55"
                    }
                  ],
                  "name": "issueBond",
                  "nameLocation": "35442:9:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17624,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17621,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "35460:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17699,
                        "src": "35452:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17620,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "35452:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17623,
                        "mutability": "mutable",
                        "name": "_issueDate",
                        "nameLocation": "35477:10:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17699,
                        "src": "35469:18:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17622,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "35469:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "35451:37:55"
                  },
                  "returnParameters": {
                    "id": 17627,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "35508:0:55"
                  },
                  "scope": 18048,
                  "src": "35433:690:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 17799,
                    "nodeType": "Block",
                    "src": "36234:948:55",
                    "statements": [
                      {
                        "assignments": [
                          17710
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17710,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "36263:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17799,
                            "src": "36244:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 17709,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 17708,
                                "name": "BondParams",
                                "nameLocations": [
                                  "36244:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "36244:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "36244:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17714,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17712,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17703,
                              "src": "36290:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17711,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "36278:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 17713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36278:20:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "36244:54:55"
                      },
                      {
                        "condition": {
                          "id": 17717,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "36312:22:55",
                          "subExpression": {
                            "expression": {
                              "id": 17715,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17710,
                              "src": "36313:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17716,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "36326:8:55",
                            "memberName": "__issued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18526,
                            "src": "36313:21:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17722,
                        "nodeType": "IfStatement",
                        "src": "36308:82:55",
                        "trueBody": {
                          "id": 17721,
                          "nodeType": "Block",
                          "src": "36336:54:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17718,
                                  "name": "BondHasNotBeenIssued",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14779,
                                  "src": "36357:20:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 17719,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "36357:22:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 17720,
                              "nodeType": "RevertStatement",
                              "src": "36350:29:55"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          17724
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17724,
                            "mutability": "mutable",
                            "name": "amount",
                            "nameLocation": "36407:6:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17799,
                            "src": "36399:14:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17723,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "36399:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17729,
                        "initialValue": {
                          "baseExpression": {
                            "expression": {
                              "id": 17725,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17710,
                              "src": "36416:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17726,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "36429:28:55",
                            "memberName": "__reservedAmountByPurchaseId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18559,
                            "src": "36416:41:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$",
                              "typeString": "mapping(string memory => uint256)"
                            }
                          },
                          "id": 17728,
                          "indexExpression": {
                            "id": 17727,
                            "name": "_bondPurchaseId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17701,
                            "src": "36458:15:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "36416:58:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "36399:75:55"
                      },
                      {
                        "assignments": [
                          17731
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17731,
                            "mutability": "mutable",
                            "name": "tokenAmount",
                            "nameLocation": "36492:11:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17799,
                            "src": "36484:19:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17730,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "36484:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17736,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 17732,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17724,
                            "src": "36506:6:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "expression": {
                              "id": 17733,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17710,
                              "src": "36515:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17734,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "36528:9:55",
                            "memberName": "__coupure",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18474,
                            "src": "36515:22:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "36506:31:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "36484:53:55"
                      },
                      {
                        "assignments": [
                          17738
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17738,
                            "mutability": "mutable",
                            "name": "currentAllowance",
                            "nameLocation": "36555:16:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17799,
                            "src": "36547:24:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17737,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "36547:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17749,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17743,
                              "name": "holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17705,
                              "src": "36609:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 17746,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "36625:4:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BondFacet_$18048",
                                    "typeString": "contract BondFacet"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_BondFacet_$18048",
                                    "typeString": "contract BondFacet"
                                  }
                                ],
                                "id": 17745,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "36617:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 17744,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "36617:7:55",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 17747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "36617:13:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 17740,
                                  "name": "__currencyAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14564,
                                  "src": "36580:17:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 17739,
                                "name": "ERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 968,
                                "src": "36574:5:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC20_$968_$",
                                  "typeString": "type(contract ERC20)"
                                }
                              },
                              "id": 17741,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "36574:24:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC20_$968",
                                "typeString": "contract ERC20"
                              }
                            },
                            "id": 17742,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "36599:9:55",
                            "memberName": "allowance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 595,
                            "src": "36574:34:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256)"
                            }
                          },
                          "id": 17748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36574:57:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "36547:84:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17751,
                                "name": "currentAllowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17738,
                                "src": "36649:16:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 17752,
                                "name": "tokenAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17731,
                                "src": "36669:11:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "36649:31:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365",
                              "id": 17754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "36682:42:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                              },
                              "value": "ERC20: transfer amount exceeds allowance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                              }
                            ],
                            "id": 17750,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "36641:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36641:84:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17756,
                        "nodeType": "ExpressionStatement",
                        "src": "36641:84:55"
                      },
                      {
                        "assignments": [
                          17758
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17758,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "36781:7:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17799,
                            "src": "36776:12:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 17757,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "36776:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17768,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17763,
                              "name": "holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17705,
                              "src": "36829:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 17764,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17710,
                                "src": "36837:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17765,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "36850:8:55",
                              "memberName": "__issuer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18575,
                              "src": "36837:21:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17766,
                              "name": "tokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17731,
                              "src": "36860:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 17760,
                                  "name": "__currencyAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14564,
                                  "src": "36797:17:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 17759,
                                "name": "ERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 968,
                                "src": "36791:5:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC20_$968_$",
                                  "typeString": "type(contract ERC20)"
                                }
                              },
                              "id": 17761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "36791:24:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC20_$968",
                                "typeString": "contract ERC20"
                              }
                            },
                            "id": 17762,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "36816:12:55",
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 651,
                            "src": "36791:37:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 17767,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36791:81:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "36776:96:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17770,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17758,
                              "src": "36890:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207472616e73666572206661696c6564",
                              "id": 17771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "36899:24:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e9e9693c2bc26b1051a7ba6e31aee02497d72fe8ae485c09f94eac4f81385e82",
                                "typeString": "literal_string \"ERC20: transfer failed\""
                              },
                              "value": "ERC20: transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e9e9693c2bc26b1051a7ba6e31aee02497d72fe8ae485c09f94eac4f81385e82",
                                "typeString": "literal_string \"ERC20: transfer failed\""
                              }
                            ],
                            "id": 17769,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "36882:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36882:42:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17773,
                        "nodeType": "ExpressionStatement",
                        "src": "36882:42:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17778,
                              "name": "holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17705,
                              "src": "36960:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17779,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17703,
                              "src": "36968:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17780,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17724,
                              "src": "36977:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 17781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "36985:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 17775,
                                  "name": "__bond",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14562,
                                  "src": "36947:6:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 17774,
                                "name": "ERC1155Facet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20310,
                                "src": "36934:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC1155Facet_$20310_$",
                                  "typeString": "type(contract ERC1155Facet)"
                                }
                              },
                              "id": 17776,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "36934:20:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC1155Facet_$20310",
                                "typeString": "contract ERC1155Facet"
                              }
                            },
                            "id": 17777,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "36955:4:55",
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20152,
                            "src": "36934:25:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory) external"
                            }
                          },
                          "id": 17782,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36934:54:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17783,
                        "nodeType": "ExpressionStatement",
                        "src": "36934:54:55"
                      },
                      {
                        "expression": {
                          "id": 17790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 17784,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17710,
                                "src": "37066:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 17787,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "37079:10:55",
                              "memberName": "__isHolder",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18551,
                              "src": "37066:23:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 17788,
                            "indexExpression": {
                              "id": 17786,
                              "name": "holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17705,
                              "src": "37090:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "37066:31:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 17789,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "37100:4:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "37066:38:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17791,
                        "nodeType": "ExpressionStatement",
                        "src": "37066:38:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 17793,
                              "name": "_bondPurchaseId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17701,
                              "src": "37134:15:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 17794,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17703,
                              "src": "37151:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17795,
                              "name": "holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17705,
                              "src": "37160:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17796,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17724,
                              "src": "37168:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17792,
                            "name": "BondsWithdrawn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14693,
                            "src": "37119:14:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (string memory,uint256,address,uint256)"
                            }
                          },
                          "id": 17797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37119:56:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17798,
                        "nodeType": "EmitStatement",
                        "src": "37114:61:55"
                      }
                    ]
                  },
                  "functionSelector": "e3adc7ee",
                  "id": 17800,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawBondsPurchased",
                  "nameLocation": "36138:22:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17706,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17701,
                        "mutability": "mutable",
                        "name": "_bondPurchaseId",
                        "nameLocation": "36175:15:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17800,
                        "src": "36161:29:55",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17700,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "36161:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17703,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "36200:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17800,
                        "src": "36192:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17702,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "36192:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17705,
                        "mutability": "mutable",
                        "name": "holder",
                        "nameLocation": "36217:6:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17800,
                        "src": "36209:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17704,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "36209:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "36160:64:55"
                  },
                  "returnParameters": {
                    "id": 17707,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "36234:0:55"
                  },
                  "scope": 18048,
                  "src": "36129:1053:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 17906,
                    "nodeType": "Block",
                    "src": "37388:889:55",
                    "statements": [
                      {
                        "assignments": [
                          17817
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17817,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "37417:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17906,
                            "src": "37398:31:55",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 17816,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 17815,
                                "name": "BondParams",
                                "nameLocations": [
                                  "37398:10:55"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "37398:10:55"
                              },
                              "referencedDeclaration": 18576,
                              "src": "37398:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17821,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17819,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17804,
                              "src": "37444:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17818,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "37432:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 17820,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37432:20:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "37398:54:55"
                      },
                      {
                        "condition": {
                          "id": 17824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "37466:22:55",
                          "subExpression": {
                            "expression": {
                              "id": 17822,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17817,
                              "src": "37467:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17823,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "37480:8:55",
                            "memberName": "__issued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18526,
                            "src": "37467:21:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17829,
                        "nodeType": "IfStatement",
                        "src": "37462:82:55",
                        "trueBody": {
                          "id": 17828,
                          "nodeType": "Block",
                          "src": "37490:54:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17825,
                                  "name": "BondHasNotBeenIssued",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14779,
                                  "src": "37511:20:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 17826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "37511:22:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 17827,
                              "nodeType": "RevertStatement",
                              "src": "37504:29:55"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17838,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 17834,
                                "name": "_old",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17806,
                                "src": "37588:4:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 17835,
                                "name": "_bondId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17804,
                                "src": "37594:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 17831,
                                    "name": "__bond",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14562,
                                    "src": "37570:6:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17830,
                                  "name": "ERC1155Facet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20310,
                                  "src": "37557:12:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ERC1155Facet_$20310_$",
                                    "typeString": "type(contract ERC1155Facet)"
                                  }
                                },
                                "id": 17832,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "37557:20:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ERC1155Facet_$20310",
                                  "typeString": "contract ERC1155Facet"
                                }
                              },
                              "id": 17833,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "37578:9:55",
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19556,
                              "src": "37557:30:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) view external returns (uint256)"
                              }
                            },
                            "id": 17836,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "37557:45:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 17837,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17810,
                            "src": "37605:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "37557:55:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17843,
                        "nodeType": "IfStatement",
                        "src": "37553:127:55",
                        "trueBody": {
                          "id": 17842,
                          "nodeType": "Block",
                          "src": "37614:66:55",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17839,
                                  "name": "OldAccountDoesNotHaveEnoughBonds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14795,
                                  "src": "37635:32:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 17840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "37635:34:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 17841,
                              "nodeType": "RevertStatement",
                              "src": "37628:41:55"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          17845
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17845,
                            "mutability": "mutable",
                            "name": "_tokenAmount",
                            "nameLocation": "37697:12:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17906,
                            "src": "37689:20:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17844,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "37689:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17850,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17849,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 17846,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17810,
                            "src": "37712:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "expression": {
                              "id": 17847,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17817,
                              "src": "37722:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 17848,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "37735:9:55",
                            "memberName": "__coupure",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18474,
                            "src": "37722:22:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "37712:32:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "37689:55:55"
                      },
                      {
                        "assignments": [
                          17852
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17852,
                            "mutability": "mutable",
                            "name": "currentAllowance",
                            "nameLocation": "37762:16:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17906,
                            "src": "37754:24:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17851,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "37754:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17863,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17857,
                              "name": "_new",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17808,
                              "src": "37816:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 17860,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "37830:4:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BondFacet_$18048",
                                    "typeString": "contract BondFacet"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_BondFacet_$18048",
                                    "typeString": "contract BondFacet"
                                  }
                                ],
                                "id": 17859,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "37822:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 17858,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "37822:7:55",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 17861,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "37822:13:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 17854,
                                  "name": "__currencyAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14564,
                                  "src": "37787:17:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 17853,
                                "name": "ERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 968,
                                "src": "37781:5:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC20_$968_$",
                                  "typeString": "type(contract ERC20)"
                                }
                              },
                              "id": 17855,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "37781:24:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC20_$968",
                                "typeString": "contract ERC20"
                              }
                            },
                            "id": 17856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "37806:9:55",
                            "memberName": "allowance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 595,
                            "src": "37781:34:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256)"
                            }
                          },
                          "id": 17862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37781:55:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "37754:82:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17865,
                                "name": "currentAllowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17852,
                                "src": "37854:16:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 17866,
                                "name": "_tokenAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17845,
                                "src": "37874:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "37854:32:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365",
                              "id": 17868,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "37888:42:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                              },
                              "value": "ERC20: transfer amount exceeds allowance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                              }
                            ],
                            "id": 17864,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "37846:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37846:85:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17870,
                        "nodeType": "ExpressionStatement",
                        "src": "37846:85:55"
                      },
                      {
                        "assignments": [
                          17872
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17872,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "37987:7:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 17906,
                            "src": "37982:12:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 17871,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "37982:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17881,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17877,
                              "name": "_new",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17808,
                              "src": "38035:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17878,
                              "name": "_old",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17806,
                              "src": "38041:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17879,
                              "name": "_tokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17845,
                              "src": "38047:12:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 17874,
                                  "name": "__currencyAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14564,
                                  "src": "38003:17:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 17873,
                                "name": "ERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 968,
                                "src": "37997:5:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC20_$968_$",
                                  "typeString": "type(contract ERC20)"
                                }
                              },
                              "id": 17875,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "37997:24:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC20_$968",
                                "typeString": "contract ERC20"
                              }
                            },
                            "id": 17876,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "38022:12:55",
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 651,
                            "src": "37997:37:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 17880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37997:63:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "37982:78:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17883,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17872,
                              "src": "38078:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207472616e73666572206661696c6564",
                              "id": 17884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38087:24:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e9e9693c2bc26b1051a7ba6e31aee02497d72fe8ae485c09f94eac4f81385e82",
                                "typeString": "literal_string \"ERC20: transfer failed\""
                              },
                              "value": "ERC20: transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e9e9693c2bc26b1051a7ba6e31aee02497d72fe8ae485c09f94eac4f81385e82",
                                "typeString": "literal_string \"ERC20: transfer failed\""
                              }
                            ],
                            "id": 17882,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "38070:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38070:42:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17886,
                        "nodeType": "ExpressionStatement",
                        "src": "38070:42:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17891,
                              "name": "_old",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17806,
                              "src": "38160:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17892,
                              "name": "_new",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17808,
                              "src": "38166:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17893,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17804,
                              "src": "38172:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17894,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17810,
                              "src": "38181:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 17895,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38190:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 17888,
                                  "name": "__bond",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14562,
                                  "src": "38135:6:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 17887,
                                "name": "ERC1155Facet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20310,
                                "src": "38122:12:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC1155Facet_$20310_$",
                                  "typeString": "type(contract ERC1155Facet)"
                                }
                              },
                              "id": 17889,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "38122:20:55",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC1155Facet_$20310",
                                "typeString": "contract ERC1155Facet"
                              }
                            },
                            "id": 17890,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "38143:16:55",
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 19691,
                            "src": "38122:37:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                            }
                          },
                          "id": 17896,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38122:71:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17897,
                        "nodeType": "ExpressionStatement",
                        "src": "38122:71:55"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 17899,
                              "name": "_bondTransferId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17802,
                              "src": "38224:15:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 17900,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17804,
                              "src": "38241:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17901,
                              "name": "_old",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17806,
                              "src": "38250:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17902,
                              "name": "_new",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17808,
                              "src": "38256:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17903,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17810,
                              "src": "38262:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17898,
                            "name": "BondTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14751,
                            "src": "38208:15:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (string memory,uint256,address,address,uint256)"
                            }
                          },
                          "id": 17904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38208:62:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17905,
                        "nodeType": "EmitStatement",
                        "src": "38203:67:55"
                      }
                    ]
                  },
                  "functionSelector": "8dea1f47",
                  "id": 17907,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 17813,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 17812,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "37374:9:55"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 20427,
                        "src": "37374:9:55"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "37374:9:55"
                    }
                  ],
                  "name": "transferBond",
                  "nameLocation": "37197:12:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17811,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17802,
                        "mutability": "mutable",
                        "name": "_bondTransferId",
                        "nameLocation": "37233:15:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17907,
                        "src": "37219:29:55",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17801,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "37219:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17804,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "37266:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17907,
                        "src": "37258:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17803,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "37258:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17806,
                        "mutability": "mutable",
                        "name": "_old",
                        "nameLocation": "37291:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17907,
                        "src": "37283:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17805,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "37283:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17808,
                        "mutability": "mutable",
                        "name": "_new",
                        "nameLocation": "37313:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17907,
                        "src": "37305:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17807,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "37305:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17810,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nameLocation": "37335:7:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 17907,
                        "src": "37327:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17809,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "37327:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "37209:139:55"
                  },
                  "returnParameters": {
                    "id": 17814,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "37388:0:55"
                  },
                  "scope": 18048,
                  "src": "37188:1089:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 18046,
                    "nodeType": "Block",
                    "src": "38347:1008:55",
                    "statements": [
                      {
                        "assignments": [
                          17917
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17917,
                            "mutability": "mutable",
                            "name": "selectors",
                            "nameLocation": "38373:9:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 18046,
                            "src": "38357:25:55",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                              "typeString": "bytes4[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 17915,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "38357:6:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 17916,
                              "nodeType": "ArrayTypeName",
                              "src": "38357:8:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17923,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "3135",
                              "id": 17921,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38398:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_15_by_1",
                                "typeString": "int_const 15"
                              },
                              "value": "15"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_15_by_1",
                                "typeString": "int_const 15"
                              }
                            ],
                            "id": 17920,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "38385:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes4[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 17918,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "38389:6:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 17919,
                              "nodeType": "ArrayTypeName",
                              "src": "38389:8:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            }
                          },
                          "id": 17922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38385:16:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "38357:44:55"
                      },
                      {
                        "expression": {
                          "id": 17930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17924,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17917,
                              "src": "38411:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 17926,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 17925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38421:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "38411:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 17927,
                                "name": "BondFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18048,
                                "src": "38426:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondFacet_$18048_$",
                                  "typeString": "type(contract BondFacet)"
                                }
                              },
                              "id": 17928,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "38436:14:55",
                              "memberName": "initializeBond",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17075,
                              "src": "38426:24:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_struct$_BondInit_$22862_memory_ptr_$returns$__$",
                                "typeString": "function BondFacet.initializeBond(struct BondInitParams.BondInit memory)"
                              }
                            },
                            "id": 17929,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "38451:8:55",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "38426:33:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "38411:48:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 17931,
                        "nodeType": "ExpressionStatement",
                        "src": "38411:48:55"
                      },
                      {
                        "expression": {
                          "id": 17938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17932,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17917,
                              "src": "38469:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 17934,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 17933,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38479:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "38469:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 17935,
                                "name": "BondFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18048,
                                "src": "38484:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondFacet_$18048_$",
                                  "typeString": "type(contract BondFacet)"
                                }
                              },
                              "id": 17936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "38494:18:55",
                              "memberName": "setCurrencyAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14833,
                              "src": "38484:28:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$returns$__$",
                                "typeString": "function BondFacet.setCurrencyAddress(address)"
                              }
                            },
                            "id": 17937,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "38513:8:55",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "38484:37:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "38469:52:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 17939,
                        "nodeType": "ExpressionStatement",
                        "src": "38469:52:55"
                      },
                      {
                        "expression": {
                          "id": 17946,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17940,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17917,
                              "src": "38531:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 17942,
                            "indexExpression": {
                              "hexValue": "32",
                              "id": 17941,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38541:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "38531:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 17943,
                                "name": "BondFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18048,
                                "src": "38546:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondFacet_$18048_$",
                                  "typeString": "type(contract BondFacet)"
                                }
                              },
                              "id": 17944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "38556:18:55",
                              "memberName": "editBondParameters",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17173,
                              "src": "38546:28:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_struct$_BondInit_$22862_memory_ptr_$returns$__$",
                                "typeString": "function BondFacet.editBondParameters(struct BondInitParams.BondInit memory)"
                              }
                            },
                            "id": 17945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "38575:8:55",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "38546:37:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "38531:52:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 17947,
                        "nodeType": "ExpressionStatement",
                        "src": "38531:52:55"
                      },
                      {
                        "expression": {
                          "id": 17954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17948,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17917,
                              "src": "38593:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 17950,
                            "indexExpression": {
                              "hexValue": "33",
                              "id": 17949,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38603:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              },
                              "value": "3"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "38593:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 17951,
                                "name": "BondFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18048,
                                "src": "38608:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondFacet_$18048_$",
                                  "typeString": "type(contract BondFacet)"
                                }
                              },
                              "id": 17952,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "38618:14:55",
                              "memberName": "setBalloonRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17211,
                              "src": "38608:24:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                "typeString": "function BondFacet.setBalloonRate(uint256,uint256,uint256)"
                              }
                            },
                            "id": 17953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "38633:8:55",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "38608:33:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "38593:48:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 17955,
                        "nodeType": "ExpressionStatement",
                        "src": "38593:48:55"
                      },
                      {
                        "expression": {
                          "id": 17962,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17956,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17917,
                              "src": "38651:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 17958,
                            "indexExpression": {
                              "hexValue": "34",
                              "id": 17957,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38661:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "38651:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 17959,
                                "name": "BondFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18048,
                                "src": "38666:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondFacet_$18048_$",
                                  "typeString": "type(contract BondFacet)"
                                }
                              },
                              "id": 17960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "38676:34:55",
                              "memberName": "setCapitalAmortizationFreeDuration",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17237,
                              "src": "38666:44:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                                "typeString": "function BondFacet.setCapitalAmortizationFreeDuration(uint256,uint256)"
                              }
                            },
                            "id": 17961,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "38711:8:55",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "38666:53:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "38651:68:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 17963,
                        "nodeType": "ExpressionStatement",
                        "src": "38651:68:55"
                      },
                      {
                        "expression": {
                          "id": 17970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17964,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17917,
                              "src": "38729:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 17966,
                            "indexExpression": {
                              "hexValue": "35",
                              "id": 17965,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38739:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_5_by_1",
                                "typeString": "int_const 5"
                              },
                              "value": "5"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "38729:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 17967,
                                "name": "BondFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18048,
                                "src": "38744:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondFacet_$18048_$",
                                  "typeString": "type(contract BondFacet)"
                                }
                              },
                              "id": 17968,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "38754:22:55",
                              "memberName": "setGracePeriodDuration",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17263,
                              "src": "38744:32:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                                "typeString": "function BondFacet.setGracePeriodDuration(uint256,uint256)"
                              }
                            },
                            "id": 17969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "38777:8:55",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "38744:41:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "38729:56:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 17971,
                        "nodeType": "ExpressionStatement",
                        "src": "38729:56:55"
                      },
                      {
                        "expression": {
                          "id": 17978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17972,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17917,
                              "src": "38795:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 17974,
                            "indexExpression": {
                              "hexValue": "36",
                              "id": 17973,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38805:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_6_by_1",
                                "typeString": "int_const 6"
                              },
                              "value": "6"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "38795:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 17975,
                                "name": "BondFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18048,
                                "src": "38810:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondFacet_$18048_$",
                                  "typeString": "type(contract BondFacet)"
                                }
                              },
                              "id": 17976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "38820:7:55",
                              "memberName": "reserve",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17419,
                              "src": "38810:17:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function BondFacet.reserve(string memory,uint256,uint256,address) returns (uint256)"
                              }
                            },
                            "id": 17977,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "38828:8:55",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "38810:26:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "38795:41:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 17979,
                        "nodeType": "ExpressionStatement",
                        "src": "38795:41:55"
                      },
                      {
                        "expression": {
                          "id": 17986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17980,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17917,
                              "src": "38846:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 17982,
                            "indexExpression": {
                              "hexValue": "37",
                              "id": 17981,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38856:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_7_by_1",
                                "typeString": "int_const 7"
                              },
                              "value": "7"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "38846:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 17983,
                                "name": "BondFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18048,
                                "src": "38861:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondFacet_$18048_$",
                                  "typeString": "type(contract BondFacet)"
                                }
                              },
                              "id": 17984,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "38871:13:55",
                              "memberName": "pauseCampaign",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17465,
                              "src": "38861:23:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_uint256_$returns$__$",
                                "typeString": "function BondFacet.pauseCampaign(uint256)"
                              }
                            },
                            "id": 17985,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "38885:8:55",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "38861:32:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "38846:47:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 17987,
                        "nodeType": "ExpressionStatement",
                        "src": "38846:47:55"
                      },
                      {
                        "expression": {
                          "id": 17994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17988,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17917,
                              "src": "38903:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 17990,
                            "indexExpression": {
                              "hexValue": "38",
                              "id": 17989,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38913:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_8_by_1",
                                "typeString": "int_const 8"
                              },
                              "value": "8"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "38903:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 17991,
                                "name": "BondFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18048,
                                "src": "38918:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondFacet_$18048_$",
                                  "typeString": "type(contract BondFacet)"
                                }
                              },
                              "id": 17992,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "38928:15:55",
                              "memberName": "unpauseCampaign",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17512,
                              "src": "38918:25:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_uint256_$returns$__$",
                                "typeString": "function BondFacet.unpauseCampaign(uint256)"
                              }
                            },
                            "id": 17993,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "38944:8:55",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "38918:34:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "38903:49:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 17995,
                        "nodeType": "ExpressionStatement",
                        "src": "38903:49:55"
                      },
                      {
                        "expression": {
                          "id": 18002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17996,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17917,
                              "src": "38962:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 17998,
                            "indexExpression": {
                              "hexValue": "39",
                              "id": 17997,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38972:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_9_by_1",
                                "typeString": "int_const 9"
                              },
                              "value": "9"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "38962:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 17999,
                                "name": "BondFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18048,
                                "src": "38977:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondFacet_$18048_$",
                                  "typeString": "type(contract BondFacet)"
                                }
                              },
                              "id": 18000,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "38987:18:55",
                              "memberName": "rescindReservation",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17619,
                              "src": "38977:28:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_address_$returns$__$",
                                "typeString": "function BondFacet.rescindReservation(string memory,uint256,address)"
                              }
                            },
                            "id": 18001,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "39006:8:55",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "38977:37:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "38962:52:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 18003,
                        "nodeType": "ExpressionStatement",
                        "src": "38962:52:55"
                      },
                      {
                        "expression": {
                          "id": 18010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 18004,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17917,
                              "src": "39024:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 18006,
                            "indexExpression": {
                              "hexValue": "3130",
                              "id": 18005,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "39034:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "39024:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 18007,
                                "name": "BondFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18048,
                                "src": "39040:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondFacet_$18048_$",
                                  "typeString": "type(contract BondFacet)"
                                }
                              },
                              "id": 18008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "39050:12:55",
                              "memberName": "transferBond",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17907,
                              "src": "39040:22:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                "typeString": "function BondFacet.transferBond(string memory,uint256,address,address,uint256)"
                              }
                            },
                            "id": 18009,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "39063:8:55",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "39040:31:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "39024:47:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 18011,
                        "nodeType": "ExpressionStatement",
                        "src": "39024:47:55"
                      },
                      {
                        "expression": {
                          "id": 18018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 18012,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17917,
                              "src": "39081:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 18014,
                            "indexExpression": {
                              "hexValue": "3131",
                              "id": 18013,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "39091:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_11_by_1",
                                "typeString": "int_const 11"
                              },
                              "value": "11"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "39081:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 18015,
                                "name": "BondFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18048,
                                "src": "39097:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondFacet_$18048_$",
                                  "typeString": "type(contract BondFacet)"
                                }
                              },
                              "id": 18016,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "39107:22:55",
                              "memberName": "withdrawBondsPurchased",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17800,
                              "src": "39097:32:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_address_$returns$__$",
                                "typeString": "function BondFacet.withdrawBondsPurchased(string memory,uint256,address)"
                              }
                            },
                            "id": 18017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "39130:8:55",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "39097:41:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "39081:57:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 18019,
                        "nodeType": "ExpressionStatement",
                        "src": "39081:57:55"
                      },
                      {
                        "expression": {
                          "id": 18026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 18020,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17917,
                              "src": "39148:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 18022,
                            "indexExpression": {
                              "hexValue": "3132",
                              "id": 18021,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "39158:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_12_by_1",
                                "typeString": "int_const 12"
                              },
                              "value": "12"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "39148:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 18023,
                                "name": "BondFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18048,
                                "src": "39164:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondFacet_$18048_$",
                                  "typeString": "type(contract BondFacet)"
                                }
                              },
                              "id": 18024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "39174:9:55",
                              "memberName": "issueBond",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17699,
                              "src": "39164:19:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                                "typeString": "function BondFacet.issueBond(uint256,uint256)"
                              }
                            },
                            "id": 18025,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "39184:8:55",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "39164:28:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "39148:44:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 18027,
                        "nodeType": "ExpressionStatement",
                        "src": "39148:44:55"
                      },
                      {
                        "expression": {
                          "id": 18034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 18028,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17917,
                              "src": "39202:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 18030,
                            "indexExpression": {
                              "hexValue": "3133",
                              "id": 18029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "39212:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_13_by_1",
                                "typeString": "int_const 13"
                              },
                              "value": "13"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "39202:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 18031,
                                "name": "BondFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18048,
                                "src": "39218:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondFacet_$18048_$",
                                  "typeString": "type(contract BondFacet)"
                                }
                              },
                              "id": 18032,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "39228:17:55",
                              "memberName": "onERC1155Received",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16955,
                              "src": "39218:27:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                "typeString": "function BondFacet.onERC1155Received(address,address,uint256,uint256,bytes calldata) returns (bytes4)"
                              }
                            },
                            "id": 18033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "39246:8:55",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "39218:36:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "39202:52:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 18035,
                        "nodeType": "ExpressionStatement",
                        "src": "39202:52:55"
                      },
                      {
                        "expression": {
                          "id": 18042,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 18036,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17917,
                              "src": "39264:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 18038,
                            "indexExpression": {
                              "hexValue": "3134",
                              "id": 18037,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "39274:2:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_14_by_1",
                                "typeString": "int_const 14"
                              },
                              "value": "14"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "39264:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 18039,
                                "name": "BondFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18048,
                                "src": "39280:9:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondFacet_$18048_$",
                                  "typeString": "type(contract BondFacet)"
                                }
                              },
                              "id": 18040,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "39290:22:55",
                              "memberName": "onERC1155BatchReceived",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16978,
                              "src": "39280:32:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                "typeString": "function BondFacet.onERC1155BatchReceived(address,address,uint256[] calldata,uint256[] calldata,bytes calldata) returns (bytes4)"
                              }
                            },
                            "id": 18041,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "39313:8:55",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "39280:41:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "39264:57:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 18043,
                        "nodeType": "ExpressionStatement",
                        "src": "39264:57:55"
                      },
                      {
                        "expression": {
                          "id": 18044,
                          "name": "selectors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17917,
                          "src": "39339:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "functionReturnParameters": 17912,
                        "id": 18045,
                        "nodeType": "Return",
                        "src": "39332:16:55"
                      }
                    ]
                  },
                  "functionSelector": "4b503f0b",
                  "id": 18047,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSelectors",
                  "nameLocation": "38292:12:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17908,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "38304:2:55"
                  },
                  "returnParameters": {
                    "id": 17912,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17911,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18047,
                        "src": "38330:15:55",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 17909,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "38330:6:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 17910,
                          "nodeType": "ArrayTypeName",
                          "src": "38330:8:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "38329:17:55"
                  },
                  "scope": 18048,
                  "src": "38283:1072:55",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 18049,
              "src": "673:38684:55",
              "usedErrors": [
                6603,
                6610,
                12892,
                12949,
                14767,
                14769,
                14771,
                14773,
                14775,
                14777,
                14779,
                14781,
                14783,
                14785,
                14787,
                14789,
                14791,
                14793,
                14795,
                14797,
                14799,
                14801,
                14803
              ],
              "usedEvents": [
                14580,
                14598,
                14608,
                14624,
                14642,
                14650,
                14656,
                14675,
                14683,
                14693,
                14701,
                14707,
                14713,
                14719,
                14725,
                14729,
                14733,
                14739,
                14751,
                14757,
                14765
              ]
            }
          ],
          "src": "40:39318:55"
        },
        "id": 55
      },
      "contracts/facets/BondManagerFacet.sol": {
        "ast": {
          "absolutePath": "contracts/facets/BondManagerFacet.sol",
          "exportedSymbols": {
            "BondManagerFacet": [
              18147
            ],
            "BondStorage": [
              18600
            ],
            "Casting": [
              14175
            ],
            "CastingErrors": [
              12281
            ],
            "Common": [
              13419
            ],
            "E": [
              12689
            ],
            "EXP2_MAX_INPUT": [
              12713
            ],
            "EXP_MAX_INPUT": [
              12700
            ],
            "Errors": [
              13420
            ],
            "HALF_UNIT": [
              12724
            ],
            "Helpers": [
              14176
            ],
            "LOG2_10": [
              12735
            ],
            "LOG2_E": [
              12746
            ],
            "MAX_UD60x18": [
              12757
            ],
            "MAX_UINT128": [
              6628
            ],
            "MAX_UINT40": [
              6636
            ],
            "MAX_WHOLE_UD60x18": [
              12768
            ],
            "Math": [
              14177
            ],
            "PI": [
              12776
            ],
            "PRBMath_UD60x18_Ceil_Overflow": [
              12875
            ],
            "PRBMath_UD60x18_Convert_Overflow": [
              12880
            ],
            "PRBMath_UD60x18_Exp2_InputTooBig": [
              12892
            ],
            "PRBMath_UD60x18_Exp_InputTooBig": [
              12886
            ],
            "PRBMath_UD60x18_Gm_Overflow": [
              12901
            ],
            "PRBMath_UD60x18_IntoSD1x18_Overflow": [
              12907
            ],
            "PRBMath_UD60x18_IntoSD21x18_Overflow": [
              12913
            ],
            "PRBMath_UD60x18_IntoSD59x18_Overflow": [
              12919
            ],
            "PRBMath_UD60x18_IntoUD21x18_Overflow": [
              12931
            ],
            "PRBMath_UD60x18_IntoUD2x18_Overflow": [
              12925
            ],
            "PRBMath_UD60x18_IntoUint128_Overflow": [
              12937
            ],
            "PRBMath_UD60x18_IntoUint40_Overflow": [
              12943
            ],
            "PRBMath_UD60x18_Log_InputTooSmall": [
              12949
            ],
            "PRBMath_UD60x18_Sqrt_Overflow": [
              12955
            ],
            "SD1x18": [
              8686
            ],
            "SD21x18": [
              9041
            ],
            "SD59x18": [
              11699
            ],
            "UD21x18": [
              12015
            ],
            "UD2x18": [
              12269
            ],
            "UD60x18": [
              14179
            ],
            "UNIT": [
              12787
            ],
            "UNIT_SQUARED": [
              12798
            ],
            "ZERO": [
              12806
            ],
            "add": [
              12987
            ],
            "and": [
              13010
            ],
            "and2": [
              13036
            ],
            "avg": [
              13480
            ],
            "ceil": [
              13509
            ],
            "convert": [
              12834,
              12865
            ],
            "div": [
              13538
            ],
            "eq": [
              13059
            ],
            "exp": [
              13583
            ],
            "exp2": [
              13629
            ],
            "floor": [
              13641
            ],
            "frac": [
              13653
            ],
            "gm": [
              13720
            ],
            "gt": [
              13082
            ],
            "gte": [
              13105
            ],
            "intoSD1x18": [
              12354
            ],
            "intoSD21x18": [
              12402
            ],
            "intoSD59x18": [
              12522
            ],
            "intoUD21x18": [
              12480
            ],
            "intoUD2x18": [
              12441
            ],
            "intoUint128": [
              12574
            ],
            "intoUint256": [
              12539
            ],
            "intoUint40": [
              12609
            ],
            "inv": [
              13742
            ],
            "isZero": [
              13123
            ],
            "ln": [
              13768
            ],
            "log10": [
              13819
            ],
            "log2": [
              13923
            ],
            "lshift": [
              13146
            ],
            "lt": [
              13169
            ],
            "lte": [
              13192
            ],
            "mod": [
              13218
            ],
            "mul": [
              13951
            ],
            "neq": [
              13241
            ],
            "not": [
              13261
            ],
            "or": [
              13287
            ],
            "pow": [
              14058
            ],
            "powu": [
              14130
            ],
            "rshift": [
              13310
            ],
            "sqrt": [
              14172
            ],
            "sub": [
              13336
            ],
            "uEXP2_MAX_INPUT": [
              12706
            ],
            "uEXP_MAX_INPUT": [
              12693
            ],
            "uHALF_UNIT": [
              12717
            ],
            "uLOG2_10": [
              12728
            ],
            "uLOG2_E": [
              12739
            ],
            "uMAX_SD1x18": [
              8609
            ],
            "uMAX_SD21x18": [
              8964
            ],
            "uMAX_SD59x18": [
              9662
            ],
            "uMAX_UD21x18": [
              11974
            ],
            "uMAX_UD2x18": [
              12228
            ],
            "uMAX_UD60x18": [
              12750
            ],
            "uMAX_WHOLE_UD60x18": [
              12761
            ],
            "uUNIT": [
              12780
            ],
            "uUNIT_SQUARED": [
              12791
            ],
            "ud": [
              12626
            ],
            "ud60x18": [
              12643
            ],
            "uncheckedAdd": [
              13363
            ],
            "uncheckedSub": [
              13390
            ],
            "unwrap": [
              12660
            ],
            "wrap": [
              12677
            ],
            "xor": [
              13416
            ]
          },
          "id": 18148,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 18050,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:56"
            },
            {
              "absolutePath": "@prb/math/src/UD60x18.sol",
              "file": "@prb/math/src/UD60x18.sol",
              "id": 18051,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18148,
              "sourceUnit": 8338,
              "src": "66:35:56",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/facets/BondStorage.sol",
              "file": "./BondStorage.sol",
              "id": 18053,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18148,
              "sourceUnit": 18601,
              "src": "102:48:56",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18052,
                    "name": "BondStorage",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18600,
                    "src": "111:11:56",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 18054,
                    "name": "BondStorage",
                    "nameLocations": [
                      "181:11:56"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 18600,
                    "src": "181:11:56"
                  },
                  "id": 18055,
                  "nodeType": "InheritanceSpecifier",
                  "src": "181:11:56"
                }
              ],
              "canonicalName": "BondManagerFacet",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 18147,
              "linearizedBaseContracts": [
                18147,
                18600
              ],
              "name": "BondManagerFacet",
              "nameLocation": "161:16:56",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "d94ffbadbddfbcd61c50dc6b5c62be103f13503104555027924343543fcd1262",
                  "id": 18059,
                  "name": "BondTerminated",
                  "nameLocation": "205:14:56",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 18058,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18057,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "228:6:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 18059,
                        "src": "220:14:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18056,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "220:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "219:16:56"
                  },
                  "src": "199:37:56"
                },
                {
                  "anonymous": false,
                  "eventSelector": "c41d93b8bfbf9fd7cf5bfe271fd649ab6a6fec0ea101c23b82a2a28eca2533a9",
                  "id": 18063,
                  "name": "Cancelled",
                  "nameLocation": "247:9:56",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 18062,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18061,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "265:6:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 18063,
                        "src": "257:14:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18060,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "257:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "256:16:56"
                  },
                  "src": "241:32:56"
                },
                {
                  "body": {
                    "id": 18086,
                    "nodeType": "Block",
                    "src": "324:164:56",
                    "statements": [
                      {
                        "assignments": [
                          18070
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18070,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "353:12:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 18086,
                            "src": "334:31:56",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 18069,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 18068,
                                "name": "BondParams",
                                "nameLocations": [
                                  "334:10:56"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "334:10:56"
                              },
                              "referencedDeclaration": 18576,
                              "src": "334:10:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18074,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18072,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18065,
                              "src": "380:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18071,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "368:11:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 18073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "368:20:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "334:54:56"
                      },
                      {
                        "expression": {
                          "id": 18080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 18075,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18070,
                              "src": "398:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 18077,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "411:8:56",
                            "memberName": "__status",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18571,
                            "src": "398:21:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BondStatus_$18445",
                              "typeString": "enum BondStorage.BondStatus"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 18078,
                              "name": "BondStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18445,
                              "src": "422:10:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_BondStatus_$18445_$",
                                "typeString": "type(enum BondStorage.BondStatus)"
                              }
                            },
                            "id": 18079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "433:10:56",
                            "memberName": "Terminated",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18443,
                            "src": "422:21:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BondStatus_$18445",
                              "typeString": "enum BondStorage.BondStatus"
                            }
                          },
                          "src": "398:45:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BondStatus_$18445",
                            "typeString": "enum BondStorage.BondStatus"
                          }
                        },
                        "id": 18081,
                        "nodeType": "ExpressionStatement",
                        "src": "398:45:56"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 18083,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18065,
                              "src": "473:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18082,
                            "name": "BondTerminated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18059,
                            "src": "458:14:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 18084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "458:23:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18085,
                        "nodeType": "EmitStatement",
                        "src": "453:28:56"
                      }
                    ]
                  },
                  "functionSelector": "7a828b28",
                  "id": 18087,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "terminate",
                  "nameLocation": "288:9:56",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18066,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18065,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "306:7:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 18087,
                        "src": "298:15:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18064,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "298:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "297:17:56"
                  },
                  "returnParameters": {
                    "id": 18067,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "324:0:56"
                  },
                  "scope": 18147,
                  "src": "279:209:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 18109,
                    "nodeType": "Block",
                    "src": "536:259:56",
                    "statements": [
                      {
                        "assignments": [
                          18094
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18094,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "565:12:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 18109,
                            "src": "546:31:56",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 18093,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 18092,
                                "name": "BondParams",
                                "nameLocations": [
                                  "546:10:56"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "546:10:56"
                              },
                              "referencedDeclaration": 18576,
                              "src": "546:10:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18098,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18096,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18089,
                              "src": "592:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18095,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "580:11:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 18097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "580:20:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "546:54:56"
                      },
                      {
                        "expression": {
                          "id": 18103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 18099,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18094,
                              "src": "680:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 18101,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "693:11:56",
                            "memberName": "__cancelled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18528,
                            "src": "680:24:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 18102,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "707:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "680:31:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18104,
                        "nodeType": "ExpressionStatement",
                        "src": "680:31:56"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 18106,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18089,
                              "src": "780:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18105,
                            "name": "Cancelled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18063,
                            "src": "770:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 18107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "770:18:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18108,
                        "nodeType": "EmitStatement",
                        "src": "765:23:56"
                      }
                    ]
                  },
                  "functionSelector": "40e58ee5",
                  "id": 18110,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "cancel",
                  "nameLocation": "503:6:56",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18090,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18089,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "518:7:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 18110,
                        "src": "510:15:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18088,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "510:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "509:17:56"
                  },
                  "returnParameters": {
                    "id": 18091,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "536:0:56"
                  },
                  "scope": 18147,
                  "src": "494:301:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 18145,
                    "nodeType": "Block",
                    "src": "865:203:56",
                    "statements": [
                      {
                        "assignments": [
                          18120
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18120,
                            "mutability": "mutable",
                            "name": "selectors",
                            "nameLocation": "891:9:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 18145,
                            "src": "875:25:56",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                              "typeString": "bytes4[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18118,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "875:6:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 18119,
                              "nodeType": "ArrayTypeName",
                              "src": "875:8:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18126,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "32",
                              "id": 18124,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "916:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "id": 18123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "903:12:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes4[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18121,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "907:6:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 18122,
                              "nodeType": "ArrayTypeName",
                              "src": "907:8:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            }
                          },
                          "id": 18125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "903:15:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "875:43:56"
                      },
                      {
                        "expression": {
                          "id": 18133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 18127,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18120,
                              "src": "928:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 18129,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 18128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "938:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "928:12:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 18130,
                                "name": "BondManagerFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18147,
                                "src": "943:16:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondManagerFacet_$18147_$",
                                  "typeString": "type(contract BondManagerFacet)"
                                }
                              },
                              "id": 18131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "960:9:56",
                              "memberName": "terminate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18087,
                              "src": "943:26:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_uint256_$returns$__$",
                                "typeString": "function BondManagerFacet.terminate(uint256)"
                              }
                            },
                            "id": 18132,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "970:8:56",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "943:35:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "928:50:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 18134,
                        "nodeType": "ExpressionStatement",
                        "src": "928:50:56"
                      },
                      {
                        "expression": {
                          "id": 18141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 18135,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18120,
                              "src": "988:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 18137,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 18136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "998:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "988:12:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 18138,
                                "name": "BondManagerFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18147,
                                "src": "1003:16:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondManagerFacet_$18147_$",
                                  "typeString": "type(contract BondManagerFacet)"
                                }
                              },
                              "id": 18139,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1020:6:56",
                              "memberName": "cancel",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18110,
                              "src": "1003:23:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_uint256_$returns$__$",
                                "typeString": "function BondManagerFacet.cancel(uint256)"
                              }
                            },
                            "id": 18140,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "1027:8:56",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "1003:32:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "988:47:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 18142,
                        "nodeType": "ExpressionStatement",
                        "src": "988:47:56"
                      },
                      {
                        "expression": {
                          "id": 18143,
                          "name": "selectors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18120,
                          "src": "1052:9:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "functionReturnParameters": 18115,
                        "id": 18144,
                        "nodeType": "Return",
                        "src": "1045:16:56"
                      }
                    ]
                  },
                  "functionSelector": "4b503f0b",
                  "id": 18146,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSelectors",
                  "nameLocation": "810:12:56",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18111,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "822:2:56"
                  },
                  "returnParameters": {
                    "id": 18115,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18114,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18146,
                        "src": "848:15:56",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18112,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "848:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 18113,
                          "nodeType": "ArrayTypeName",
                          "src": "848:8:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "847:17:56"
                  },
                  "scope": 18147,
                  "src": "801:267:56",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 18148,
              "src": "152:918:56",
              "usedErrors": [],
              "usedEvents": [
                18059,
                18063
              ]
            }
          ],
          "src": "40:1031:56"
        },
        "id": 56
      },
      "contracts/facets/BondReaderFacet.sol": {
        "ast": {
          "absolutePath": "contracts/facets/BondReaderFacet.sol",
          "exportedSymbols": {
            "BokkyPooBahsDateTimeLibrary": [
              22113
            ],
            "BondReaderFacet": [
              18436
            ],
            "BondStorage": [
              18600
            ],
            "Casting": [
              14175
            ],
            "CastingErrors": [
              12281
            ],
            "Common": [
              13419
            ],
            "E": [
              12689
            ],
            "EXP2_MAX_INPUT": [
              12713
            ],
            "EXP_MAX_INPUT": [
              12700
            ],
            "Errors": [
              13420
            ],
            "HALF_UNIT": [
              12724
            ],
            "Helpers": [
              14176
            ],
            "LOG2_10": [
              12735
            ],
            "LOG2_E": [
              12746
            ],
            "MAX_UD60x18": [
              12757
            ],
            "MAX_UINT128": [
              6628
            ],
            "MAX_UINT40": [
              6636
            ],
            "MAX_WHOLE_UD60x18": [
              12768
            ],
            "Math": [
              14177
            ],
            "PI": [
              12776
            ],
            "PRBMath_UD60x18_Ceil_Overflow": [
              12875
            ],
            "PRBMath_UD60x18_Convert_Overflow": [
              12880
            ],
            "PRBMath_UD60x18_Exp2_InputTooBig": [
              12892
            ],
            "PRBMath_UD60x18_Exp_InputTooBig": [
              12886
            ],
            "PRBMath_UD60x18_Gm_Overflow": [
              12901
            ],
            "PRBMath_UD60x18_IntoSD1x18_Overflow": [
              12907
            ],
            "PRBMath_UD60x18_IntoSD21x18_Overflow": [
              12913
            ],
            "PRBMath_UD60x18_IntoSD59x18_Overflow": [
              12919
            ],
            "PRBMath_UD60x18_IntoUD21x18_Overflow": [
              12931
            ],
            "PRBMath_UD60x18_IntoUD2x18_Overflow": [
              12925
            ],
            "PRBMath_UD60x18_IntoUint128_Overflow": [
              12937
            ],
            "PRBMath_UD60x18_IntoUint40_Overflow": [
              12943
            ],
            "PRBMath_UD60x18_Log_InputTooSmall": [
              12949
            ],
            "PRBMath_UD60x18_Sqrt_Overflow": [
              12955
            ],
            "SD1x18": [
              8686
            ],
            "SD21x18": [
              9041
            ],
            "SD59x18": [
              11699
            ],
            "UD21x18": [
              12015
            ],
            "UD2x18": [
              12269
            ],
            "UD60x18": [
              14179
            ],
            "UNIT": [
              12787
            ],
            "UNIT_SQUARED": [
              12798
            ],
            "ZERO": [
              12806
            ],
            "add": [
              12987
            ],
            "and": [
              13010
            ],
            "and2": [
              13036
            ],
            "avg": [
              13480
            ],
            "ceil": [
              13509
            ],
            "convert": [
              12834,
              12865
            ],
            "div": [
              13538
            ],
            "eq": [
              13059
            ],
            "exp": [
              13583
            ],
            "exp2": [
              13629
            ],
            "floor": [
              13641
            ],
            "frac": [
              13653
            ],
            "gm": [
              13720
            ],
            "gt": [
              13082
            ],
            "gte": [
              13105
            ],
            "intoSD1x18": [
              12354
            ],
            "intoSD21x18": [
              12402
            ],
            "intoSD59x18": [
              12522
            ],
            "intoUD21x18": [
              12480
            ],
            "intoUD2x18": [
              12441
            ],
            "intoUint128": [
              12574
            ],
            "intoUint256": [
              12539
            ],
            "intoUint40": [
              12609
            ],
            "inv": [
              13742
            ],
            "isZero": [
              13123
            ],
            "ln": [
              13768
            ],
            "log10": [
              13819
            ],
            "log2": [
              13923
            ],
            "lshift": [
              13146
            ],
            "lt": [
              13169
            ],
            "lte": [
              13192
            ],
            "mod": [
              13218
            ],
            "mul": [
              13951
            ],
            "neq": [
              13241
            ],
            "not": [
              13261
            ],
            "or": [
              13287
            ],
            "pow": [
              14058
            ],
            "powu": [
              14130
            ],
            "rshift": [
              13310
            ],
            "sqrt": [
              14172
            ],
            "sub": [
              13336
            ],
            "uEXP2_MAX_INPUT": [
              12706
            ],
            "uEXP_MAX_INPUT": [
              12693
            ],
            "uHALF_UNIT": [
              12717
            ],
            "uLOG2_10": [
              12728
            ],
            "uLOG2_E": [
              12739
            ],
            "uMAX_SD1x18": [
              8609
            ],
            "uMAX_SD21x18": [
              8964
            ],
            "uMAX_SD59x18": [
              9662
            ],
            "uMAX_UD21x18": [
              11974
            ],
            "uMAX_UD2x18": [
              12228
            ],
            "uMAX_UD60x18": [
              12750
            ],
            "uMAX_WHOLE_UD60x18": [
              12761
            ],
            "uUNIT": [
              12780
            ],
            "uUNIT_SQUARED": [
              12791
            ],
            "ud": [
              12626
            ],
            "ud60x18": [
              12643
            ],
            "uncheckedAdd": [
              13363
            ],
            "uncheckedSub": [
              13390
            ],
            "unwrap": [
              12660
            ],
            "wrap": [
              12677
            ],
            "xor": [
              13416
            ]
          },
          "id": 18437,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 18149,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:57"
            },
            {
              "absolutePath": "@prb/math/src/UD60x18.sol",
              "file": "@prb/math/src/UD60x18.sol",
              "id": 18150,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18437,
              "sourceUnit": 8338,
              "src": "66:35:57",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/BokkyPooBahsDateTimeLibrary.sol",
              "file": "../libraries/BokkyPooBahsDateTimeLibrary.sol",
              "id": 18152,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18437,
              "sourceUnit": 22114,
              "src": "102:91:57",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18151,
                    "name": "BokkyPooBahsDateTimeLibrary",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22113,
                    "src": "111:27:57",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/facets/BondStorage.sol",
              "file": "./BondStorage.sol",
              "id": 18154,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18437,
              "sourceUnit": 18601,
              "src": "194:48:57",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18153,
                    "name": "BondStorage",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18600,
                    "src": "203:11:57",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 18155,
                    "name": "BondStorage",
                    "nameLocations": [
                      "272:11:57"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 18600,
                    "src": "272:11:57"
                  },
                  "id": 18156,
                  "nodeType": "InheritanceSpecifier",
                  "src": "272:11:57"
                }
              ],
              "canonicalName": "BondReaderFacet",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 18436,
              "linearizedBaseContracts": [
                18436,
                18600
              ],
              "name": "BondReaderFacet",
              "nameLocation": "253:15:57",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 18265,
                    "nodeType": "Block",
                    "src": "437:692:57",
                    "statements": [
                      {
                        "assignments": [
                          18172
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18172,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "535:12:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 18265,
                            "src": "516:31:57",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 18171,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 18170,
                                "name": "BondParams",
                                "nameLocations": [
                                  "516:10:57"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "516:10:57"
                              },
                              "referencedDeclaration": 18576,
                              "src": "516:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18176,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18174,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18158,
                              "src": "562:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18173,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "550:11:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 18175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "550:20:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "516:54:57"
                      },
                      {
                        "assignments": [
                          18178
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18178,
                            "mutability": "mutable",
                            "name": "dateLength",
                            "nameLocation": "588:10:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 18265,
                            "src": "580:18:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18177,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "580:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18182,
                        "initialValue": {
                          "expression": {
                            "expression": {
                              "id": 18179,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18172,
                              "src": "601:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 18180,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "614:13:57",
                            "memberName": "__couponDates",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18534,
                            "src": "601:26:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "id": 18181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "628:6:57",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "601:33:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "580:54:57"
                      },
                      {
                        "assignments": [
                          18187
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18187,
                            "mutability": "mutable",
                            "name": "day",
                            "nameLocation": "661:3:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 18265,
                            "src": "644:20:57",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18185,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "644:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18186,
                              "nodeType": "ArrayTypeName",
                              "src": "644:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18193,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18191,
                              "name": "dateLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18178,
                              "src": "681:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18190,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "667:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18188,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "671:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18189,
                              "nodeType": "ArrayTypeName",
                              "src": "671:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 18192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "667:25:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "644:48:57"
                      },
                      {
                        "assignments": [
                          18198
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18198,
                            "mutability": "mutable",
                            "name": "month",
                            "nameLocation": "719:5:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 18265,
                            "src": "702:22:57",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18196,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "702:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18197,
                              "nodeType": "ArrayTypeName",
                              "src": "702:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18204,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18202,
                              "name": "dateLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18178,
                              "src": "741:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18201,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "727:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18199,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "731:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18200,
                              "nodeType": "ArrayTypeName",
                              "src": "731:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 18203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "727:25:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "702:50:57"
                      },
                      {
                        "assignments": [
                          18209
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18209,
                            "mutability": "mutable",
                            "name": "year",
                            "nameLocation": "779:4:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 18265,
                            "src": "762:21:57",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18207,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "762:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18208,
                              "nodeType": "ArrayTypeName",
                              "src": "762:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18215,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18213,
                              "name": "dateLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18178,
                              "src": "800:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18212,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "786:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18210,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "790:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18211,
                              "nodeType": "ArrayTypeName",
                              "src": "790:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 18214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "786:25:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "762:49:57"
                      },
                      {
                        "body": {
                          "id": 18258,
                          "nodeType": "Block",
                          "src": "862:226:57",
                          "statements": [
                            {
                              "assignments": [
                                18227,
                                18229,
                                18231
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 18227,
                                  "mutability": "mutable",
                                  "name": "y",
                                  "nameLocation": "885:1:57",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 18258,
                                  "src": "877:9:57",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 18226,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "877:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 18229,
                                  "mutability": "mutable",
                                  "name": "m",
                                  "nameLocation": "896:1:57",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 18258,
                                  "src": "888:9:57",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 18228,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "888:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 18231,
                                  "mutability": "mutable",
                                  "name": "d",
                                  "nameLocation": "907:1:57",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 18258,
                                  "src": "899:9:57",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 18230,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "899:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 18239,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "expression": {
                                        "id": 18234,
                                        "name": "_bondDetails",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18172,
                                        "src": "972:12:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                          "typeString": "struct BondStorage.BondParams storage pointer"
                                        }
                                      },
                                      "id": 18235,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "985:13:57",
                                      "memberName": "__couponDates",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 18534,
                                      "src": "972:26:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                        "typeString": "uint256[] storage ref"
                                      }
                                    },
                                    "id": 18237,
                                    "indexExpression": {
                                      "id": 18236,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18217,
                                      "src": "999:1:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "972:29:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 18232,
                                    "name": "BokkyPooBahsDateTimeLibrary",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22113,
                                    "src": "928:27:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$22113_$",
                                      "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                    }
                                  },
                                  "id": 18233,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "956:15:57",
                                  "memberName": "timestampToDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20974,
                                  "src": "928:43:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                                  }
                                },
                                "id": 18238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "928:74:57",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "876:126:57"
                            },
                            {
                              "expression": {
                                "id": 18244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 18240,
                                    "name": "day",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18187,
                                    "src": "1016:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 18242,
                                  "indexExpression": {
                                    "id": 18241,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18217,
                                    "src": "1020:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1016:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 18243,
                                  "name": "d",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18231,
                                  "src": "1025:1:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1016:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18245,
                              "nodeType": "ExpressionStatement",
                              "src": "1016:10:57"
                            },
                            {
                              "expression": {
                                "id": 18250,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 18246,
                                    "name": "month",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18198,
                                    "src": "1040:5:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 18248,
                                  "indexExpression": {
                                    "id": 18247,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18217,
                                    "src": "1046:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1040:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 18249,
                                  "name": "m",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18229,
                                  "src": "1051:1:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1040:12:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18251,
                              "nodeType": "ExpressionStatement",
                              "src": "1040:12:57"
                            },
                            {
                              "expression": {
                                "id": 18256,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 18252,
                                    "name": "year",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18209,
                                    "src": "1066:4:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 18254,
                                  "indexExpression": {
                                    "id": 18253,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18217,
                                    "src": "1071:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1066:7:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 18255,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18227,
                                  "src": "1076:1:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1066:11:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18257,
                              "nodeType": "ExpressionStatement",
                              "src": "1066:11:57"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 18220,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18217,
                            "src": "841:1:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 18221,
                            "name": "dateLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18178,
                            "src": "845:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "841:14:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18259,
                        "initializationExpression": {
                          "assignments": [
                            18217
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 18217,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "834:1:57",
                              "nodeType": "VariableDeclaration",
                              "scope": 18259,
                              "src": "826:9:57",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 18216,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "826:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 18219,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 18218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "838:1:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "826:13:57"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 18224,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "857:3:57",
                            "subExpression": {
                              "id": 18223,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18217,
                              "src": "857:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18225,
                          "nodeType": "ExpressionStatement",
                          "src": "857:3:57"
                        },
                        "nodeType": "ForStatement",
                        "src": "821:267:57"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 18260,
                              "name": "day",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18187,
                              "src": "1105:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 18261,
                              "name": "month",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18198,
                              "src": "1110:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 18262,
                              "name": "year",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18209,
                              "src": "1117:4:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 18263,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1104:18:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(uint256[] memory,uint256[] memory,uint256[] memory)"
                          }
                        },
                        "functionReturnParameters": 18169,
                        "id": 18264,
                        "nodeType": "Return",
                        "src": "1097:25:57"
                      }
                    ]
                  },
                  "functionSelector": "a8314de7",
                  "id": 18266,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCouponsDates",
                  "nameLocation": "299:15:57",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18159,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18158,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "323:7:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 18266,
                        "src": "315:15:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18157,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "315:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "314:17:57"
                  },
                  "returnParameters": {
                    "id": 18169,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18162,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18266,
                        "src": "379:16:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18160,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "379:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18161,
                          "nodeType": "ArrayTypeName",
                          "src": "379:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18165,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18266,
                        "src": "397:16:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18163,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "397:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18164,
                          "nodeType": "ArrayTypeName",
                          "src": "397:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18168,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18266,
                        "src": "415:16:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18166,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "415:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18167,
                          "nodeType": "ArrayTypeName",
                          "src": "415:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "378:54:57"
                  },
                  "scope": 18436,
                  "src": "290:839:57",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 18398,
                    "nodeType": "Block",
                    "src": "1300:825:57",
                    "statements": [
                      {
                        "assignments": [
                          18285
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18285,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "1329:12:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 18398,
                            "src": "1310:31:57",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 18284,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 18283,
                                "name": "BondParams",
                                "nameLocations": [
                                  "1310:10:57"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "1310:10:57"
                              },
                              "referencedDeclaration": 18576,
                              "src": "1310:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18289,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18287,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18268,
                              "src": "1356:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18286,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "1344:11:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 18288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1344:20:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1310:54:57"
                      },
                      {
                        "assignments": [
                          18294
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18294,
                            "mutability": "mutable",
                            "name": "gross",
                            "nameLocation": "1392:5:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 18398,
                            "src": "1375:22:57",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18292,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1375:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18293,
                              "nodeType": "ArrayTypeName",
                              "src": "1375:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18302,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "expression": {
                                  "id": 18298,
                                  "name": "_bondDetails",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18285,
                                  "src": "1414:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                  }
                                },
                                "id": 18299,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1427:18:57",
                                "memberName": "__grossCouponRates",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18531,
                                "src": "1414:31:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                  "typeString": "uint256[] storage ref"
                                }
                              },
                              "id": 18300,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1446:6:57",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "1414:38:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18297,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1400:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18295,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1404:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18296,
                              "nodeType": "ArrayTypeName",
                              "src": "1404:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 18301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1400:53:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1375:78:57"
                      },
                      {
                        "assignments": [
                          18307
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18307,
                            "mutability": "mutable",
                            "name": "net",
                            "nameLocation": "1480:3:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 18398,
                            "src": "1463:20:57",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18305,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1463:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18306,
                              "nodeType": "ArrayTypeName",
                              "src": "1463:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18315,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "expression": {
                                  "id": 18311,
                                  "name": "_bondDetails",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18285,
                                  "src": "1500:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                  }
                                },
                                "id": 18312,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1513:18:57",
                                "memberName": "__grossCouponRates",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18531,
                                "src": "1500:31:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                  "typeString": "uint256[] storage ref"
                                }
                              },
                              "id": 18313,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1532:6:57",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "1500:38:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18310,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1486:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18308,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1490:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18309,
                              "nodeType": "ArrayTypeName",
                              "src": "1490:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 18314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1486:53:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1463:76:57"
                      },
                      {
                        "assignments": [
                          18320
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18320,
                            "mutability": "mutable",
                            "name": "capital",
                            "nameLocation": "1566:7:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 18398,
                            "src": "1549:24:57",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18318,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1549:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18319,
                              "nodeType": "ArrayTypeName",
                              "src": "1549:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18328,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "expression": {
                                  "id": 18324,
                                  "name": "_bondDetails",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18285,
                                  "src": "1590:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                  }
                                },
                                "id": 18325,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1603:18:57",
                                "memberName": "__capitalRepayment",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18540,
                                "src": "1590:31:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                  "typeString": "uint256[] storage ref"
                                }
                              },
                              "id": 18326,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1622:6:57",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "1590:38:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1576:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18321,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1580:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18322,
                              "nodeType": "ArrayTypeName",
                              "src": "1580:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 18327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1576:53:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1549:80:57"
                      },
                      {
                        "assignments": [
                          18333
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18333,
                            "mutability": "mutable",
                            "name": "remainingCapital",
                            "nameLocation": "1656:16:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 18398,
                            "src": "1639:33:57",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18331,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1639:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18332,
                              "nodeType": "ArrayTypeName",
                              "src": "1639:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18341,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "expression": {
                                  "id": 18337,
                                  "name": "_bondDetails",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18285,
                                  "src": "1689:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                  }
                                },
                                "id": 18338,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1702:18:57",
                                "memberName": "__remainingCapital",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18543,
                                "src": "1689:31:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                  "typeString": "uint256[] storage ref"
                                }
                              },
                              "id": 18339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1721:6:57",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "1689:38:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1675:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18334,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1679:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18335,
                              "nodeType": "ArrayTypeName",
                              "src": "1679:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 18340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1675:53:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1639:89:57"
                      },
                      {
                        "body": {
                          "id": 18390,
                          "nodeType": "Block",
                          "src": "1807:256:57",
                          "statements": [
                            {
                              "expression": {
                                "id": 18361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 18354,
                                    "name": "gross",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18294,
                                    "src": "1821:5:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 18356,
                                  "indexExpression": {
                                    "id": 18355,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18343,
                                    "src": "1827:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1821:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 18357,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18285,
                                      "src": "1832:12:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 18358,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1845:18:57",
                                    "memberName": "__grossCouponRates",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18531,
                                    "src": "1832:31:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 18360,
                                  "indexExpression": {
                                    "id": 18359,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18343,
                                    "src": "1864:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1832:34:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1821:45:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18362,
                              "nodeType": "ExpressionStatement",
                              "src": "1821:45:57"
                            },
                            {
                              "expression": {
                                "id": 18370,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 18363,
                                    "name": "net",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18307,
                                    "src": "1880:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 18365,
                                  "indexExpression": {
                                    "id": 18364,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18343,
                                    "src": "1884:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1880:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 18366,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18285,
                                      "src": "1889:12:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 18367,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1902:16:57",
                                    "memberName": "__netCouponRates",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18537,
                                    "src": "1889:29:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 18369,
                                  "indexExpression": {
                                    "id": 18368,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18343,
                                    "src": "1919:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1889:32:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1880:41:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18371,
                              "nodeType": "ExpressionStatement",
                              "src": "1880:41:57"
                            },
                            {
                              "expression": {
                                "id": 18379,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 18372,
                                    "name": "capital",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18320,
                                    "src": "1935:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 18374,
                                  "indexExpression": {
                                    "id": 18373,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18343,
                                    "src": "1943:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1935:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 18375,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18285,
                                      "src": "1948:12:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 18376,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1961:18:57",
                                    "memberName": "__capitalRepayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18540,
                                    "src": "1948:31:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 18378,
                                  "indexExpression": {
                                    "id": 18377,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18343,
                                    "src": "1980:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1948:34:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1935:47:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18380,
                              "nodeType": "ExpressionStatement",
                              "src": "1935:47:57"
                            },
                            {
                              "expression": {
                                "id": 18388,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 18381,
                                    "name": "remainingCapital",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18333,
                                    "src": "1996:16:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 18383,
                                  "indexExpression": {
                                    "id": 18382,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18343,
                                    "src": "2013:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1996:19:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 18384,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18285,
                                      "src": "2018:12:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 18385,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2031:18:57",
                                    "memberName": "__remainingCapital",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18543,
                                    "src": "2018:31:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 18387,
                                  "indexExpression": {
                                    "id": 18386,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18343,
                                    "src": "2050:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2018:34:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1996:56:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18389,
                              "nodeType": "ExpressionStatement",
                              "src": "1996:56:57"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 18346,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18343,
                            "src": "1758:1:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 18347,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18285,
                                "src": "1762:12:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 18348,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1775:18:57",
                              "memberName": "__grossCouponRates",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18531,
                              "src": "1762:31:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 18349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1794:6:57",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1762:38:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1758:42:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18391,
                        "initializationExpression": {
                          "assignments": [
                            18343
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 18343,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "1751:1:57",
                              "nodeType": "VariableDeclaration",
                              "scope": 18391,
                              "src": "1743:9:57",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 18342,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1743:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 18345,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 18344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1755:1:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1743:13:57"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 18352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1802:3:57",
                            "subExpression": {
                              "id": 18351,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18343,
                              "src": "1802:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18353,
                          "nodeType": "ExpressionStatement",
                          "src": "1802:3:57"
                        },
                        "nodeType": "ForStatement",
                        "src": "1738:325:57"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 18392,
                              "name": "gross",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18294,
                              "src": "2080:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 18393,
                              "name": "net",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18307,
                              "src": "2087:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 18394,
                              "name": "capital",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18320,
                              "src": "2092:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 18395,
                              "name": "remainingCapital",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18333,
                              "src": "2101:16:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 18396,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2079:39:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(uint256[] memory,uint256[] memory,uint256[] memory,uint256[] memory)"
                          }
                        },
                        "functionReturnParameters": 18282,
                        "id": 18397,
                        "nodeType": "Return",
                        "src": "2072:46:57"
                      }
                    ]
                  },
                  "functionSelector": "c89fa570",
                  "id": 18399,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCouponsRates",
                  "nameLocation": "1144:15:57",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18269,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18268,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "1168:7:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 18399,
                        "src": "1160:15:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18267,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1160:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1159:17:57"
                  },
                  "returnParameters": {
                    "id": 18282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18272,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18399,
                        "src": "1224:16:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18270,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1224:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18271,
                          "nodeType": "ArrayTypeName",
                          "src": "1224:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18275,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18399,
                        "src": "1242:16:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18273,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1242:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18274,
                          "nodeType": "ArrayTypeName",
                          "src": "1242:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18278,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18399,
                        "src": "1260:16:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18276,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1260:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18277,
                          "nodeType": "ArrayTypeName",
                          "src": "1260:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18281,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18399,
                        "src": "1278:16:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18279,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1278:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18280,
                          "nodeType": "ArrayTypeName",
                          "src": "1278:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1223:72:57"
                  },
                  "scope": 18436,
                  "src": "1135:990:57",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 18434,
                    "nodeType": "Block",
                    "src": "2195:216:57",
                    "statements": [
                      {
                        "assignments": [
                          18409
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18409,
                            "mutability": "mutable",
                            "name": "selectors",
                            "nameLocation": "2221:9:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 18434,
                            "src": "2205:25:57",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                              "typeString": "bytes4[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18407,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "2205:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 18408,
                              "nodeType": "ArrayTypeName",
                              "src": "2205:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18415,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "32",
                              "id": 18413,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2246:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "id": 18412,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2233:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes4[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18410,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "2237:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 18411,
                              "nodeType": "ArrayTypeName",
                              "src": "2237:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            }
                          },
                          "id": 18414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2233:15:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2205:43:57"
                      },
                      {
                        "expression": {
                          "id": 18422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 18416,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18409,
                              "src": "2258:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 18418,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 18417,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2268:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2258:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 18419,
                                "name": "BondReaderFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18436,
                                "src": "2273:15:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondReaderFacet_$18436_$",
                                  "typeString": "type(contract BondReaderFacet)"
                                }
                              },
                              "id": 18420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2289:15:57",
                              "memberName": "getCouponsDates",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18266,
                              "src": "2273:31:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_view$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function BondReaderFacet.getCouponsDates(uint256) view returns (uint256[] memory,uint256[] memory,uint256[] memory)"
                              }
                            },
                            "id": 18421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "2305:8:57",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "2273:40:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "2258:55:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 18423,
                        "nodeType": "ExpressionStatement",
                        "src": "2258:55:57"
                      },
                      {
                        "expression": {
                          "id": 18430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 18424,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18409,
                              "src": "2323:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 18426,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 18425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2333:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2323:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 18427,
                                "name": "BondReaderFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18436,
                                "src": "2338:15:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BondReaderFacet_$18436_$",
                                  "typeString": "type(contract BondReaderFacet)"
                                }
                              },
                              "id": 18428,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2354:15:57",
                              "memberName": "getCouponsRates",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18399,
                              "src": "2338:31:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_view$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function BondReaderFacet.getCouponsRates(uint256) view returns (uint256[] memory,uint256[] memory,uint256[] memory,uint256[] memory)"
                              }
                            },
                            "id": 18429,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "2370:8:57",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "2338:40:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "2323:55:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 18431,
                        "nodeType": "ExpressionStatement",
                        "src": "2323:55:57"
                      },
                      {
                        "expression": {
                          "id": 18432,
                          "name": "selectors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18409,
                          "src": "2395:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "functionReturnParameters": 18404,
                        "id": 18433,
                        "nodeType": "Return",
                        "src": "2388:16:57"
                      }
                    ]
                  },
                  "functionSelector": "4b503f0b",
                  "id": 18435,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSelectors",
                  "nameLocation": "2140:12:57",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18400,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2152:2:57"
                  },
                  "returnParameters": {
                    "id": 18404,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18403,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18435,
                        "src": "2178:15:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18401,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "2178:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 18402,
                          "nodeType": "ArrayTypeName",
                          "src": "2178:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2177:17:57"
                  },
                  "scope": 18436,
                  "src": "2131:280:57",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 18437,
              "src": "244:2169:57",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "40:2374:57"
        },
        "id": 57
      },
      "contracts/facets/BondStorage.sol": {
        "ast": {
          "absolutePath": "contracts/facets/BondStorage.sol",
          "exportedSymbols": {
            "BondStorage": [
              18600
            ],
            "Strings": [
              3026
            ]
          },
          "id": 18601,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 18438,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:58"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
              "file": "@openzeppelin/contracts/utils/Strings.sol",
              "id": 18440,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18601,
              "sourceUnit": 3027,
              "src": "66:68:58",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18439,
                    "name": "Strings",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3026,
                    "src": "75:7:58",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "BondStorage",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 18600,
              "linearizedBaseContracts": [
                18600
              ],
              "name": "BondStorage",
              "nameLocation": "145:11:58",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "BondStorage.BondStatus",
                  "id": 18445,
                  "members": [
                    {
                      "id": 18441,
                      "name": "Unset",
                      "nameLocation": "189:5:58",
                      "nodeType": "EnumValue",
                      "src": "189:5:58"
                    },
                    {
                      "id": 18442,
                      "name": "Issued",
                      "nameLocation": "204:6:58",
                      "nodeType": "EnumValue",
                      "src": "204:6:58"
                    },
                    {
                      "id": 18443,
                      "name": "Terminated",
                      "nameLocation": "220:10:58",
                      "nodeType": "EnumValue",
                      "src": "220:10:58"
                    },
                    {
                      "id": 18444,
                      "name": "Maturity",
                      "nameLocation": "240:8:58",
                      "nodeType": "EnumValue",
                      "src": "240:8:58"
                    }
                  ],
                  "name": "BondStatus",
                  "nameLocation": "168:10:58",
                  "nodeType": "EnumDefinition",
                  "src": "163:91:58"
                },
                {
                  "canonicalName": "BondStorage.CouponStatus",
                  "id": 18448,
                  "members": [
                    {
                      "id": 18446,
                      "name": "Todo",
                      "nameLocation": "288:4:58",
                      "nodeType": "EnumValue",
                      "src": "288:4:58"
                    },
                    {
                      "id": 18447,
                      "name": "Executed",
                      "nameLocation": "302:8:58",
                      "nodeType": "EnumValue",
                      "src": "302:8:58"
                    }
                  ],
                  "name": "CouponStatus",
                  "nameLocation": "265:12:58",
                  "nodeType": "EnumDefinition",
                  "src": "260:56:58"
                },
                {
                  "canonicalName": "BondStorage.Periodicity",
                  "id": 18452,
                  "members": [
                    {
                      "id": 18449,
                      "name": "Annual",
                      "nameLocation": "349:6:58",
                      "nodeType": "EnumValue",
                      "src": "349:6:58"
                    },
                    {
                      "id": 18450,
                      "name": "Quarterly",
                      "nameLocation": "365:9:58",
                      "nodeType": "EnumValue",
                      "src": "365:9:58"
                    },
                    {
                      "id": 18451,
                      "name": "Monthly",
                      "nameLocation": "384:7:58",
                      "nodeType": "EnumValue",
                      "src": "384:7:58"
                    }
                  ],
                  "name": "Periodicity",
                  "nameLocation": "327:11:58",
                  "nodeType": "EnumDefinition",
                  "src": "322:75:58"
                },
                {
                  "canonicalName": "BondStorage.FormOfFinancing",
                  "id": 18455,
                  "members": [
                    {
                      "id": 18453,
                      "name": "Bond",
                      "nameLocation": "434:4:58",
                      "nodeType": "EnumValue",
                      "src": "434:4:58"
                    },
                    {
                      "id": 18454,
                      "name": "SubordinatedBond",
                      "nameLocation": "448:16:58",
                      "nodeType": "EnumValue",
                      "src": "448:16:58"
                    }
                  ],
                  "name": "FormOfFinancing",
                  "nameLocation": "408:15:58",
                  "nodeType": "EnumDefinition",
                  "src": "403:67:58"
                },
                {
                  "canonicalName": "BondStorage.MethodOfRepayment",
                  "id": 18462,
                  "members": [
                    {
                      "id": 18456,
                      "name": "Bullet",
                      "nameLocation": "509:6:58",
                      "nodeType": "EnumValue",
                      "src": "509:6:58"
                    },
                    {
                      "id": 18457,
                      "name": "Degressive",
                      "nameLocation": "525:10:58",
                      "nodeType": "EnumValue",
                      "src": "525:10:58"
                    },
                    {
                      "id": 18458,
                      "name": "Balloon",
                      "nameLocation": "545:7:58",
                      "nodeType": "EnumValue",
                      "src": "545:7:58"
                    },
                    {
                      "id": 18459,
                      "name": "WithCapitalAmortizationFreePeriod",
                      "nameLocation": "562:33:58",
                      "nodeType": "EnumValue",
                      "src": "562:33:58"
                    },
                    {
                      "id": 18460,
                      "name": "GracePeriod",
                      "nameLocation": "605:11:58",
                      "nodeType": "EnumValue",
                      "src": "605:11:58"
                    },
                    {
                      "id": 18461,
                      "name": "CapitalAmortizationAndGracePeriod",
                      "nameLocation": "626:33:58",
                      "nodeType": "EnumValue",
                      "src": "626:33:58"
                    }
                  ],
                  "name": "MethodOfRepayment",
                  "nameLocation": "481:17:58",
                  "nodeType": "EnumDefinition",
                  "src": "476:189:58"
                },
                {
                  "canonicalName": "BondStorage.BondParams",
                  "id": 18576,
                  "members": [
                    {
                      "constant": false,
                      "id": 18464,
                      "mutability": "mutable",
                      "name": "__campaignMinAmount",
                      "nameLocation": "707:19:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "699:27:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18463,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "699:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18466,
                      "mutability": "mutable",
                      "name": "__campaignMaxAmount",
                      "nameLocation": "744:19:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "736:27:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18465,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "736:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18468,
                      "mutability": "mutable",
                      "name": "__campaignStartDate",
                      "nameLocation": "781:19:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "773:27:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18467,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "773:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18470,
                      "mutability": "mutable",
                      "name": "__campaignEndDate",
                      "nameLocation": "818:17:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "810:25:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18469,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "810:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18472,
                      "mutability": "mutable",
                      "name": "__costEmittent",
                      "nameLocation": "853:14:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "845:22:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18471,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "845:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18474,
                      "mutability": "mutable",
                      "name": "__coupure",
                      "nameLocation": "885:9:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "877:17:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18473,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "877:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18476,
                      "mutability": "mutable",
                      "name": "__interestRate",
                      "nameLocation": "912:14:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "904:22:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18475,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "904:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18478,
                      "mutability": "mutable",
                      "name": "__netReturn",
                      "nameLocation": "944:11:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "936:19:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18477,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "936:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18480,
                      "mutability": "mutable",
                      "name": "__periodicInterestRate",
                      "nameLocation": "973:22:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "965:30:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18479,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "965:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18482,
                      "mutability": "mutable",
                      "name": "__withholdingTax",
                      "nameLocation": "1013:16:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1005:24:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18481,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1005:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18484,
                      "mutability": "mutable",
                      "name": "__balloonRate",
                      "nameLocation": "1047:13:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1039:21:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18483,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1039:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18486,
                      "mutability": "mutable",
                      "name": "__issueDate",
                      "nameLocation": "1078:11:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1070:19:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18485,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1070:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18488,
                      "mutability": "mutable",
                      "name": "__maturityDate",
                      "nameLocation": "1107:14:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1099:22:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18487,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1099:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18490,
                      "mutability": "mutable",
                      "name": "__duration",
                      "nameLocation": "1139:10:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1131:18:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18489,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1131:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18492,
                      "mutability": "mutable",
                      "name": "__capitalAmortizationDuration",
                      "nameLocation": "1167:29:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1159:37:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18491,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1159:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18494,
                      "mutability": "mutable",
                      "name": "__gracePeriodDuration",
                      "nameLocation": "1214:21:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1206:29:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18493,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1206:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18496,
                      "mutability": "mutable",
                      "name": "__maxSupply",
                      "nameLocation": "1253:11:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1245:19:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18495,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1245:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18498,
                      "mutability": "mutable",
                      "name": "__reservedAmount",
                      "nameLocation": "1282:16:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1274:24:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18497,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1274:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18500,
                      "mutability": "mutable",
                      "name": "__maxAmountPerInvestor",
                      "nameLocation": "1316:22:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1308:30:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18499,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1308:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18502,
                      "mutability": "mutable",
                      "name": "__previousId",
                      "nameLocation": "1356:12:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1348:20:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18501,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1348:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18504,
                      "mutability": "mutable",
                      "name": "__investorsCount",
                      "nameLocation": "1386:16:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1378:24:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18503,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1378:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18506,
                      "mutability": "mutable",
                      "name": "__revocationsCount",
                      "nameLocation": "1420:18:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1412:26:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18505,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1412:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18508,
                      "mutability": "mutable",
                      "name": "__totalToBeRepaid",
                      "nameLocation": "1456:17:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1448:25:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18507,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1448:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18510,
                      "mutability": "mutable",
                      "name": "__issuedAmount",
                      "nameLocation": "1491:14:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1483:22:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18509,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1483:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18512,
                      "mutability": "mutable",
                      "name": "__currentLine",
                      "nameLocation": "1523:13:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1515:21:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18511,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1515:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18514,
                      "mutability": "mutable",
                      "name": "__nextInterestAmount",
                      "nameLocation": "1554:20:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1546:28:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18513,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1546:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18516,
                      "mutability": "mutable",
                      "name": "__nextCapitalAmount",
                      "nameLocation": "1592:19:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1584:27:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18515,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1584:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18518,
                      "mutability": "mutable",
                      "name": "__allClaimsReceived",
                      "nameLocation": "1626:19:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1621:24:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 18517,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1621:4:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18520,
                      "mutability": "mutable",
                      "name": "__isSub",
                      "nameLocation": "1660:7:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1655:12:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 18519,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1655:4:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18522,
                      "mutability": "mutable",
                      "name": "__initDone",
                      "nameLocation": "1682:10:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1677:15:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 18521,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1677:4:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18524,
                      "mutability": "mutable",
                      "name": "__paused",
                      "nameLocation": "1707:8:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1702:13:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 18523,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1702:4:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18526,
                      "mutability": "mutable",
                      "name": "__issued",
                      "nameLocation": "1730:8:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1725:13:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 18525,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1725:4:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18528,
                      "mutability": "mutable",
                      "name": "__cancelled",
                      "nameLocation": "1753:11:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1748:16:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 18527,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1748:4:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18531,
                      "mutability": "mutable",
                      "name": "__grossCouponRates",
                      "nameLocation": "1784:18:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1774:28:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 18529,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1774:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18530,
                        "nodeType": "ArrayTypeName",
                        "src": "1774:9:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18534,
                      "mutability": "mutable",
                      "name": "__couponDates",
                      "nameLocation": "1822:13:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1812:23:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 18532,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1812:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18533,
                        "nodeType": "ArrayTypeName",
                        "src": "1812:9:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18537,
                      "mutability": "mutable",
                      "name": "__netCouponRates",
                      "nameLocation": "1855:16:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1845:26:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 18535,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1845:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18536,
                        "nodeType": "ArrayTypeName",
                        "src": "1845:9:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18540,
                      "mutability": "mutable",
                      "name": "__capitalRepayment",
                      "nameLocation": "1891:18:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1881:28:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 18538,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1881:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18539,
                        "nodeType": "ArrayTypeName",
                        "src": "1881:9:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18543,
                      "mutability": "mutable",
                      "name": "__remainingCapital",
                      "nameLocation": "1929:18:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1919:28:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 18541,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1919:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18542,
                        "nodeType": "ArrayTypeName",
                        "src": "1919:9:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18547,
                      "mutability": "mutable",
                      "name": "__couponStatus",
                      "nameLocation": "1972:14:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1957:29:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_enum$_CouponStatus_$18448_$dyn_storage_ptr",
                        "typeString": "enum BondStorage.CouponStatus[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 18545,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 18544,
                            "name": "CouponStatus",
                            "nameLocations": [
                              "1957:12:58"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 18448,
                            "src": "1957:12:58"
                          },
                          "referencedDeclaration": 18448,
                          "src": "1957:12:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_CouponStatus_$18448",
                            "typeString": "enum BondStorage.CouponStatus"
                          }
                        },
                        "id": 18546,
                        "nodeType": "ArrayTypeName",
                        "src": "1957:14:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_enum$_CouponStatus_$18448_$dyn_storage_ptr",
                          "typeString": "enum BondStorage.CouponStatus[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18551,
                      "mutability": "mutable",
                      "name": "__isHolder",
                      "nameLocation": "2021:10:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "1996:35:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "typeName": {
                        "id": 18550,
                        "keyName": "",
                        "keyNameLocation": "-1:-1:-1",
                        "keyType": {
                          "id": 18548,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2004:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "1996:24:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        },
                        "valueName": "",
                        "valueNameLocation": "-1:-1:-1",
                        "valueType": {
                          "id": 18549,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2015:4:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18555,
                      "mutability": "mutable",
                      "name": "__reservedAmountByAddress",
                      "nameLocation": "2069:25:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "2041:53:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "typeName": {
                        "id": 18554,
                        "keyName": "",
                        "keyNameLocation": "-1:-1:-1",
                        "keyType": {
                          "id": 18552,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2049:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "2041:27:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        },
                        "valueName": "",
                        "valueNameLocation": "-1:-1:-1",
                        "valueType": {
                          "id": 18553,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2060:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18559,
                      "mutability": "mutable",
                      "name": "__reservedAmountByPurchaseId",
                      "nameLocation": "2131:28:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "2104:55:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$",
                        "typeString": "mapping(string => uint256)"
                      },
                      "typeName": {
                        "id": 18558,
                        "keyName": "",
                        "keyNameLocation": "-1:-1:-1",
                        "keyType": {
                          "id": 18556,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2112:6:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "2104:26:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$",
                          "typeString": "mapping(string => uint256)"
                        },
                        "valueName": "",
                        "valueNameLocation": "-1:-1:-1",
                        "valueType": {
                          "id": 18557,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2122:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18562,
                      "mutability": "mutable",
                      "name": "__periodicity",
                      "nameLocation": "2181:13:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "2169:25:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Periodicity_$18452",
                        "typeString": "enum BondStorage.Periodicity"
                      },
                      "typeName": {
                        "id": 18561,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 18560,
                          "name": "Periodicity",
                          "nameLocations": [
                            "2169:11:58"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 18452,
                          "src": "2169:11:58"
                        },
                        "referencedDeclaration": 18452,
                        "src": "2169:11:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Periodicity_$18452",
                          "typeString": "enum BondStorage.Periodicity"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18565,
                      "mutability": "mutable",
                      "name": "__formOfFinancing",
                      "nameLocation": "2220:17:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "2204:33:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_FormOfFinancing_$18455",
                        "typeString": "enum BondStorage.FormOfFinancing"
                      },
                      "typeName": {
                        "id": 18564,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 18563,
                          "name": "FormOfFinancing",
                          "nameLocations": [
                            "2204:15:58"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 18455,
                          "src": "2204:15:58"
                        },
                        "referencedDeclaration": 18455,
                        "src": "2204:15:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_FormOfFinancing_$18455",
                          "typeString": "enum BondStorage.FormOfFinancing"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18568,
                      "mutability": "mutable",
                      "name": "__methodOfRepayment",
                      "nameLocation": "2265:19:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "2247:37:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                        "typeString": "enum BondStorage.MethodOfRepayment"
                      },
                      "typeName": {
                        "id": 18567,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 18566,
                          "name": "MethodOfRepayment",
                          "nameLocations": [
                            "2247:17:58"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 18462,
                          "src": "2247:17:58"
                        },
                        "referencedDeclaration": 18462,
                        "src": "2247:17:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_MethodOfRepayment_$18462",
                          "typeString": "enum BondStorage.MethodOfRepayment"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18571,
                      "mutability": "mutable",
                      "name": "__status",
                      "nameLocation": "2305:8:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "2294:19:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_BondStatus_$18445",
                        "typeString": "enum BondStorage.BondStatus"
                      },
                      "typeName": {
                        "id": 18570,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 18569,
                          "name": "BondStatus",
                          "nameLocations": [
                            "2294:10:58"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 18445,
                          "src": "2294:10:58"
                        },
                        "referencedDeclaration": 18445,
                        "src": "2294:10:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BondStatus_$18445",
                          "typeString": "enum BondStorage.BondStatus"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18573,
                      "mutability": "mutable",
                      "name": "__currencyAddress",
                      "nameLocation": "2331:17:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "2323:25:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 18572,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2323:7:58",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18575,
                      "mutability": "mutable",
                      "name": "__issuer",
                      "nameLocation": "2366:8:58",
                      "nodeType": "VariableDeclaration",
                      "scope": 18576,
                      "src": "2358:16:58",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 18574,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2358:7:58",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "BondParams",
                  "nameLocation": "678:10:58",
                  "nodeType": "StructDefinition",
                  "scope": 18600,
                  "src": "671:1710:58",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18598,
                    "nodeType": "Block",
                    "src": "2468:160:58",
                    "statements": [
                      {
                        "assignments": [
                          18585
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18585,
                            "mutability": "mutable",
                            "name": "bsSlot",
                            "nameLocation": "2486:6:58",
                            "nodeType": "VariableDeclaration",
                            "scope": 18598,
                            "src": "2478:14:58",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 18584,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2478:7:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18596,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "73746f726167652e626f6e64",
                                  "id": 18589,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2522:14:58",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_d9801f9e6bbac11dd3a3828fc920bd32b9a3c3d0cc008db711bebc1781a5c713",
                                    "typeString": "literal_string \"storage.bond\""
                                  },
                                  "value": "storage.bond"
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 18592,
                                      "name": "slot",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18578,
                                      "src": "2555:4:58",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 18590,
                                      "name": "Strings",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3026,
                                      "src": "2538:7:58",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Strings_$3026_$",
                                        "typeString": "type(library Strings)"
                                      }
                                    },
                                    "id": 18591,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2546:8:58",
                                    "memberName": "toString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1738,
                                    "src": "2538:16:58",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 18593,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2538:22:58",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_d9801f9e6bbac11dd3a3828fc920bd32b9a3c3d0cc008db711bebc1781a5c713",
                                    "typeString": "literal_string \"storage.bond\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 18587,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2505:3:58",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 18588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "2509:12:58",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "2505:16:58",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 18594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2505:56:58",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 18586,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2495:9:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 18595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2495:67:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2478:84:58"
                      },
                      {
                        "AST": {
                          "nativeSrc": "2581:41:58",
                          "nodeType": "YulBlock",
                          "src": "2581:41:58",
                          "statements": [
                            {
                              "nativeSrc": "2595:17:58",
                              "nodeType": "YulAssignment",
                              "src": "2595:17:58",
                              "value": {
                                "name": "bsSlot",
                                "nativeSrc": "2606:6:58",
                                "nodeType": "YulIdentifier",
                                "src": "2606:6:58"
                              },
                              "variableNames": [
                                {
                                  "name": "bs.slot",
                                  "nativeSrc": "2595:7:58",
                                  "nodeType": "YulIdentifier",
                                  "src": "2595:7:58"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 18582,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "2595:7:58",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 18585,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2606:6:58",
                            "valueSize": 1
                          }
                        ],
                        "id": 18597,
                        "nodeType": "InlineAssembly",
                        "src": "2572:50:58"
                      }
                    ]
                  },
                  "id": 18599,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "bondStorage",
                  "nameLocation": "2396:11:58",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18579,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18578,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "2416:4:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 18599,
                        "src": "2408:12:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18577,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2408:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2407:14:58"
                  },
                  "returnParameters": {
                    "id": 18583,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18582,
                        "mutability": "mutable",
                        "name": "bs",
                        "nameLocation": "2464:2:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 18599,
                        "src": "2445:21:58",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                          "typeString": "struct BondStorage.BondParams"
                        },
                        "typeName": {
                          "id": 18581,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 18580,
                            "name": "BondParams",
                            "nameLocations": [
                              "2445:10:58"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 18576,
                            "src": "2445:10:58"
                          },
                          "referencedDeclaration": 18576,
                          "src": "2445:10:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2444:23:58"
                  },
                  "scope": 18600,
                  "src": "2387:241:58",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 18601,
              "src": "136:2494:58",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "40:2591:58"
        },
        "id": 58
      },
      "contracts/facets/ContextFacet.sol": {
        "ast": {
          "absolutePath": "contracts/facets/ContextFacet.sol",
          "exportedSymbols": {
            "ContextFacet": [
              18621
            ]
          },
          "id": 18622,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 18602,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:59"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ContextFacet",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 18621,
              "linearizedBaseContracts": [
                18621
              ],
              "name": "ContextFacet",
              "nameLocation": "75:12:59",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 18610,
                    "nodeType": "Block",
                    "src": "148:34:59",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 18607,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "165:3:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 18608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "169:6:59",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "165:10:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 18606,
                        "id": 18609,
                        "nodeType": "Return",
                        "src": "158:17:59"
                      }
                    ]
                  },
                  "id": 18611,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nameLocation": "103:10:59",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18603,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "113:2:59"
                  },
                  "returnParameters": {
                    "id": 18606,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18605,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18611,
                        "src": "139:7:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18604,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "139:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "138:9:59"
                  },
                  "scope": 18621,
                  "src": "94:88:59",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18619,
                    "nodeType": "Block",
                    "src": "298:32:59",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 18616,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "315:3:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 18617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "319:4:59",
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "315:8:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 18615,
                        "id": 18618,
                        "nodeType": "Return",
                        "src": "308:15:59"
                      }
                    ]
                  },
                  "id": 18620,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nameLocation": "248:8:59",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18612,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "256:2:59"
                  },
                  "returnParameters": {
                    "id": 18615,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18614,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18620,
                        "src": "282:14:59",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 18613,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "282:5:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "281:16:59"
                  },
                  "scope": 18621,
                  "src": "239:91:59",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 18622,
              "src": "66:266:59",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "40:293:59"
        },
        "id": 59
      },
      "contracts/facets/CouponFacet.sol": {
        "ast": {
          "absolutePath": "contracts/facets/CouponFacet.sol",
          "exportedSymbols": {
            "BondStorage": [
              18600
            ],
            "Casting": [
              14175
            ],
            "CastingErrors": [
              12281
            ],
            "Common": [
              13419
            ],
            "ContextFacet": [
              18621
            ],
            "CouponFacet": [
              18960
            ],
            "E": [
              12689
            ],
            "ERC1155Facet": [
              20310
            ],
            "ERC20": [
              968
            ],
            "EXP2_MAX_INPUT": [
              12713
            ],
            "EXP_MAX_INPUT": [
              12700
            ],
            "Errors": [
              13420
            ],
            "HALF_UNIT": [
              12724
            ],
            "Helpers": [
              14176
            ],
            "LOG2_10": [
              12735
            ],
            "LOG2_E": [
              12746
            ],
            "MAX_UD60x18": [
              12757
            ],
            "MAX_UINT128": [
              6628
            ],
            "MAX_UINT40": [
              6636
            ],
            "MAX_WHOLE_UD60x18": [
              12768
            ],
            "Math": [
              14177
            ],
            "OwnershipFacet": [
              20472
            ],
            "PI": [
              12776
            ],
            "PRBMath_UD60x18_Ceil_Overflow": [
              12875
            ],
            "PRBMath_UD60x18_Convert_Overflow": [
              12880
            ],
            "PRBMath_UD60x18_Exp2_InputTooBig": [
              12892
            ],
            "PRBMath_UD60x18_Exp_InputTooBig": [
              12886
            ],
            "PRBMath_UD60x18_Gm_Overflow": [
              12901
            ],
            "PRBMath_UD60x18_IntoSD1x18_Overflow": [
              12907
            ],
            "PRBMath_UD60x18_IntoSD21x18_Overflow": [
              12913
            ],
            "PRBMath_UD60x18_IntoSD59x18_Overflow": [
              12919
            ],
            "PRBMath_UD60x18_IntoUD21x18_Overflow": [
              12931
            ],
            "PRBMath_UD60x18_IntoUD2x18_Overflow": [
              12925
            ],
            "PRBMath_UD60x18_IntoUint128_Overflow": [
              12937
            ],
            "PRBMath_UD60x18_IntoUint40_Overflow": [
              12943
            ],
            "PRBMath_UD60x18_Log_InputTooSmall": [
              12949
            ],
            "PRBMath_UD60x18_Sqrt_Overflow": [
              12955
            ],
            "SD1x18": [
              8686
            ],
            "SD21x18": [
              9041
            ],
            "SD59x18": [
              11699
            ],
            "UD21x18": [
              12015
            ],
            "UD2x18": [
              12269
            ],
            "UD60x18": [
              14179
            ],
            "UNIT": [
              12787
            ],
            "UNIT_SQUARED": [
              12798
            ],
            "ZERO": [
              12806
            ],
            "add": [
              12987
            ],
            "and": [
              13010
            ],
            "and2": [
              13036
            ],
            "avg": [
              13480
            ],
            "ceil": [
              13509
            ],
            "convert": [
              12834,
              12865
            ],
            "div": [
              13538
            ],
            "eq": [
              13059
            ],
            "exp": [
              13583
            ],
            "exp2": [
              13629
            ],
            "floor": [
              13641
            ],
            "frac": [
              13653
            ],
            "gm": [
              13720
            ],
            "gt": [
              13082
            ],
            "gte": [
              13105
            ],
            "intoSD1x18": [
              12354
            ],
            "intoSD21x18": [
              12402
            ],
            "intoSD59x18": [
              12522
            ],
            "intoUD21x18": [
              12480
            ],
            "intoUD2x18": [
              12441
            ],
            "intoUint128": [
              12574
            ],
            "intoUint256": [
              12539
            ],
            "intoUint40": [
              12609
            ],
            "inv": [
              13742
            ],
            "isZero": [
              13123
            ],
            "ln": [
              13768
            ],
            "log10": [
              13819
            ],
            "log2": [
              13923
            ],
            "lshift": [
              13146
            ],
            "lt": [
              13169
            ],
            "lte": [
              13192
            ],
            "mod": [
              13218
            ],
            "mul": [
              13951
            ],
            "neq": [
              13241
            ],
            "not": [
              13261
            ],
            "or": [
              13287
            ],
            "pow": [
              14058
            ],
            "powu": [
              14130
            ],
            "rshift": [
              13310
            ],
            "sqrt": [
              14172
            ],
            "sub": [
              13336
            ],
            "uEXP2_MAX_INPUT": [
              12706
            ],
            "uEXP_MAX_INPUT": [
              12693
            ],
            "uHALF_UNIT": [
              12717
            ],
            "uLOG2_10": [
              12728
            ],
            "uLOG2_E": [
              12739
            ],
            "uMAX_SD1x18": [
              8609
            ],
            "uMAX_SD21x18": [
              8964
            ],
            "uMAX_SD59x18": [
              9662
            ],
            "uMAX_UD21x18": [
              11974
            ],
            "uMAX_UD2x18": [
              12228
            ],
            "uMAX_UD60x18": [
              12750
            ],
            "uMAX_WHOLE_UD60x18": [
              12761
            ],
            "uUNIT": [
              12780
            ],
            "uUNIT_SQUARED": [
              12791
            ],
            "ud": [
              12626
            ],
            "ud60x18": [
              12643
            ],
            "uncheckedAdd": [
              13363
            ],
            "uncheckedSub": [
              13390
            ],
            "unwrap": [
              12660
            ],
            "wrap": [
              12677
            ],
            "xor": [
              13416
            ]
          },
          "id": 18961,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 18623,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:60"
            },
            {
              "absolutePath": "contracts/facets/ERC1155Facet.sol",
              "file": "./ERC1155Facet.sol",
              "id": 18625,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18961,
              "sourceUnit": 20311,
              "src": "66:50:60",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18624,
                    "name": "ERC1155Facet",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20310,
                    "src": "75:12:60",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@prb/math/src/UD60x18.sol",
              "file": "@prb/math/src/UD60x18.sol",
              "id": 18626,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18961,
              "sourceUnit": 8338,
              "src": "117:35:60",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/facets/BondStorage.sol",
              "file": "./BondStorage.sol",
              "id": 18628,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18961,
              "sourceUnit": 18601,
              "src": "153:48:60",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18627,
                    "name": "BondStorage",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18600,
                    "src": "162:11:60",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/facets/OwnershipFacet.sol",
              "file": "./OwnershipFacet.sol",
              "id": 18630,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18961,
              "sourceUnit": 20473,
              "src": "202:54:60",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18629,
                    "name": "OwnershipFacet",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20472,
                    "src": "211:14:60",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
              "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
              "id": 18632,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18961,
              "sourceUnit": 969,
              "src": "257:70:60",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18631,
                    "name": "ERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 968,
                    "src": "266:5:60",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/facets/ContextFacet.sol",
              "file": "./ContextFacet.sol",
              "id": 18634,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18961,
              "sourceUnit": 18622,
              "src": "328:50:60",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18633,
                    "name": "ContextFacet",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18621,
                    "src": "337:12:60",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 18635,
                    "name": "BondStorage",
                    "nameLocations": [
                      "404:11:60"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 18600,
                    "src": "404:11:60"
                  },
                  "id": 18636,
                  "nodeType": "InheritanceSpecifier",
                  "src": "404:11:60"
                },
                {
                  "baseName": {
                    "id": 18637,
                    "name": "OwnershipFacet",
                    "nameLocations": [
                      "417:14:60"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 20472,
                    "src": "417:14:60"
                  },
                  "id": 18638,
                  "nodeType": "InheritanceSpecifier",
                  "src": "417:14:60"
                },
                {
                  "baseName": {
                    "id": 18639,
                    "name": "ContextFacet",
                    "nameLocations": [
                      "433:12:60"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 18621,
                    "src": "433:12:60"
                  },
                  "id": 18640,
                  "nodeType": "InheritanceSpecifier",
                  "src": "433:12:60"
                }
              ],
              "canonicalName": "CouponFacet",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 18960,
              "linearizedBaseContracts": [
                18960,
                18621,
                20472,
                18600
              ],
              "name": "CouponFacet",
              "nameLocation": "389:11:60",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "6b427e348fe584275fb02de76d900738365c7d93affd48fb998ebf4fb54787eb",
                  "id": 18646,
                  "name": "CouponStatusChanged",
                  "nameLocation": "458:19:60",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 18645,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18642,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "bondId",
                        "nameLocation": "486:6:60",
                        "nodeType": "VariableDeclaration",
                        "scope": 18646,
                        "src": "478:14:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18641,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "478:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18644,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lineNumber",
                        "nameLocation": "502:10:60",
                        "nodeType": "VariableDeclaration",
                        "scope": 18646,
                        "src": "494:18:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18643,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "494:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "477:36:60"
                  },
                  "src": "452:62:60"
                },
                {
                  "errorSelector": "13e45dd7",
                  "id": 18648,
                  "name": "NotAllClaimsReceivedForNextPayment",
                  "nameLocation": "526:34:60",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 18647,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "560:2:60"
                  },
                  "src": "520:43:60"
                },
                {
                  "body": {
                    "id": 18752,
                    "nodeType": "Block",
                    "src": "683:902:60",
                    "statements": [
                      {
                        "assignments": [
                          18659
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18659,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "712:12:60",
                            "nodeType": "VariableDeclaration",
                            "scope": 18752,
                            "src": "693:31:60",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 18658,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 18657,
                                "name": "BondParams",
                                "nameLocations": [
                                  "693:10:60"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "693:10:60"
                              },
                              "referencedDeclaration": 18576,
                              "src": "693:10:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18663,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18661,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18650,
                              "src": "739:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18660,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "727:11:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 18662,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "727:20:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "693:54:60"
                      },
                      {
                        "assignments": [
                          18665
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18665,
                            "mutability": "mutable",
                            "name": "userBalance",
                            "nameLocation": "765:11:60",
                            "nodeType": "VariableDeclaration",
                            "scope": 18752,
                            "src": "757:19:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18664,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "757:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18676,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18673,
                              "name": "_buyer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18652,
                              "src": "817:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18674,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18650,
                              "src": "825:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 18669,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "800:4:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_CouponFacet_$18960",
                                        "typeString": "contract CouponFacet"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_CouponFacet_$18960",
                                        "typeString": "contract CouponFacet"
                                      }
                                    ],
                                    "id": 18668,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "792:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 18667,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "792:7:60",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 18670,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "792:13:60",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 18666,
                                "name": "ERC1155Facet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20310,
                                "src": "779:12:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC1155Facet_$20310_$",
                                  "typeString": "type(contract ERC1155Facet)"
                                }
                              },
                              "id": 18671,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "779:27:60",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC1155Facet_$20310",
                                "typeString": "contract ERC1155Facet"
                              }
                            },
                            "id": 18672,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "807:9:60",
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 19556,
                            "src": "779:37:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256) view external returns (uint256)"
                            }
                          },
                          "id": 18675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "779:54:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "757:76:60"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18680,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 18678,
                                "name": "userBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18665,
                                "src": "851:11:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 18679,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "866:1:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "851:16:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 18677,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "843:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 18681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "843:25:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18682,
                        "nodeType": "ExpressionStatement",
                        "src": "843:25:60"
                      },
                      {
                        "assignments": [
                          18684
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18684,
                            "mutability": "mutable",
                            "name": "interestAmount",
                            "nameLocation": "886:14:60",
                            "nodeType": "VariableDeclaration",
                            "scope": 18752,
                            "src": "878:22:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18683,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "878:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18699,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 18688,
                                      "name": "userBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18665,
                                      "src": "935:11:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 18687,
                                    "name": "ud60x18",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12643,
                                    "src": "927:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (uint256) pure returns (UD60x18)"
                                    }
                                  },
                                  "id": 18689,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "927:20:60",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "expression": {
                                          "id": 18691,
                                          "name": "_bondDetails",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18659,
                                          "src": "957:12:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                          }
                                        },
                                        "id": 18692,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "970:16:60",
                                        "memberName": "__netCouponRates",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18537,
                                        "src": "957:29:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                          "typeString": "uint256[] storage ref"
                                        }
                                      },
                                      "id": 18695,
                                      "indexExpression": {
                                        "expression": {
                                          "id": 18693,
                                          "name": "_bondDetails",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18659,
                                          "src": "987:12:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                          }
                                        },
                                        "id": 18694,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "1000:13:60",
                                        "memberName": "__currentLine",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18512,
                                        "src": "987:26:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "957:57:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 18690,
                                    "name": "ud60x18",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12643,
                                    "src": "949:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (uint256) pure returns (UD60x18)"
                                    }
                                  },
                                  "id": 18696,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "949:66:60",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  },
                                  {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                ],
                                "id": 18686,
                                "name": "mul",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13951,
                                "src": "923:3:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                }
                              },
                              "id": 18697,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "923:93:60",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            ],
                            "id": 18685,
                            "name": "convert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              12834,
                              12865
                            ],
                            "referencedDeclaration": 12834,
                            "src": "915:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 18698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "915:102:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "878:139:60"
                      },
                      {
                        "assignments": [
                          18701
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18701,
                            "mutability": "mutable",
                            "name": "capitalAmount",
                            "nameLocation": "1035:13:60",
                            "nodeType": "VariableDeclaration",
                            "scope": 18752,
                            "src": "1027:21:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18700,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1027:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18716,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 18705,
                                      "name": "userBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18665,
                                      "src": "1083:11:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 18704,
                                    "name": "ud60x18",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12643,
                                    "src": "1075:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (uint256) pure returns (UD60x18)"
                                    }
                                  },
                                  "id": 18706,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1075:20:60",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "expression": {
                                          "id": 18708,
                                          "name": "_bondDetails",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18659,
                                          "src": "1105:12:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                          }
                                        },
                                        "id": 18709,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "1118:18:60",
                                        "memberName": "__capitalRepayment",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18540,
                                        "src": "1105:31:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                          "typeString": "uint256[] storage ref"
                                        }
                                      },
                                      "id": 18712,
                                      "indexExpression": {
                                        "expression": {
                                          "id": 18710,
                                          "name": "_bondDetails",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18659,
                                          "src": "1137:12:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                          }
                                        },
                                        "id": 18711,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "1150:13:60",
                                        "memberName": "__currentLine",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18512,
                                        "src": "1137:26:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1105:59:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 18707,
                                    "name": "ud60x18",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12643,
                                    "src": "1097:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (uint256) pure returns (UD60x18)"
                                    }
                                  },
                                  "id": 18713,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1097:68:60",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  },
                                  {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                ],
                                "id": 18703,
                                "name": "mul",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13951,
                                "src": "1071:3:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                }
                              },
                              "id": 18714,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1071:95:60",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            ],
                            "id": 18702,
                            "name": "convert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              12834,
                              12865
                            ],
                            "referencedDeclaration": 12834,
                            "src": "1063:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 18715,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1063:104:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1027:140:60"
                      },
                      {
                        "expression": {
                          "id": 18721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 18717,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18659,
                              "src": "1177:12:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 18719,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "1190:20:60",
                            "memberName": "__nextInterestAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18514,
                            "src": "1177:33:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 18720,
                            "name": "userBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18665,
                            "src": "1214:11:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1177:48:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18722,
                        "nodeType": "ExpressionStatement",
                        "src": "1177:48:60"
                      },
                      {
                        "expression": {
                          "id": 18727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 18723,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18659,
                              "src": "1235:12:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 18725,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "1248:19:60",
                            "memberName": "__nextCapitalAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18516,
                            "src": "1235:32:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 18726,
                            "name": "userBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18665,
                            "src": "1271:11:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1235:47:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18728,
                        "nodeType": "ExpressionStatement",
                        "src": "1235:47:60"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 18739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18733,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 18729,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18659,
                                "src": "1310:12:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 18730,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1323:19:60",
                              "memberName": "__nextCapitalAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18516,
                              "src": "1310:32:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 18731,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18659,
                                "src": "1346:12:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 18732,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1359:14:60",
                              "memberName": "__issuedAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18510,
                              "src": "1346:27:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1310:63:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18738,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 18734,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18659,
                                "src": "1393:12:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 18735,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1406:20:60",
                              "memberName": "__nextInterestAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18514,
                              "src": "1393:33:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 18736,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18659,
                                "src": "1430:12:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 18737,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1443:14:60",
                              "memberName": "__issuedAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18510,
                              "src": "1430:27:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1393:64:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1310:147:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18747,
                        "nodeType": "IfStatement",
                        "src": "1293:239:60",
                        "trueBody": {
                          "id": 18746,
                          "nodeType": "Block",
                          "src": "1468:64:60",
                          "statements": [
                            {
                              "expression": {
                                "id": 18744,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 18740,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18659,
                                    "src": "1482:12:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 18742,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "1495:19:60",
                                  "memberName": "__allClaimsReceived",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18518,
                                  "src": "1482:32:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "74727565",
                                  "id": 18743,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1517:4:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "1482:39:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 18745,
                              "nodeType": "ExpressionStatement",
                              "src": "1482:39:60"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 18748,
                            "name": "interestAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18684,
                            "src": "1548:14:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 18749,
                            "name": "capitalAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18701,
                            "src": "1565:13:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1548:30:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 18656,
                        "id": 18751,
                        "nodeType": "Return",
                        "src": "1541:37:60"
                      }
                    ]
                  },
                  "functionSelector": "f9765634",
                  "id": 18753,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimCoupon",
                  "nameLocation": "611:11:60",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18653,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18650,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "631:7:60",
                        "nodeType": "VariableDeclaration",
                        "scope": 18753,
                        "src": "623:15:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18649,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "623:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18652,
                        "mutability": "mutable",
                        "name": "_buyer",
                        "nameLocation": "648:6:60",
                        "nodeType": "VariableDeclaration",
                        "scope": 18753,
                        "src": "640:14:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18651,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "640:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "622:33:60"
                  },
                  "returnParameters": {
                    "id": 18656,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18655,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18753,
                        "src": "674:7:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18654,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "674:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "673:9:60"
                  },
                  "scope": 18960,
                  "src": "602:983:60",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 18922,
                    "nodeType": "Block",
                    "src": "1701:1686:60",
                    "statements": [
                      {
                        "assignments": [
                          18762
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18762,
                            "mutability": "mutable",
                            "name": "_bondDetails",
                            "nameLocation": "1730:12:60",
                            "nodeType": "VariableDeclaration",
                            "scope": 18922,
                            "src": "1711:31:60",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                              "typeString": "struct BondStorage.BondParams"
                            },
                            "typeName": {
                              "id": 18761,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 18760,
                                "name": "BondParams",
                                "nameLocations": [
                                  "1711:10:60"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 18576,
                                "src": "1711:10:60"
                              },
                              "referencedDeclaration": 18576,
                              "src": "1711:10:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18766,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18764,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18755,
                              "src": "1757:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18763,
                            "name": "bondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18599,
                            "src": "1745:11:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_BondParams_$18576_storage_ptr_$",
                              "typeString": "function (uint256) pure returns (struct BondStorage.BondParams storage pointer)"
                            }
                          },
                          "id": 18765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1745:20:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                            "typeString": "struct BondStorage.BondParams storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1711:54:60"
                      },
                      {
                        "condition": {
                          "id": 18769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "1779:33:60",
                          "subExpression": {
                            "expression": {
                              "id": 18767,
                              "name": "_bondDetails",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18762,
                              "src": "1780:12:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                "typeString": "struct BondStorage.BondParams storage pointer"
                              }
                            },
                            "id": 18768,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1793:19:60",
                            "memberName": "__allClaimsReceived",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18518,
                            "src": "1780:32:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18774,
                        "nodeType": "IfStatement",
                        "src": "1775:107:60",
                        "trueBody": {
                          "id": 18773,
                          "nodeType": "Block",
                          "src": "1814:68:60",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 18770,
                                  "name": "NotAllClaimsReceivedForNextPayment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18648,
                                  "src": "1835:34:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 18771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1835:36:60",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 18772,
                              "nodeType": "RevertStatement",
                              "src": "1828:43:60"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          18776
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18776,
                            "mutability": "mutable",
                            "name": "userBalance",
                            "nameLocation": "1900:11:60",
                            "nodeType": "VariableDeclaration",
                            "scope": 18922,
                            "src": "1892:19:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18775,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1892:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18787,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18784,
                              "name": "_buyer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18757,
                              "src": "1952:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18785,
                              "name": "_bondId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18755,
                              "src": "1960:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 18780,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "1935:4:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_CouponFacet_$18960",
                                        "typeString": "contract CouponFacet"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_CouponFacet_$18960",
                                        "typeString": "contract CouponFacet"
                                      }
                                    ],
                                    "id": 18779,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1927:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 18778,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1927:7:60",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 18781,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1927:13:60",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 18777,
                                "name": "ERC1155Facet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20310,
                                "src": "1914:12:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC1155Facet_$20310_$",
                                  "typeString": "type(contract ERC1155Facet)"
                                }
                              },
                              "id": 18782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1914:27:60",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC1155Facet_$20310",
                                "typeString": "contract ERC1155Facet"
                              }
                            },
                            "id": 18783,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1942:9:60",
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 19556,
                            "src": "1914:37:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256) view external returns (uint256)"
                            }
                          },
                          "id": 18786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1914:54:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1892:76:60"
                      },
                      {
                        "assignments": [
                          18789
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18789,
                            "mutability": "mutable",
                            "name": "interestAmount",
                            "nameLocation": "1986:14:60",
                            "nodeType": "VariableDeclaration",
                            "scope": 18922,
                            "src": "1978:22:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18788,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1978:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18804,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 18793,
                                      "name": "userBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18776,
                                      "src": "2035:11:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 18792,
                                    "name": "ud60x18",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12643,
                                    "src": "2027:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (uint256) pure returns (UD60x18)"
                                    }
                                  },
                                  "id": 18794,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2027:20:60",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "expression": {
                                          "id": 18796,
                                          "name": "_bondDetails",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18762,
                                          "src": "2057:12:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                          }
                                        },
                                        "id": 18797,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "2070:16:60",
                                        "memberName": "__netCouponRates",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18537,
                                        "src": "2057:29:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                          "typeString": "uint256[] storage ref"
                                        }
                                      },
                                      "id": 18800,
                                      "indexExpression": {
                                        "expression": {
                                          "id": 18798,
                                          "name": "_bondDetails",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18762,
                                          "src": "2087:12:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                            "typeString": "struct BondStorage.BondParams storage pointer"
                                          }
                                        },
                                        "id": 18799,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "2100:13:60",
                                        "memberName": "__currentLine",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18512,
                                        "src": "2087:26:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2057:57:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 18795,
                                    "name": "ud60x18",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12643,
                                    "src": "2049:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                      "typeString": "function (uint256) pure returns (UD60x18)"
                                    }
                                  },
                                  "id": 18801,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2049:66:60",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  },
                                  {
                                    "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                    "typeString": "UD60x18"
                                  }
                                ],
                                "id": 18791,
                                "name": "mul",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13951,
                                "src": "2023:3:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_userDefinedValueType$_UD60x18_$14179_$",
                                  "typeString": "function (UD60x18,UD60x18) pure returns (UD60x18)"
                                }
                              },
                              "id": 18802,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2023:93:60",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_userDefinedValueType$_UD60x18_$14179",
                                "typeString": "UD60x18"
                              }
                            ],
                            "id": 18790,
                            "name": "convert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              12834,
                              12865
                            ],
                            "referencedDeclaration": 12834,
                            "src": "2015:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UD60x18_$14179_$returns$_t_uint256_$",
                              "typeString": "function (UD60x18) pure returns (uint256)"
                            }
                          },
                          "id": 18803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2015:102:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1978:139:60"
                      },
                      {
                        "assignments": [
                          18806
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18806,
                            "mutability": "mutable",
                            "name": "tokenAmount",
                            "nameLocation": "2135:11:60",
                            "nodeType": "VariableDeclaration",
                            "scope": 18922,
                            "src": "2127:19:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18805,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2127:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18813,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18810,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 18807,
                              "name": "userBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18776,
                              "src": "2149:11:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "expression": {
                                "id": 18808,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18762,
                                "src": "2163:12:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 18809,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2176:9:60",
                              "memberName": "__coupure",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18474,
                              "src": "2163:22:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2149:36:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 18811,
                            "name": "interestAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18789,
                            "src": "2188:14:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2149:53:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2127:75:60"
                      },
                      {
                        "assignments": [
                          18815
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18815,
                            "mutability": "mutable",
                            "name": "currentAllowance",
                            "nameLocation": "2220:16:60",
                            "nodeType": "VariableDeclaration",
                            "scope": 18922,
                            "src": "2212:24:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18814,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2212:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18828,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 18821,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18762,
                                "src": "2287:12:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 18822,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2300:8:60",
                              "memberName": "__issuer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18575,
                              "src": "2287:21:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 18825,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "2318:4:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_CouponFacet_$18960",
                                    "typeString": "contract CouponFacet"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_CouponFacet_$18960",
                                    "typeString": "contract CouponFacet"
                                  }
                                ],
                                "id": 18824,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2310:7:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 18823,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2310:7:60",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 18826,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2310:13:60",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 18817,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18762,
                                    "src": "2245:12:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 18818,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2258:17:60",
                                  "memberName": "__currencyAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18573,
                                  "src": "2245:30:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 18816,
                                "name": "ERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 968,
                                "src": "2239:5:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC20_$968_$",
                                  "typeString": "type(contract ERC20)"
                                }
                              },
                              "id": 18819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2239:37:60",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC20_$968",
                                "typeString": "contract ERC20"
                              }
                            },
                            "id": 18820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2277:9:60",
                            "memberName": "allowance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 595,
                            "src": "2239:47:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256)"
                            }
                          },
                          "id": 18827,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2239:85:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2212:112:60"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 18830,
                                "name": "currentAllowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18815,
                                "src": "2342:16:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 18831,
                                "name": "tokenAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18806,
                                "src": "2362:11:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2342:31:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365",
                              "id": 18833,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2375:42:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                              },
                              "value": "ERC20: transfer amount exceeds allowance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                              }
                            ],
                            "id": 18829,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2334:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2334:84:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18835,
                        "nodeType": "ExpressionStatement",
                        "src": "2334:84:60"
                      },
                      {
                        "assignments": [
                          18837
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18837,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "2474:7:60",
                            "nodeType": "VariableDeclaration",
                            "scope": 18922,
                            "src": "2469:12:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 18836,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2469:4:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18848,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 18843,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18762,
                                "src": "2535:12:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 18844,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2548:8:60",
                              "memberName": "__issuer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18575,
                              "src": "2535:21:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18845,
                              "name": "_buyer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18757,
                              "src": "2558:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18846,
                              "name": "tokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18806,
                              "src": "2566:11:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 18839,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18762,
                                    "src": "2490:12:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 18840,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2503:17:60",
                                  "memberName": "__currencyAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18573,
                                  "src": "2490:30:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 18838,
                                "name": "ERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 968,
                                "src": "2484:5:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC20_$968_$",
                                  "typeString": "type(contract ERC20)"
                                }
                              },
                              "id": 18841,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2484:37:60",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC20_$968",
                                "typeString": "contract ERC20"
                              }
                            },
                            "id": 18842,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2522:12:60",
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 651,
                            "src": "2484:50:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 18847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2484:94:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2469:109:60"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18850,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18837,
                              "src": "2596:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207472616e73666572206661696c6564",
                              "id": 18851,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2605:24:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e9e9693c2bc26b1051a7ba6e31aee02497d72fe8ae485c09f94eac4f81385e82",
                                "typeString": "literal_string \"ERC20: transfer failed\""
                              },
                              "value": "ERC20: transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e9e9693c2bc26b1051a7ba6e31aee02497d72fe8ae485c09f94eac4f81385e82",
                                "typeString": "literal_string \"ERC20: transfer failed\""
                              }
                            ],
                            "id": 18849,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2588:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18852,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2588:42:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18853,
                        "nodeType": "ExpressionStatement",
                        "src": "2588:42:60"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18858,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 18855,
                                  "name": "_bondDetails",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18762,
                                  "src": "2648:12:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                  }
                                },
                                "id": 18856,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2661:20:60",
                                "memberName": "__nextInterestAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18514,
                                "src": "2648:33:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 18857,
                                "name": "userBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18776,
                                "src": "2685:11:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2648:48:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "556e646572666c6f7720646574656374656420696e206e65787420696e74657265737420616d6f756e74",
                              "id": 18859,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2698:44:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_878d32f97bdec09302c760e7f575ef871e1da6b028342fec0b7d22712890672b",
                                "typeString": "literal_string \"Underflow detected in next interest amount\""
                              },
                              "value": "Underflow detected in next interest amount"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_878d32f97bdec09302c760e7f575ef871e1da6b028342fec0b7d22712890672b",
                                "typeString": "literal_string \"Underflow detected in next interest amount\""
                              }
                            ],
                            "id": 18854,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2640:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18860,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2640:103:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18861,
                        "nodeType": "ExpressionStatement",
                        "src": "2640:103:60"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 18863,
                                  "name": "_bondDetails",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18762,
                                  "src": "2762:12:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                  }
                                },
                                "id": 18864,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2775:19:60",
                                "memberName": "__nextCapitalAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18516,
                                "src": "2762:32:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 18865,
                                "name": "userBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18776,
                                "src": "2798:11:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2762:47:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "556e646572666c6f7720646574656374656420696e206e657874206361706974616c20616d6f756e74",
                              "id": 18867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2811:43:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5c2f8c3b92f79f444c219a4c22b7540a1dacdfd131fb047e1fe40e718915373f",
                                "typeString": "literal_string \"Underflow detected in next capital amount\""
                              },
                              "value": "Underflow detected in next capital amount"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5c2f8c3b92f79f444c219a4c22b7540a1dacdfd131fb047e1fe40e718915373f",
                                "typeString": "literal_string \"Underflow detected in next capital amount\""
                              }
                            ],
                            "id": 18862,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2754:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2754:101:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18869,
                        "nodeType": "ExpressionStatement",
                        "src": "2754:101:60"
                      },
                      {
                        "id": 18882,
                        "nodeType": "UncheckedBlock",
                        "src": "2865:144:60",
                        "statements": [
                          {
                            "expression": {
                              "id": 18874,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "id": 18870,
                                  "name": "_bondDetails",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18762,
                                  "src": "2889:12:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                  }
                                },
                                "id": 18872,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberLocation": "2902:19:60",
                                "memberName": "__nextCapitalAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18516,
                                "src": "2889:32:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "id": 18873,
                                "name": "userBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18776,
                                "src": "2925:11:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2889:47:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 18875,
                            "nodeType": "ExpressionStatement",
                            "src": "2889:47:60"
                          },
                          {
                            "expression": {
                              "id": 18880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "id": 18876,
                                  "name": "_bondDetails",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18762,
                                  "src": "2950:12:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                    "typeString": "struct BondStorage.BondParams storage pointer"
                                  }
                                },
                                "id": 18878,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberLocation": "2963:20:60",
                                "memberName": "__nextInterestAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18514,
                                "src": "2950:33:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "id": 18879,
                                "name": "userBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18776,
                                "src": "2987:11:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2950:48:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 18881,
                            "nodeType": "ExpressionStatement",
                            "src": "2950:48:60"
                          }
                        ]
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 18891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18886,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 18883,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18762,
                                "src": "3022:12:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 18884,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3035:20:60",
                              "memberName": "__nextInterestAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18514,
                              "src": "3022:33:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 18885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3059:1:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3022:38:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18890,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 18887,
                                "name": "_bondDetails",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18762,
                                "src": "3064:12:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                  "typeString": "struct BondStorage.BondParams storage pointer"
                                }
                              },
                              "id": 18888,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3077:19:60",
                              "memberName": "__nextCapitalAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18516,
                              "src": "3064:32:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 18889,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3100:1:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3064:37:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3022:79:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18921,
                        "nodeType": "IfStatement",
                        "src": "3018:363:60",
                        "trueBody": {
                          "id": 18920,
                          "nodeType": "Block",
                          "src": "3103:278:60",
                          "statements": [
                            {
                              "expression": {
                                "id": 18900,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 18892,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18762,
                                      "src": "3117:12:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 18896,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3130:14:60",
                                    "memberName": "__couponStatus",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18547,
                                    "src": "3117:27:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_enum$_CouponStatus_$18448_$dyn_storage",
                                      "typeString": "enum BondStorage.CouponStatus[] storage ref"
                                    }
                                  },
                                  "id": 18897,
                                  "indexExpression": {
                                    "expression": {
                                      "id": 18894,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18762,
                                      "src": "3145:12:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 18895,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3158:13:60",
                                    "memberName": "__currentLine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18512,
                                    "src": "3145:26:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3117:55:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_CouponStatus_$18448",
                                    "typeString": "enum BondStorage.CouponStatus"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 18898,
                                    "name": "CouponStatus",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18448,
                                    "src": "3175:12:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_CouponStatus_$18448_$",
                                      "typeString": "type(enum BondStorage.CouponStatus)"
                                    }
                                  },
                                  "id": 18899,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "3188:8:60",
                                  "memberName": "Executed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18447,
                                  "src": "3175:21:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_CouponStatus_$18448",
                                    "typeString": "enum BondStorage.CouponStatus"
                                  }
                                },
                                "src": "3117:79:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_CouponStatus_$18448",
                                  "typeString": "enum BondStorage.CouponStatus"
                                }
                              },
                              "id": 18901,
                              "nodeType": "ExpressionStatement",
                              "src": "3117:79:60"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 18903,
                                    "name": "_bondId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18755,
                                    "src": "3235:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 18904,
                                      "name": "_bondDetails",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18762,
                                      "src": "3244:12:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                        "typeString": "struct BondStorage.BondParams storage pointer"
                                      }
                                    },
                                    "id": 18905,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3257:13:60",
                                    "memberName": "__currentLine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18512,
                                    "src": "3244:26:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 18902,
                                  "name": "CouponStatusChanged",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18646,
                                  "src": "3215:19:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint256)"
                                  }
                                },
                                "id": 18906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3215:56:60",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18907,
                              "nodeType": "EmitStatement",
                              "src": "3210:61:60"
                            },
                            {
                              "expression": {
                                "id": 18912,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 18908,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18762,
                                    "src": "3285:12:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 18910,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "3298:13:60",
                                  "memberName": "__currentLine",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18512,
                                  "src": "3285:26:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 18911,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3315:1:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "3285:31:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18913,
                              "nodeType": "ExpressionStatement",
                              "src": "3285:31:60"
                            },
                            {
                              "expression": {
                                "id": 18918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 18914,
                                    "name": "_bondDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18762,
                                    "src": "3330:12:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BondParams_$18576_storage_ptr",
                                      "typeString": "struct BondStorage.BondParams storage pointer"
                                    }
                                  },
                                  "id": 18916,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "3343:19:60",
                                  "memberName": "__allClaimsReceived",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18518,
                                  "src": "3330:32:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "66616c7365",
                                  "id": 18917,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3365:5:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "3330:40:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 18919,
                              "nodeType": "ExpressionStatement",
                              "src": "3330:40:60"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "functionSelector": "22e29d59",
                  "id": 18923,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawCouponClaim",
                  "nameLocation": "1639:19:60",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18758,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18755,
                        "mutability": "mutable",
                        "name": "_bondId",
                        "nameLocation": "1667:7:60",
                        "nodeType": "VariableDeclaration",
                        "scope": 18923,
                        "src": "1659:15:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18754,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1659:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18757,
                        "mutability": "mutable",
                        "name": "_buyer",
                        "nameLocation": "1684:6:60",
                        "nodeType": "VariableDeclaration",
                        "scope": 18923,
                        "src": "1676:14:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18756,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1676:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1658:33:60"
                  },
                  "returnParameters": {
                    "id": 18759,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1701:0:60"
                  },
                  "scope": 18960,
                  "src": "1630:1757:60",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 18958,
                    "nodeType": "Block",
                    "src": "3457:210:60",
                    "statements": [
                      {
                        "assignments": [
                          18933
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18933,
                            "mutability": "mutable",
                            "name": "selectors",
                            "nameLocation": "3483:9:60",
                            "nodeType": "VariableDeclaration",
                            "scope": 18958,
                            "src": "3467:25:60",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                              "typeString": "bytes4[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18931,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "3467:6:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 18932,
                              "nodeType": "ArrayTypeName",
                              "src": "3467:8:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18939,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "32",
                              "id": 18937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3508:1:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "id": 18936,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3495:12:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes4[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 18934,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "3499:6:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 18935,
                              "nodeType": "ArrayTypeName",
                              "src": "3499:8:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            }
                          },
                          "id": 18938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3495:15:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3467:43:60"
                      },
                      {
                        "expression": {
                          "id": 18946,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 18940,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18933,
                              "src": "3521:9:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 18942,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 18941,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3531:1:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3521:12:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 18943,
                                "name": "CouponFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18960,
                                "src": "3536:11:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_CouponFacet_$18960_$",
                                  "typeString": "type(contract CouponFacet)"
                                }
                              },
                              "id": 18944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3548:11:60",
                              "memberName": "claimCoupon",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18753,
                              "src": "3536:23:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function CouponFacet.claimCoupon(uint256,address) returns (uint256)"
                              }
                            },
                            "id": 18945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "3560:8:60",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "3536:32:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "3521:47:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 18947,
                        "nodeType": "ExpressionStatement",
                        "src": "3521:47:60"
                      },
                      {
                        "expression": {
                          "id": 18954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 18948,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18933,
                              "src": "3578:9:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 18950,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 18949,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3588:1:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3578:12:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 18951,
                                "name": "CouponFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18960,
                                "src": "3593:11:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_CouponFacet_$18960_$",
                                  "typeString": "type(contract CouponFacet)"
                                }
                              },
                              "id": 18952,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3605:19:60",
                              "memberName": "withdrawCouponClaim",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18923,
                              "src": "3593:31:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_uint256_$_t_address_$returns$__$",
                                "typeString": "function CouponFacet.withdrawCouponClaim(uint256,address)"
                              }
                            },
                            "id": 18953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "3625:8:60",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "3593:40:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "3578:55:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 18955,
                        "nodeType": "ExpressionStatement",
                        "src": "3578:55:60"
                      },
                      {
                        "expression": {
                          "id": 18956,
                          "name": "selectors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18933,
                          "src": "3651:9:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "functionReturnParameters": 18928,
                        "id": 18957,
                        "nodeType": "Return",
                        "src": "3644:16:60"
                      }
                    ]
                  },
                  "functionSelector": "4b503f0b",
                  "id": 18959,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSelectors",
                  "nameLocation": "3402:12:60",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18924,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3414:2:60"
                  },
                  "returnParameters": {
                    "id": 18928,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18927,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18959,
                        "src": "3440:15:60",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18925,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "3440:6:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 18926,
                          "nodeType": "ArrayTypeName",
                          "src": "3440:8:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3439:17:60"
                  },
                  "scope": 18960,
                  "src": "3393:274:60",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 18961,
              "src": "380:3289:60",
              "usedErrors": [
                6610,
                18648
              ],
              "usedEvents": [
                18646
              ]
            }
          ],
          "src": "40:3630:60"
        },
        "id": 60
      },
      "contracts/facets/DiamondLoupeFacet.sol": {
        "ast": {
          "absolutePath": "contracts/facets/DiamondLoupeFacet.sol",
          "exportedSymbols": {
            "DiamondLoupeFacet": [
              19467
            ],
            "IDiamondLoupe": [
              20559
            ],
            "IERC165": [
              3062
            ],
            "LibDiamond": [
              22819
            ]
          },
          "id": 19468,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 18962,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:61"
            },
            {
              "absolutePath": "contracts/libraries/LibDiamond.sol",
              "file": "../libraries/LibDiamond.sol",
              "id": 18964,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 19468,
              "sourceUnit": 22820,
              "src": "431:57:61",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18963,
                    "name": "LibDiamond",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22819,
                    "src": "440:10:61",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IDiamondLoupe.sol",
              "file": "../interfaces/IDiamondLoupe.sol",
              "id": 18966,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 19468,
              "sourceUnit": 20560,
              "src": "489:64:61",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18965,
                    "name": "IDiamondLoupe",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20559,
                    "src": "498:13:61",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/interfaces/IERC165.sol",
              "file": "@openzeppelin/contracts/interfaces/IERC165.sol",
              "id": 18968,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 19468,
              "sourceUnit": 152,
              "src": "554:73:61",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 18967,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3062,
                    "src": "563:7:61",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 18969,
                    "name": "IDiamondLoupe",
                    "nameLocations": [
                      "659:13:61"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 20559,
                    "src": "659:13:61"
                  },
                  "id": 18970,
                  "nodeType": "InheritanceSpecifier",
                  "src": "659:13:61"
                },
                {
                  "baseName": {
                    "id": 18971,
                    "name": "IERC165",
                    "nameLocations": [
                      "674:7:61"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3062,
                    "src": "674:7:61"
                  },
                  "id": 18972,
                  "nodeType": "InheritanceSpecifier",
                  "src": "674:7:61"
                }
              ],
              "canonicalName": "DiamondLoupeFacet",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 19467,
              "linearizedBaseContracts": [
                19467,
                3062,
                20559
              ],
              "name": "DiamondLoupeFacet",
              "nameLocation": "638:17:61",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    20534
                  ],
                  "body": {
                    "id": 19171,
                    "nodeType": "Block",
                    "src": "1130:2481:61",
                    "statements": [
                      {
                        "assignments": [
                          18985
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18985,
                            "mutability": "mutable",
                            "name": "ds",
                            "nameLocation": "1174:2:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 19171,
                            "src": "1140:36:61",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                              "typeString": "struct LibDiamond.DiamondStorage"
                            },
                            "typeName": {
                              "id": 18984,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 18983,
                                "name": "LibDiamond.DiamondStorage",
                                "nameLocations": [
                                  "1140:10:61",
                                  "1151:14:61"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 22210,
                                "src": "1140:25:61"
                              },
                              "referencedDeclaration": 22210,
                              "src": "1140:25:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18989,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 18986,
                              "name": "LibDiamond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22819,
                              "src": "1179:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LibDiamond_$22819_$",
                                "typeString": "type(library LibDiamond)"
                              }
                            },
                            "id": 18987,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1190:14:61",
                            "memberName": "diamondStorage",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22222,
                            "src": "1179:25:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_DiamondStorage_$22210_storage_ptr_$",
                              "typeString": "function () pure returns (struct LibDiamond.DiamondStorage storage pointer)"
                            }
                          },
                          "id": 18988,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1179:27:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                            "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1140:66:61"
                      },
                      {
                        "assignments": [
                          18991
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18991,
                            "mutability": "mutable",
                            "name": "selectorCount",
                            "nameLocation": "1224:13:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 19171,
                            "src": "1216:21:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18990,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1216:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18995,
                        "initialValue": {
                          "expression": {
                            "expression": {
                              "id": 18992,
                              "name": "ds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18985,
                              "src": "1240:2:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                              }
                            },
                            "id": 18993,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1243:9:61",
                            "memberName": "selectors",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22203,
                            "src": "1240:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                              "typeString": "bytes4[] storage ref"
                            }
                          },
                          "id": 18994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1253:6:61",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "1240:19:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1216:43:61"
                      },
                      {
                        "expression": {
                          "id": 19003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18996,
                            "name": "facets_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18979,
                            "src": "1329:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Facet_$20526_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IDiamondLoupe.Facet memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19001,
                                "name": "selectorCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18991,
                                "src": "1351:13:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 19000,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1339:11:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Facet_$20526_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (struct IDiamondLoupe.Facet memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 18998,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 18997,
                                    "name": "Facet",
                                    "nameLocations": [
                                      "1343:5:61"
                                    ],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 20526,
                                    "src": "1343:5:61"
                                  },
                                  "referencedDeclaration": 20526,
                                  "src": "1343:5:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Facet_$20526_storage_ptr",
                                    "typeString": "struct IDiamondLoupe.Facet"
                                  }
                                },
                                "id": 18999,
                                "nodeType": "ArrayTypeName",
                                "src": "1343:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Facet_$20526_storage_$dyn_storage_ptr",
                                  "typeString": "struct IDiamondLoupe.Facet[]"
                                }
                              }
                            },
                            "id": 19002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1339:26:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Facet_$20526_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IDiamondLoupe.Facet memory[] memory"
                            }
                          },
                          "src": "1329:36:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Facet_$20526_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct IDiamondLoupe.Facet memory[] memory"
                          }
                        },
                        "id": 19004,
                        "nodeType": "ExpressionStatement",
                        "src": "1329:36:61"
                      },
                      {
                        "assignments": [
                          19009
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19009,
                            "mutability": "mutable",
                            "name": "numFacetSelectors",
                            "nameLocation": "1469:17:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 19171,
                            "src": "1454:32:61",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                              "typeString": "uint8[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 19007,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "1454:5:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "id": 19008,
                              "nodeType": "ArrayTypeName",
                              "src": "1454:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                                "typeString": "uint8[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19015,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19013,
                              "name": "selectorCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18991,
                              "src": "1501:13:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1489:11:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint8_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint8[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 19010,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "1493:5:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "id": 19011,
                              "nodeType": "ArrayTypeName",
                              "src": "1493:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                                "typeString": "uint8[]"
                              }
                            }
                          },
                          "id": 19014,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1489:26:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                            "typeString": "uint8[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1454:61:61"
                      },
                      {
                        "assignments": [
                          19017
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19017,
                            "mutability": "mutable",
                            "name": "numFacets",
                            "nameLocation": "1567:9:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 19171,
                            "src": "1559:17:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19016,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1559:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19018,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1559:17:61"
                      },
                      {
                        "body": {
                          "id": 19140,
                          "nodeType": "Block",
                          "src": "1705:1432:61",
                          "statements": [
                            {
                              "assignments": [
                                19029
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19029,
                                  "mutability": "mutable",
                                  "name": "selector",
                                  "nameLocation": "1726:8:61",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19140,
                                  "src": "1719:15:61",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 19028,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1719:6:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19034,
                              "initialValue": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 19030,
                                    "name": "ds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18985,
                                    "src": "1737:2:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                      "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                    }
                                  },
                                  "id": 19031,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1740:9:61",
                                  "memberName": "selectors",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22203,
                                  "src": "1737:12:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                                    "typeString": "bytes4[] storage ref"
                                  }
                                },
                                "id": 19033,
                                "indexExpression": {
                                  "id": 19032,
                                  "name": "selectorIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19020,
                                  "src": "1750:13:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1737:27:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1719:45:61"
                            },
                            {
                              "assignments": [
                                19036
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19036,
                                  "mutability": "mutable",
                                  "name": "facetAddress_",
                                  "nameLocation": "1786:13:61",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19140,
                                  "src": "1778:21:61",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 19035,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1778:7:61",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19042,
                              "initialValue": {
                                "expression": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 19037,
                                      "name": "ds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18985,
                                      "src": "1802:2:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                        "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                      }
                                    },
                                    "id": 19038,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1805:31:61",
                                    "memberName": "facetAddressAndSelectorPosition",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22200,
                                    "src": "1802:34:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndSelectorPosition_$22195_storage_$",
                                      "typeString": "mapping(bytes4 => struct LibDiamond.FacetAddressAndSelectorPosition storage ref)"
                                    }
                                  },
                                  "id": 19040,
                                  "indexExpression": {
                                    "id": 19039,
                                    "name": "selector",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19029,
                                    "src": "1837:8:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1802:44:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_storage",
                                    "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition storage ref"
                                  }
                                },
                                "id": 19041,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1847:12:61",
                                "memberName": "facetAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22192,
                                "src": "1802:57:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1778:81:61"
                            },
                            {
                              "assignments": [
                                19044
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19044,
                                  "mutability": "mutable",
                                  "name": "continueLoop",
                                  "nameLocation": "1878:12:61",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19140,
                                  "src": "1873:17:61",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 19043,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1873:4:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19046,
                              "initialValue": {
                                "hexValue": "66616c7365",
                                "id": 19045,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1893:5:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1873:25:61"
                            },
                            {
                              "body": {
                                "id": 19094,
                                "nodeType": "Block",
                                "src": "2059:536:61",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 19061,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "baseExpression": {
                                            "id": 19056,
                                            "name": "facets_",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18979,
                                            "src": "2081:7:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_Facet_$20526_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct IDiamondLoupe.Facet memory[] memory"
                                            }
                                          },
                                          "id": 19058,
                                          "indexExpression": {
                                            "id": 19057,
                                            "name": "facetIndex",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19048,
                                            "src": "2089:10:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "2081:19:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Facet_$20526_memory_ptr",
                                            "typeString": "struct IDiamondLoupe.Facet memory"
                                          }
                                        },
                                        "id": 19059,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "2101:12:61",
                                        "memberName": "facetAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20522,
                                        "src": "2081:32:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "id": 19060,
                                        "name": "facetAddress_",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19036,
                                        "src": "2117:13:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "2081:49:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 19093,
                                    "nodeType": "IfStatement",
                                    "src": "2077:504:61",
                                    "trueBody": {
                                      "id": 19092,
                                      "nodeType": "Block",
                                      "src": "2132:449:61",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 19071,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "baseExpression": {
                                                "expression": {
                                                  "baseExpression": {
                                                    "id": 19062,
                                                    "name": "facets_",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 18979,
                                                    "src": "2154:7:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_struct$_Facet_$20526_memory_ptr_$dyn_memory_ptr",
                                                      "typeString": "struct IDiamondLoupe.Facet memory[] memory"
                                                    }
                                                  },
                                                  "id": 19064,
                                                  "indexExpression": {
                                                    "id": 19063,
                                                    "name": "facetIndex",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 19048,
                                                    "src": "2162:10:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "2154:19:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Facet_$20526_memory_ptr",
                                                    "typeString": "struct IDiamondLoupe.Facet memory"
                                                  }
                                                },
                                                "id": 19065,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "2174:17:61",
                                                "memberName": "functionSelectors",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 20525,
                                                "src": "2154:37:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                                  "typeString": "bytes4[] memory"
                                                }
                                              },
                                              "id": 19069,
                                              "indexExpression": {
                                                "baseExpression": {
                                                  "id": 19066,
                                                  "name": "numFacetSelectors",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19009,
                                                  "src": "2192:17:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                                    "typeString": "uint8[] memory"
                                                  }
                                                },
                                                "id": 19068,
                                                "indexExpression": {
                                                  "id": 19067,
                                                  "name": "facetIndex",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19048,
                                                  "src": "2210:10:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "2192:29:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "2154:68:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 19070,
                                              "name": "selector",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19029,
                                              "src": "2225:8:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                              }
                                            },
                                            "src": "2154:79:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "id": 19072,
                                          "nodeType": "ExpressionStatement",
                                          "src": "2154:79:61"
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                },
                                                "id": 19078,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "baseExpression": {
                                                    "id": 19074,
                                                    "name": "numFacetSelectors",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 19009,
                                                    "src": "2359:17:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                                      "typeString": "uint8[] memory"
                                                    }
                                                  },
                                                  "id": 19076,
                                                  "indexExpression": {
                                                    "id": 19075,
                                                    "name": "facetIndex",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 19048,
                                                    "src": "2377:10:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "2359:29:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "<",
                                                "rightExpression": {
                                                  "hexValue": "323535",
                                                  "id": 19077,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "2391:3:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_255_by_1",
                                                    "typeString": "int_const 255"
                                                  },
                                                  "value": "255"
                                                },
                                                "src": "2359:35:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              {
                                                "hexValue": "616d6f756e74206f662066756e6374696f6e2068617320746f206265206c657373207468616e20323535",
                                                "id": 19079,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2396:44:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_stringliteral_976f4370e4be520b366170a1492574871ea7ba931a1014e456c81b07ab556959",
                                                  "typeString": "literal_string \"amount of function has to be less than 255\""
                                                },
                                                "value": "amount of function has to be less than 255"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                },
                                                {
                                                  "typeIdentifier": "t_stringliteral_976f4370e4be520b366170a1492574871ea7ba931a1014e456c81b07ab556959",
                                                  "typeString": "literal_string \"amount of function has to be less than 255\""
                                                }
                                              ],
                                              "id": 19073,
                                              "name": "require",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [
                                                -18,
                                                -18,
                                                -18
                                              ],
                                              "referencedDeclaration": -18,
                                              "src": "2351:7:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                              }
                                            },
                                            "id": 19080,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2351:90:61",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 19081,
                                          "nodeType": "ExpressionStatement",
                                          "src": "2351:90:61"
                                        },
                                        {
                                          "expression": {
                                            "id": 19085,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "2463:31:61",
                                            "subExpression": {
                                              "baseExpression": {
                                                "id": 19082,
                                                "name": "numFacetSelectors",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 19009,
                                                "src": "2463:17:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                                  "typeString": "uint8[] memory"
                                                }
                                              },
                                              "id": 19084,
                                              "indexExpression": {
                                                "id": 19083,
                                                "name": "facetIndex",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 19048,
                                                "src": "2481:10:61",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "2463:29:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "id": 19086,
                                          "nodeType": "ExpressionStatement",
                                          "src": "2463:31:61"
                                        },
                                        {
                                          "expression": {
                                            "id": 19089,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 19087,
                                              "name": "continueLoop",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19044,
                                              "src": "2516:12:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "74727565",
                                              "id": 19088,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "bool",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "2531:4:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "value": "true"
                                            },
                                            "src": "2516:19:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "id": 19090,
                                          "nodeType": "ExpressionStatement",
                                          "src": "2516:19:61"
                                        },
                                        {
                                          "id": 19091,
                                          "nodeType": "Break",
                                          "src": "2557:5:61"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19052,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 19050,
                                  "name": "facetIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19048,
                                  "src": "2021:10:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 19051,
                                  "name": "numFacets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19017,
                                  "src": "2034:9:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2021:22:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 19095,
                              "initializationExpression": {
                                "assignments": [
                                  19048
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 19048,
                                    "mutability": "mutable",
                                    "name": "facetIndex",
                                    "nameLocation": "2009:10:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 19095,
                                    "src": "2001:18:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 19047,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2001:7:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 19049,
                                "nodeType": "VariableDeclarationStatement",
                                "src": "2001:18:61"
                              },
                              "isSimpleCounterLoop": true,
                              "loopExpression": {
                                "expression": {
                                  "id": 19054,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "2045:12:61",
                                  "subExpression": {
                                    "id": 19053,
                                    "name": "facetIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19048,
                                    "src": "2045:10:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 19055,
                                "nodeType": "ExpressionStatement",
                                "src": "2045:12:61"
                              },
                              "nodeType": "ForStatement",
                              "src": "1996:599:61"
                            },
                            {
                              "condition": {
                                "id": 19096,
                                "name": "continueLoop",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19044,
                                "src": "2693:12:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 19103,
                              "nodeType": "IfStatement",
                              "src": "2689:97:61",
                              "trueBody": {
                                "id": 19102,
                                "nodeType": "Block",
                                "src": "2707:79:61",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 19099,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 19097,
                                        "name": "continueLoop",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19044,
                                        "src": "2725:12:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "66616c7365",
                                        "id": 19098,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2740:5:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "2725:20:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 19100,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2725:20:61"
                                  },
                                  {
                                    "id": 19101,
                                    "nodeType": "Continue",
                                    "src": "2763:8:61"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 19109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 19104,
                                      "name": "facets_",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18979,
                                      "src": "2864:7:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_Facet_$20526_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct IDiamondLoupe.Facet memory[] memory"
                                      }
                                    },
                                    "id": 19106,
                                    "indexExpression": {
                                      "id": 19105,
                                      "name": "numFacets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19017,
                                      "src": "2872:9:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2864:18:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Facet_$20526_memory_ptr",
                                      "typeString": "struct IDiamondLoupe.Facet memory"
                                    }
                                  },
                                  "id": 19107,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "2883:12:61",
                                  "memberName": "facetAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20522,
                                  "src": "2864:31:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 19108,
                                  "name": "facetAddress_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19036,
                                  "src": "2898:13:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2864:47:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 19110,
                              "nodeType": "ExpressionStatement",
                              "src": "2864:47:61"
                            },
                            {
                              "expression": {
                                "id": 19120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 19111,
                                      "name": "facets_",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18979,
                                      "src": "2925:7:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_Facet_$20526_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct IDiamondLoupe.Facet memory[] memory"
                                      }
                                    },
                                    "id": 19113,
                                    "indexExpression": {
                                      "id": 19112,
                                      "name": "numFacets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19017,
                                      "src": "2933:9:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2925:18:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Facet_$20526_memory_ptr",
                                      "typeString": "struct IDiamondLoupe.Facet memory"
                                    }
                                  },
                                  "id": 19114,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "2944:17:61",
                                  "memberName": "functionSelectors",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20525,
                                  "src": "2925:36:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                    "typeString": "bytes4[] memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 19118,
                                      "name": "selectorCount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18991,
                                      "src": "2977:13:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 19117,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "2964:12:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (bytes4[] memory)"
                                    },
                                    "typeName": {
                                      "baseType": {
                                        "id": 19115,
                                        "name": "bytes4",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2968:6:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      },
                                      "id": 19116,
                                      "nodeType": "ArrayTypeName",
                                      "src": "2968:8:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                        "typeString": "bytes4[]"
                                      }
                                    }
                                  },
                                  "id": 19119,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2964:27:61",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                    "typeString": "bytes4[] memory"
                                  }
                                },
                                "src": "2925:66:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                  "typeString": "bytes4[] memory"
                                }
                              },
                              "id": 19121,
                              "nodeType": "ExpressionStatement",
                              "src": "2925:66:61"
                            },
                            {
                              "expression": {
                                "id": 19129,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 19122,
                                        "name": "facets_",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18979,
                                        "src": "3005:7:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_Facet_$20526_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct IDiamondLoupe.Facet memory[] memory"
                                        }
                                      },
                                      "id": 19124,
                                      "indexExpression": {
                                        "id": 19123,
                                        "name": "numFacets",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19017,
                                        "src": "3013:9:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3005:18:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Facet_$20526_memory_ptr",
                                        "typeString": "struct IDiamondLoupe.Facet memory"
                                      }
                                    },
                                    "id": 19125,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3024:17:61",
                                    "memberName": "functionSelectors",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20525,
                                    "src": "3005:36:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                      "typeString": "bytes4[] memory"
                                    }
                                  },
                                  "id": 19127,
                                  "indexExpression": {
                                    "hexValue": "30",
                                    "id": 19126,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3042:1:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3005:39:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 19128,
                                  "name": "selector",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19029,
                                  "src": "3047:8:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "3005:50:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 19130,
                              "nodeType": "ExpressionStatement",
                              "src": "3005:50:61"
                            },
                            {
                              "expression": {
                                "id": 19135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 19131,
                                    "name": "numFacetSelectors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19009,
                                    "src": "3069:17:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                      "typeString": "uint8[] memory"
                                    }
                                  },
                                  "id": 19133,
                                  "indexExpression": {
                                    "id": 19132,
                                    "name": "numFacets",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19017,
                                    "src": "3087:9:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3069:28:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 19134,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3100:1:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "3069:32:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "id": 19136,
                              "nodeType": "ExpressionStatement",
                              "src": "3069:32:61"
                            },
                            {
                              "expression": {
                                "id": 19138,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "3115:11:61",
                                "subExpression": {
                                  "id": 19137,
                                  "name": "numFacets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19017,
                                  "src": "3115:9:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19139,
                              "nodeType": "ExpressionStatement",
                              "src": "3115:11:61"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19022,
                            "name": "selectorIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19020,
                            "src": "1657:13:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 19023,
                            "name": "selectorCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18991,
                            "src": "1673:13:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1657:29:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19141,
                        "initializationExpression": {
                          "assignments": [
                            19020
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 19020,
                              "mutability": "mutable",
                              "name": "selectorIndex",
                              "nameLocation": "1642:13:61",
                              "nodeType": "VariableDeclaration",
                              "scope": 19141,
                              "src": "1634:21:61",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 19019,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1634:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 19021,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1634:21:61"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 19026,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1688:15:61",
                            "subExpression": {
                              "id": 19025,
                              "name": "selectorIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19020,
                              "src": "1688:13:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19027,
                          "nodeType": "ExpressionStatement",
                          "src": "1688:15:61"
                        },
                        "nodeType": "ForStatement",
                        "src": "1629:1508:61"
                      },
                      {
                        "body": {
                          "id": 19168,
                          "nodeType": "Block",
                          "src": "3209:288:61",
                          "statements": [
                            {
                              "assignments": [
                                19152
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19152,
                                  "mutability": "mutable",
                                  "name": "numSelectors",
                                  "nameLocation": "3231:12:61",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19168,
                                  "src": "3223:20:61",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 19151,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3223:7:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19156,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 19153,
                                  "name": "numFacetSelectors",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19009,
                                  "src": "3246:17:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                    "typeString": "uint8[] memory"
                                  }
                                },
                                "id": 19155,
                                "indexExpression": {
                                  "id": 19154,
                                  "name": "facetIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19143,
                                  "src": "3264:10:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3246:29:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3223:52:61"
                            },
                            {
                              "assignments": [
                                19161
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19161,
                                  "mutability": "mutable",
                                  "name": "selectors",
                                  "nameLocation": "3305:9:61",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19168,
                                  "src": "3289:25:61",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                    "typeString": "bytes4[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 19159,
                                      "name": "bytes4",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3289:6:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "id": 19160,
                                    "nodeType": "ArrayTypeName",
                                    "src": "3289:8:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                      "typeString": "bytes4[]"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19166,
                              "initialValue": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 19162,
                                    "name": "facets_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18979,
                                    "src": "3317:7:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_Facet_$20526_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct IDiamondLoupe.Facet memory[] memory"
                                    }
                                  },
                                  "id": 19164,
                                  "indexExpression": {
                                    "id": 19163,
                                    "name": "facetIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19143,
                                    "src": "3325:10:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3317:19:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Facet_$20526_memory_ptr",
                                    "typeString": "struct IDiamondLoupe.Facet memory"
                                  }
                                },
                                "id": 19165,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3337:17:61",
                                "memberName": "functionSelectors",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20525,
                                "src": "3317:37:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                  "typeString": "bytes4[] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3289:65:61"
                            },
                            {
                              "AST": {
                                "nativeSrc": "3424:63:61",
                                "nodeType": "YulBlock",
                                "src": "3424:63:61",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "selectors",
                                          "nativeSrc": "3449:9:61",
                                          "nodeType": "YulIdentifier",
                                          "src": "3449:9:61"
                                        },
                                        {
                                          "name": "numSelectors",
                                          "nativeSrc": "3460:12:61",
                                          "nodeType": "YulIdentifier",
                                          "src": "3460:12:61"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nativeSrc": "3442:6:61",
                                        "nodeType": "YulIdentifier",
                                        "src": "3442:6:61"
                                      },
                                      "nativeSrc": "3442:31:61",
                                      "nodeType": "YulFunctionCall",
                                      "src": "3442:31:61"
                                    },
                                    "nativeSrc": "3442:31:61",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3442:31:61"
                                  }
                                ]
                              },
                              "evmVersion": "paris",
                              "externalReferences": [
                                {
                                  "declaration": 19152,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "3460:12:61",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 19161,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "3449:9:61",
                                  "valueSize": 1
                                }
                              ],
                              "id": 19167,
                              "nodeType": "InlineAssembly",
                              "src": "3415:72:61"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19145,
                            "name": "facetIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19143,
                            "src": "3171:10:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 19146,
                            "name": "numFacets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19017,
                            "src": "3184:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3171:22:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19169,
                        "initializationExpression": {
                          "assignments": [
                            19143
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 19143,
                              "mutability": "mutable",
                              "name": "facetIndex",
                              "nameLocation": "3159:10:61",
                              "nodeType": "VariableDeclaration",
                              "scope": 19169,
                              "src": "3151:18:61",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 19142,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3151:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 19144,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3151:18:61"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 19149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3195:12:61",
                            "subExpression": {
                              "id": 19148,
                              "name": "facetIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19143,
                              "src": "3195:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19150,
                          "nodeType": "ExpressionStatement",
                          "src": "3195:12:61"
                        },
                        "nodeType": "ForStatement",
                        "src": "3146:351:61"
                      },
                      {
                        "AST": {
                          "nativeSrc": "3555:50:61",
                          "nodeType": "YulBlock",
                          "src": "3555:50:61",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "facets_",
                                    "nativeSrc": "3576:7:61",
                                    "nodeType": "YulIdentifier",
                                    "src": "3576:7:61"
                                  },
                                  {
                                    "name": "numFacets",
                                    "nativeSrc": "3585:9:61",
                                    "nodeType": "YulIdentifier",
                                    "src": "3585:9:61"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "3569:6:61",
                                  "nodeType": "YulIdentifier",
                                  "src": "3569:6:61"
                                },
                                "nativeSrc": "3569:26:61",
                                "nodeType": "YulFunctionCall",
                                "src": "3569:26:61"
                              },
                              "nativeSrc": "3569:26:61",
                              "nodeType": "YulExpressionStatement",
                              "src": "3569:26:61"
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 18979,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3576:7:61",
                            "valueSize": 1
                          },
                          {
                            "declaration": 19017,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3585:9:61",
                            "valueSize": 1
                          }
                        ],
                        "id": 19170,
                        "nodeType": "InlineAssembly",
                        "src": "3546:59:61"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18973,
                    "nodeType": "StructuredDocumentation",
                    "src": "973:78:61",
                    "text": "@notice Gets all facets and their selectors.\n @return facets_ Facet"
                  },
                  "functionSelector": "7a0ed627",
                  "id": 19172,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "facets",
                  "nameLocation": "1065:6:61",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18975,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1088:8:61"
                  },
                  "parameters": {
                    "id": 18974,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1071:2:61"
                  },
                  "returnParameters": {
                    "id": 18980,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18979,
                        "mutability": "mutable",
                        "name": "facets_",
                        "nameLocation": "1121:7:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 19172,
                        "src": "1106:22:61",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Facet_$20526_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IDiamondLoupe.Facet[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18977,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 18976,
                              "name": "Facet",
                              "nameLocations": [
                                "1106:5:61"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 20526,
                              "src": "1106:5:61"
                            },
                            "referencedDeclaration": 20526,
                            "src": "1106:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Facet_$20526_storage_ptr",
                              "typeString": "struct IDiamondLoupe.Facet"
                            }
                          },
                          "id": 18978,
                          "nodeType": "ArrayTypeName",
                          "src": "1106:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Facet_$20526_storage_$dyn_storage_ptr",
                            "typeString": "struct IDiamondLoupe.Facet[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1105:24:61"
                  },
                  "scope": 19467,
                  "src": "1056:2555:61",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    20543
                  ],
                  "body": {
                    "id": 19249,
                    "nodeType": "Block",
                    "src": "3981:816:61",
                    "statements": [
                      {
                        "assignments": [
                          19186
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19186,
                            "mutability": "mutable",
                            "name": "ds",
                            "nameLocation": "4025:2:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 19249,
                            "src": "3991:36:61",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                              "typeString": "struct LibDiamond.DiamondStorage"
                            },
                            "typeName": {
                              "id": 19185,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 19184,
                                "name": "LibDiamond.DiamondStorage",
                                "nameLocations": [
                                  "3991:10:61",
                                  "4002:14:61"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 22210,
                                "src": "3991:25:61"
                              },
                              "referencedDeclaration": 22210,
                              "src": "3991:25:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19190,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 19187,
                              "name": "LibDiamond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22819,
                              "src": "4030:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LibDiamond_$22819_$",
                                "typeString": "type(library LibDiamond)"
                              }
                            },
                            "id": 19188,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4041:14:61",
                            "memberName": "diamondStorage",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22222,
                            "src": "4030:25:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_DiamondStorage_$22210_storage_ptr_$",
                              "typeString": "function () pure returns (struct LibDiamond.DiamondStorage storage pointer)"
                            }
                          },
                          "id": 19189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4030:27:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                            "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3991:66:61"
                      },
                      {
                        "assignments": [
                          19192
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19192,
                            "mutability": "mutable",
                            "name": "selectorCount",
                            "nameLocation": "4075:13:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 19249,
                            "src": "4067:21:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19191,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4067:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19196,
                        "initialValue": {
                          "expression": {
                            "expression": {
                              "id": 19193,
                              "name": "ds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19186,
                              "src": "4091:2:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                              }
                            },
                            "id": 19194,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4094:9:61",
                            "memberName": "selectors",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22203,
                            "src": "4091:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                              "typeString": "bytes4[] storage ref"
                            }
                          },
                          "id": 19195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4104:6:61",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "4091:19:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4067:43:61"
                      },
                      {
                        "assignments": [
                          19198
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19198,
                            "mutability": "mutable",
                            "name": "numSelectors",
                            "nameLocation": "4128:12:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 19249,
                            "src": "4120:20:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19197,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4120:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19199,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4120:20:61"
                      },
                      {
                        "expression": {
                          "id": 19206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19200,
                            "name": "_facetFunctionSelectors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19180,
                            "src": "4150:23:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                              "typeString": "bytes4[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19204,
                                "name": "selectorCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19192,
                                "src": "4189:13:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 19203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "4176:12:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes4[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 19201,
                                  "name": "bytes4",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4180:6:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "id": 19202,
                                "nodeType": "ArrayTypeName",
                                "src": "4180:8:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                  "typeString": "bytes4[]"
                                }
                              }
                            },
                            "id": 19205,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4176:27:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                              "typeString": "bytes4[] memory"
                            }
                          },
                          "src": "4150:53:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "id": 19207,
                        "nodeType": "ExpressionStatement",
                        "src": "4150:53:61"
                      },
                      {
                        "body": {
                          "id": 19246,
                          "nodeType": "Block",
                          "src": "4332:320:61",
                          "statements": [
                            {
                              "assignments": [
                                19218
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19218,
                                  "mutability": "mutable",
                                  "name": "selector",
                                  "nameLocation": "4353:8:61",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19246,
                                  "src": "4346:15:61",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 19217,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4346:6:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19223,
                              "initialValue": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 19219,
                                    "name": "ds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19186,
                                    "src": "4364:2:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                      "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                    }
                                  },
                                  "id": 19220,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4367:9:61",
                                  "memberName": "selectors",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22203,
                                  "src": "4364:12:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                                    "typeString": "bytes4[] storage ref"
                                  }
                                },
                                "id": 19222,
                                "indexExpression": {
                                  "id": 19221,
                                  "name": "selectorIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19209,
                                  "src": "4377:13:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4364:27:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4346:45:61"
                            },
                            {
                              "assignments": [
                                19225
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19225,
                                  "mutability": "mutable",
                                  "name": "facetAddress_",
                                  "nameLocation": "4413:13:61",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19246,
                                  "src": "4405:21:61",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 19224,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4405:7:61",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19231,
                              "initialValue": {
                                "expression": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 19226,
                                      "name": "ds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19186,
                                      "src": "4429:2:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                        "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                      }
                                    },
                                    "id": 19227,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "4432:31:61",
                                    "memberName": "facetAddressAndSelectorPosition",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22200,
                                    "src": "4429:34:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndSelectorPosition_$22195_storage_$",
                                      "typeString": "mapping(bytes4 => struct LibDiamond.FacetAddressAndSelectorPosition storage ref)"
                                    }
                                  },
                                  "id": 19229,
                                  "indexExpression": {
                                    "id": 19228,
                                    "name": "selector",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19218,
                                    "src": "4464:8:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4429:44:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_storage",
                                    "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition storage ref"
                                  }
                                },
                                "id": 19230,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4474:12:61",
                                "memberName": "facetAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22192,
                                "src": "4429:57:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4405:81:61"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 19234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 19232,
                                  "name": "_facet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19175,
                                  "src": "4504:6:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 19233,
                                  "name": "facetAddress_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19225,
                                  "src": "4514:13:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4504:23:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 19245,
                              "nodeType": "IfStatement",
                              "src": "4500:142:61",
                              "trueBody": {
                                "id": 19244,
                                "nodeType": "Block",
                                "src": "4529:113:61",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 19239,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 19235,
                                          "name": "_facetFunctionSelectors",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19180,
                                          "src": "4547:23:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                            "typeString": "bytes4[] memory"
                                          }
                                        },
                                        "id": 19237,
                                        "indexExpression": {
                                          "id": 19236,
                                          "name": "numSelectors",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19198,
                                          "src": "4571:12:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4547:37:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 19238,
                                        "name": "selector",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19218,
                                        "src": "4587:8:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      },
                                      "src": "4547:48:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "id": 19240,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4547:48:61"
                                  },
                                  {
                                    "expression": {
                                      "id": 19242,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "4613:14:61",
                                      "subExpression": {
                                        "id": 19241,
                                        "name": "numSelectors",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19198,
                                        "src": "4613:12:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 19243,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4613:14:61"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19211,
                            "name": "selectorIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19209,
                            "src": "4284:13:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 19212,
                            "name": "selectorCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19192,
                            "src": "4300:13:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4284:29:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19247,
                        "initializationExpression": {
                          "assignments": [
                            19209
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 19209,
                              "mutability": "mutable",
                              "name": "selectorIndex",
                              "nameLocation": "4269:13:61",
                              "nodeType": "VariableDeclaration",
                              "scope": 19247,
                              "src": "4261:21:61",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 19208,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4261:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 19210,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4261:21:61"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 19215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4315:15:61",
                            "subExpression": {
                              "id": 19214,
                              "name": "selectorIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19209,
                              "src": "4315:13:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19216,
                          "nodeType": "ExpressionStatement",
                          "src": "4315:15:61"
                        },
                        "nodeType": "ForStatement",
                        "src": "4256:396:61"
                      },
                      {
                        "AST": {
                          "nativeSrc": "4722:69:61",
                          "nodeType": "YulBlock",
                          "src": "4722:69:61",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_facetFunctionSelectors",
                                    "nativeSrc": "4743:23:61",
                                    "nodeType": "YulIdentifier",
                                    "src": "4743:23:61"
                                  },
                                  {
                                    "name": "numSelectors",
                                    "nativeSrc": "4768:12:61",
                                    "nodeType": "YulIdentifier",
                                    "src": "4768:12:61"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "4736:6:61",
                                  "nodeType": "YulIdentifier",
                                  "src": "4736:6:61"
                                },
                                "nativeSrc": "4736:45:61",
                                "nodeType": "YulFunctionCall",
                                "src": "4736:45:61"
                              },
                              "nativeSrc": "4736:45:61",
                              "nodeType": "YulExpressionStatement",
                              "src": "4736:45:61"
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 19180,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4743:23:61",
                            "valueSize": 1
                          },
                          {
                            "declaration": 19198,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4768:12:61",
                            "valueSize": 1
                          }
                        ],
                        "id": 19248,
                        "nodeType": "InlineAssembly",
                        "src": "4713:78:61"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19173,
                    "nodeType": "StructuredDocumentation",
                    "src": "3617:202:61",
                    "text": "@notice Gets all the function selectors supported by a specific facet.\n @param _facet The facet address.\n @return _facetFunctionSelectors The selectors associated with a facet address."
                  },
                  "functionSelector": "adfca15e",
                  "id": 19250,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "facetFunctionSelectors",
                  "nameLocation": "3833:22:61",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19177,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3910:8:61"
                  },
                  "parameters": {
                    "id": 19176,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19175,
                        "mutability": "mutable",
                        "name": "_facet",
                        "nameLocation": "3864:6:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 19250,
                        "src": "3856:14:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19174,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3856:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3855:16:61"
                  },
                  "returnParameters": {
                    "id": 19181,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19180,
                        "mutability": "mutable",
                        "name": "_facetFunctionSelectors",
                        "nameLocation": "3952:23:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 19250,
                        "src": "3936:39:61",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19178,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "3936:6:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 19179,
                          "nodeType": "ArrayTypeName",
                          "src": "3936:8:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3935:41:61"
                  },
                  "scope": 19467,
                  "src": "3824:973:61",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    20550
                  ],
                  "body": {
                    "id": 19355,
                    "nodeType": "Block",
                    "src": "4990:1365:61",
                    "statements": [
                      {
                        "assignments": [
                          19262
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19262,
                            "mutability": "mutable",
                            "name": "ds",
                            "nameLocation": "5034:2:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 19355,
                            "src": "5000:36:61",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                              "typeString": "struct LibDiamond.DiamondStorage"
                            },
                            "typeName": {
                              "id": 19261,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 19260,
                                "name": "LibDiamond.DiamondStorage",
                                "nameLocations": [
                                  "5000:10:61",
                                  "5011:14:61"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 22210,
                                "src": "5000:25:61"
                              },
                              "referencedDeclaration": 22210,
                              "src": "5000:25:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19266,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 19263,
                              "name": "LibDiamond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22819,
                              "src": "5039:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LibDiamond_$22819_$",
                                "typeString": "type(library LibDiamond)"
                              }
                            },
                            "id": 19264,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5050:14:61",
                            "memberName": "diamondStorage",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22222,
                            "src": "5039:25:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_DiamondStorage_$22210_storage_ptr_$",
                              "typeString": "function () pure returns (struct LibDiamond.DiamondStorage storage pointer)"
                            }
                          },
                          "id": 19265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5039:27:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                            "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5000:66:61"
                      },
                      {
                        "assignments": [
                          19268
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19268,
                            "mutability": "mutable",
                            "name": "selectorCount",
                            "nameLocation": "5084:13:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 19355,
                            "src": "5076:21:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19267,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5076:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19272,
                        "initialValue": {
                          "expression": {
                            "expression": {
                              "id": 19269,
                              "name": "ds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19262,
                              "src": "5100:2:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                              }
                            },
                            "id": 19270,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5103:9:61",
                            "memberName": "selectors",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22203,
                            "src": "5100:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                              "typeString": "bytes4[] storage ref"
                            }
                          },
                          "id": 19271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5113:6:61",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "5100:19:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5076:43:61"
                      },
                      {
                        "expression": {
                          "id": 19279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19273,
                            "name": "facetAddresses_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19256,
                            "src": "5189:15:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19277,
                                "name": "selectorCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19268,
                                "src": "5221:13:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 19276,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "5207:13:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (address[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 19274,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5211:7:61",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 19275,
                                "nodeType": "ArrayTypeName",
                                "src": "5211:9:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                  "typeString": "address[]"
                                }
                              }
                            },
                            "id": 19278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5207:28:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "5189:46:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 19280,
                        "nodeType": "ExpressionStatement",
                        "src": "5189:46:61"
                      },
                      {
                        "assignments": [
                          19282
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19282,
                            "mutability": "mutable",
                            "name": "numFacets",
                            "nameLocation": "5253:9:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 19355,
                            "src": "5245:17:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19281,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5245:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19283,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5245:17:61"
                      },
                      {
                        "body": {
                          "id": 19352,
                          "nodeType": "Block",
                          "src": "5391:824:61",
                          "statements": [
                            {
                              "assignments": [
                                19294
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19294,
                                  "mutability": "mutable",
                                  "name": "selector",
                                  "nameLocation": "5412:8:61",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19352,
                                  "src": "5405:15:61",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 19293,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5405:6:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19299,
                              "initialValue": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 19295,
                                    "name": "ds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19262,
                                    "src": "5423:2:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                      "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                    }
                                  },
                                  "id": 19296,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5426:9:61",
                                  "memberName": "selectors",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22203,
                                  "src": "5423:12:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                                    "typeString": "bytes4[] storage ref"
                                  }
                                },
                                "id": 19298,
                                "indexExpression": {
                                  "id": 19297,
                                  "name": "selectorIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19285,
                                  "src": "5436:13:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5423:27:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5405:45:61"
                            },
                            {
                              "assignments": [
                                19301
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19301,
                                  "mutability": "mutable",
                                  "name": "facetAddress_",
                                  "nameLocation": "5472:13:61",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19352,
                                  "src": "5464:21:61",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 19300,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5464:7:61",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19307,
                              "initialValue": {
                                "expression": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 19302,
                                      "name": "ds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19262,
                                      "src": "5488:2:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                        "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                      }
                                    },
                                    "id": 19303,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5491:31:61",
                                    "memberName": "facetAddressAndSelectorPosition",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22200,
                                    "src": "5488:34:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndSelectorPosition_$22195_storage_$",
                                      "typeString": "mapping(bytes4 => struct LibDiamond.FacetAddressAndSelectorPosition storage ref)"
                                    }
                                  },
                                  "id": 19305,
                                  "indexExpression": {
                                    "id": 19304,
                                    "name": "selector",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19294,
                                    "src": "5523:8:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5488:44:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_storage",
                                    "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition storage ref"
                                  }
                                },
                                "id": 19306,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5533:12:61",
                                "memberName": "facetAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22192,
                                "src": "5488:57:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5464:81:61"
                            },
                            {
                              "assignments": [
                                19309
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19309,
                                  "mutability": "mutable",
                                  "name": "continueLoop",
                                  "nameLocation": "5564:12:61",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19352,
                                  "src": "5559:17:61",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 19308,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5559:4:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19311,
                              "initialValue": {
                                "hexValue": "66616c7365",
                                "id": 19310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5579:5:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5559:25:61"
                            },
                            {
                              "body": {
                                "id": 19333,
                                "nodeType": "Block",
                                "src": "5754:169:61",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 19325,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 19321,
                                        "name": "facetAddress_",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19301,
                                        "src": "5776:13:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "baseExpression": {
                                          "id": 19322,
                                          "name": "facetAddresses_",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19256,
                                          "src": "5793:15:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 19324,
                                        "indexExpression": {
                                          "id": 19323,
                                          "name": "facetIndex",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19313,
                                          "src": "5809:10:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "5793:27:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "5776:44:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 19332,
                                    "nodeType": "IfStatement",
                                    "src": "5772:137:61",
                                    "trueBody": {
                                      "id": 19331,
                                      "nodeType": "Block",
                                      "src": "5822:87:61",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 19328,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 19326,
                                              "name": "continueLoop",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19309,
                                              "src": "5844:12:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "74727565",
                                              "id": 19327,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "bool",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "5859:4:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "value": "true"
                                            },
                                            "src": "5844:19:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "id": 19329,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5844:19:61"
                                        },
                                        {
                                          "id": 19330,
                                          "nodeType": "Break",
                                          "src": "5885:5:61"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19317,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 19315,
                                  "name": "facetIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19313,
                                  "src": "5716:10:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 19316,
                                  "name": "numFacets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19282,
                                  "src": "5729:9:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5716:22:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 19334,
                              "initializationExpression": {
                                "assignments": [
                                  19313
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 19313,
                                    "mutability": "mutable",
                                    "name": "facetIndex",
                                    "nameLocation": "5704:10:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 19334,
                                    "src": "5696:18:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 19312,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5696:7:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 19314,
                                "nodeType": "VariableDeclarationStatement",
                                "src": "5696:18:61"
                              },
                              "isSimpleCounterLoop": true,
                              "loopExpression": {
                                "expression": {
                                  "id": 19319,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "5740:12:61",
                                  "subExpression": {
                                    "id": 19318,
                                    "name": "facetIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19313,
                                    "src": "5740:10:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 19320,
                                "nodeType": "ExpressionStatement",
                                "src": "5740:12:61"
                              },
                              "nodeType": "ForStatement",
                              "src": "5691:232:61"
                            },
                            {
                              "condition": {
                                "id": 19335,
                                "name": "continueLoop",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19309,
                                "src": "6000:12:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 19342,
                              "nodeType": "IfStatement",
                              "src": "5996:97:61",
                              "trueBody": {
                                "id": 19341,
                                "nodeType": "Block",
                                "src": "6014:79:61",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 19338,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 19336,
                                        "name": "continueLoop",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19309,
                                        "src": "6032:12:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "66616c7365",
                                        "id": 19337,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6047:5:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "6032:20:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 19339,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6032:20:61"
                                  },
                                  {
                                    "id": 19340,
                                    "nodeType": "Continue",
                                    "src": "6070:8:61"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 19347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 19343,
                                    "name": "facetAddresses_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19256,
                                    "src": "6137:15:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 19345,
                                  "indexExpression": {
                                    "id": 19344,
                                    "name": "numFacets",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19282,
                                    "src": "6153:9:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6137:26:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 19346,
                                  "name": "facetAddress_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19301,
                                  "src": "6166:13:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "6137:42:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 19348,
                              "nodeType": "ExpressionStatement",
                              "src": "6137:42:61"
                            },
                            {
                              "expression": {
                                "id": 19350,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "6193:11:61",
                                "subExpression": {
                                  "id": 19349,
                                  "name": "numFacets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19282,
                                  "src": "6193:9:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19351,
                              "nodeType": "ExpressionStatement",
                              "src": "6193:11:61"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19289,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19287,
                            "name": "selectorIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19285,
                            "src": "5343:13:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 19288,
                            "name": "selectorCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19268,
                            "src": "5359:13:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5343:29:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19353,
                        "initializationExpression": {
                          "assignments": [
                            19285
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 19285,
                              "mutability": "mutable",
                              "name": "selectorIndex",
                              "nameLocation": "5328:13:61",
                              "nodeType": "VariableDeclaration",
                              "scope": 19353,
                              "src": "5320:21:61",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 19284,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5320:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 19286,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5320:21:61"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 19291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "5374:15:61",
                            "subExpression": {
                              "id": 19290,
                              "name": "selectorIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19285,
                              "src": "5374:13:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19292,
                          "nodeType": "ExpressionStatement",
                          "src": "5374:15:61"
                        },
                        "nodeType": "ForStatement",
                        "src": "5315:900:61"
                      },
                      {
                        "AST": {
                          "nativeSrc": "6291:58:61",
                          "nodeType": "YulBlock",
                          "src": "6291:58:61",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "facetAddresses_",
                                    "nativeSrc": "6312:15:61",
                                    "nodeType": "YulIdentifier",
                                    "src": "6312:15:61"
                                  },
                                  {
                                    "name": "numFacets",
                                    "nativeSrc": "6329:9:61",
                                    "nodeType": "YulIdentifier",
                                    "src": "6329:9:61"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "6305:6:61",
                                  "nodeType": "YulIdentifier",
                                  "src": "6305:6:61"
                                },
                                "nativeSrc": "6305:34:61",
                                "nodeType": "YulFunctionCall",
                                "src": "6305:34:61"
                              },
                              "nativeSrc": "6305:34:61",
                              "nodeType": "YulExpressionStatement",
                              "src": "6305:34:61"
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 19256,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6312:15:61",
                            "valueSize": 1
                          },
                          {
                            "declaration": 19282,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6329:9:61",
                            "valueSize": 1
                          }
                        ],
                        "id": 19354,
                        "nodeType": "InlineAssembly",
                        "src": "6282:67:61"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19251,
                    "nodeType": "StructuredDocumentation",
                    "src": "4803:90:61",
                    "text": "@notice Get all the facet addresses used by a diamond.\n @return facetAddresses_"
                  },
                  "functionSelector": "52ef6b2c",
                  "id": 19356,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "facetAddresses",
                  "nameLocation": "4907:14:61",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19253,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4938:8:61"
                  },
                  "parameters": {
                    "id": 19252,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4921:2:61"
                  },
                  "returnParameters": {
                    "id": 19257,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19256,
                        "mutability": "mutable",
                        "name": "facetAddresses_",
                        "nameLocation": "4973:15:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 19356,
                        "src": "4956:32:61",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19254,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4956:7:61",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 19255,
                          "nodeType": "ArrayTypeName",
                          "src": "4956:9:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4955:34:61"
                  },
                  "scope": 19467,
                  "src": "4898:1457:61",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    20558
                  ],
                  "body": {
                    "id": 19382,
                    "nodeType": "Block",
                    "src": "6696:175:61",
                    "statements": [
                      {
                        "assignments": [
                          19369
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19369,
                            "mutability": "mutable",
                            "name": "ds",
                            "nameLocation": "6740:2:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 19382,
                            "src": "6706:36:61",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                              "typeString": "struct LibDiamond.DiamondStorage"
                            },
                            "typeName": {
                              "id": 19368,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 19367,
                                "name": "LibDiamond.DiamondStorage",
                                "nameLocations": [
                                  "6706:10:61",
                                  "6717:14:61"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 22210,
                                "src": "6706:25:61"
                              },
                              "referencedDeclaration": 22210,
                              "src": "6706:25:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19373,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 19370,
                              "name": "LibDiamond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22819,
                              "src": "6745:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LibDiamond_$22819_$",
                                "typeString": "type(library LibDiamond)"
                              }
                            },
                            "id": 19371,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6756:14:61",
                            "memberName": "diamondStorage",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22222,
                            "src": "6745:25:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_DiamondStorage_$22210_storage_ptr_$",
                              "typeString": "function () pure returns (struct LibDiamond.DiamondStorage storage pointer)"
                            }
                          },
                          "id": 19372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6745:27:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                            "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6706:66:61"
                      },
                      {
                        "expression": {
                          "id": 19380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19374,
                            "name": "facetAddress_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19363,
                            "src": "6782:13:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "baseExpression": {
                                "expression": {
                                  "id": 19375,
                                  "name": "ds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19369,
                                  "src": "6798:2:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                    "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                  }
                                },
                                "id": 19376,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6801:31:61",
                                "memberName": "facetAddressAndSelectorPosition",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22200,
                                "src": "6798:34:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndSelectorPosition_$22195_storage_$",
                                  "typeString": "mapping(bytes4 => struct LibDiamond.FacetAddressAndSelectorPosition storage ref)"
                                }
                              },
                              "id": 19378,
                              "indexExpression": {
                                "id": 19377,
                                "name": "_functionSelector",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19359,
                                "src": "6833:17:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6798:53:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_storage",
                                "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition storage ref"
                              }
                            },
                            "id": 19379,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6852:12:61",
                            "memberName": "facetAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22192,
                            "src": "6798:66:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6782:82:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19381,
                        "nodeType": "ExpressionStatement",
                        "src": "6782:82:61"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19357,
                    "nodeType": "StructuredDocumentation",
                    "src": "6361:227:61",
                    "text": "@notice Gets the facet address that supports the given selector.\n @dev If facet is not found return address(0).\n @param _functionSelector The function selector.\n @return facetAddress_ The facet address."
                  },
                  "functionSelector": "cdffacc6",
                  "id": 19383,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "facetAddress",
                  "nameLocation": "6602:12:61",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19361,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6655:8:61"
                  },
                  "parameters": {
                    "id": 19360,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19359,
                        "mutability": "mutable",
                        "name": "_functionSelector",
                        "nameLocation": "6622:17:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 19383,
                        "src": "6615:24:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 19358,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "6615:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6614:26:61"
                  },
                  "returnParameters": {
                    "id": 19364,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19363,
                        "mutability": "mutable",
                        "name": "facetAddress_",
                        "nameLocation": "6681:13:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 19383,
                        "src": "6673:21:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19362,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6673:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6672:23:61"
                  },
                  "scope": 19467,
                  "src": "6593:278:61",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3061
                  ],
                  "body": {
                    "id": 19405,
                    "nodeType": "Block",
                    "src": "6995:136:61",
                    "statements": [
                      {
                        "assignments": [
                          19395
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19395,
                            "mutability": "mutable",
                            "name": "ds",
                            "nameLocation": "7039:2:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 19405,
                            "src": "7005:36:61",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                              "typeString": "struct LibDiamond.DiamondStorage"
                            },
                            "typeName": {
                              "id": 19394,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 19393,
                                "name": "LibDiamond.DiamondStorage",
                                "nameLocations": [
                                  "7005:10:61",
                                  "7016:14:61"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 22210,
                                "src": "7005:25:61"
                              },
                              "referencedDeclaration": 22210,
                              "src": "7005:25:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19399,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 19396,
                              "name": "LibDiamond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22819,
                              "src": "7044:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LibDiamond_$22819_$",
                                "typeString": "type(library LibDiamond)"
                              }
                            },
                            "id": 19397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7055:14:61",
                            "memberName": "diamondStorage",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22222,
                            "src": "7044:25:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_DiamondStorage_$22210_storage_ptr_$",
                              "typeString": "function () pure returns (struct LibDiamond.DiamondStorage storage pointer)"
                            }
                          },
                          "id": 19398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7044:27:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                            "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7005:66:61"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "expression": {
                              "id": 19400,
                              "name": "ds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19395,
                              "src": "7088:2:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                              }
                            },
                            "id": 19401,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7091:19:61",
                            "memberName": "supportedInterfaces",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22207,
                            "src": "7088:22:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$",
                              "typeString": "mapping(bytes4 => bool)"
                            }
                          },
                          "id": 19403,
                          "indexExpression": {
                            "id": 19402,
                            "name": "_interfaceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19385,
                            "src": "7111:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7088:36:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 19390,
                        "id": 19404,
                        "nodeType": "Return",
                        "src": "7081:43:61"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 19406,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "6918:17:61",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19387,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6971:8:61"
                  },
                  "parameters": {
                    "id": 19386,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19385,
                        "mutability": "mutable",
                        "name": "_interfaceId",
                        "nameLocation": "6943:12:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 19406,
                        "src": "6936:19:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 19384,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "6936:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6935:21:61"
                  },
                  "returnParameters": {
                    "id": 19390,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19389,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 19406,
                        "src": "6989:4:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 19388,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6989:4:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6988:6:61"
                  },
                  "scope": 19467,
                  "src": "6909:222:61",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 19465,
                    "nodeType": "Block",
                    "src": "7201:418:61",
                    "statements": [
                      {
                        "assignments": [
                          19416
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19416,
                            "mutability": "mutable",
                            "name": "selectors",
                            "nameLocation": "7227:9:61",
                            "nodeType": "VariableDeclaration",
                            "scope": 19465,
                            "src": "7211:25:61",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                              "typeString": "bytes4[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 19414,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "7211:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 19415,
                              "nodeType": "ArrayTypeName",
                              "src": "7211:8:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19422,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "35",
                              "id": 19420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7252:1:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_5_by_1",
                                "typeString": "int_const 5"
                              },
                              "value": "5"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_5_by_1",
                                "typeString": "int_const 5"
                              }
                            ],
                            "id": 19419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "7239:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes4[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 19417,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "7243:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 19418,
                              "nodeType": "ArrayTypeName",
                              "src": "7243:8:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            }
                          },
                          "id": 19421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7239:15:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7211:43:61"
                      },
                      {
                        "expression": {
                          "id": 19429,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 19423,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19416,
                              "src": "7264:9:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 19425,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 19424,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7274:1:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7264:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 19426,
                                "name": "DiamondLoupeFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19467,
                                "src": "7279:17:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DiamondLoupeFacet_$19467_$",
                                  "typeString": "type(contract DiamondLoupeFacet)"
                                }
                              },
                              "id": 19427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "7297:6:61",
                              "memberName": "facets",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19172,
                              "src": "7279:24:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_view$__$returns$_t_array$_t_struct$_Facet_$20526_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function DiamondLoupeFacet.facets() view returns (struct IDiamondLoupe.Facet memory[] memory)"
                              }
                            },
                            "id": 19428,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "7304:8:61",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "7279:33:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "7264:48:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 19430,
                        "nodeType": "ExpressionStatement",
                        "src": "7264:48:61"
                      },
                      {
                        "expression": {
                          "id": 19437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 19431,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19416,
                              "src": "7322:9:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 19433,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 19432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7332:1:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7322:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 19434,
                                "name": "DiamondLoupeFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19467,
                                "src": "7337:17:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DiamondLoupeFacet_$19467_$",
                                  "typeString": "type(contract DiamondLoupeFacet)"
                                }
                              },
                              "id": 19435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "7355:12:61",
                              "memberName": "facetAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19383,
                              "src": "7337:30:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_view$_t_bytes4_$returns$_t_address_$",
                                "typeString": "function DiamondLoupeFacet.facetAddress(bytes4) view returns (address)"
                              }
                            },
                            "id": 19436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "7368:8:61",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "7337:39:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "7322:54:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 19438,
                        "nodeType": "ExpressionStatement",
                        "src": "7322:54:61"
                      },
                      {
                        "expression": {
                          "id": 19445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 19439,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19416,
                              "src": "7386:9:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 19441,
                            "indexExpression": {
                              "hexValue": "32",
                              "id": 19440,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7396:1:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7386:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 19442,
                                "name": "DiamondLoupeFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19467,
                                "src": "7401:17:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DiamondLoupeFacet_$19467_$",
                                  "typeString": "type(contract DiamondLoupeFacet)"
                                }
                              },
                              "id": 19443,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "7419:22:61",
                              "memberName": "facetFunctionSelectors",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19250,
                              "src": "7401:40:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_view$_t_address_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$",
                                "typeString": "function DiamondLoupeFacet.facetFunctionSelectors(address) view returns (bytes4[] memory)"
                              }
                            },
                            "id": 19444,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "7442:8:61",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "7401:49:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "7386:64:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 19446,
                        "nodeType": "ExpressionStatement",
                        "src": "7386:64:61"
                      },
                      {
                        "expression": {
                          "id": 19453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 19447,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19416,
                              "src": "7460:9:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 19449,
                            "indexExpression": {
                              "hexValue": "33",
                              "id": 19448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7470:1:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              },
                              "value": "3"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7460:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 19450,
                                "name": "DiamondLoupeFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19467,
                                "src": "7475:17:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DiamondLoupeFacet_$19467_$",
                                  "typeString": "type(contract DiamondLoupeFacet)"
                                }
                              },
                              "id": 19451,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "7493:14:61",
                              "memberName": "facetAddresses",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19356,
                              "src": "7475:32:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function DiamondLoupeFacet.facetAddresses() view returns (address[] memory)"
                              }
                            },
                            "id": 19452,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "7508:8:61",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "7475:41:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "7460:56:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 19454,
                        "nodeType": "ExpressionStatement",
                        "src": "7460:56:61"
                      },
                      {
                        "expression": {
                          "id": 19461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 19455,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19416,
                              "src": "7526:9:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 19457,
                            "indexExpression": {
                              "hexValue": "34",
                              "id": 19456,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7536:1:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7526:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 19458,
                                "name": "DiamondLoupeFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19467,
                                "src": "7541:17:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DiamondLoupeFacet_$19467_$",
                                  "typeString": "type(contract DiamondLoupeFacet)"
                                }
                              },
                              "id": 19459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "7559:17:61",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19406,
                              "src": "7541:35:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function DiamondLoupeFacet.supportsInterface(bytes4) view returns (bool)"
                              }
                            },
                            "id": 19460,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "7577:8:61",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "7541:44:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "7526:59:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 19462,
                        "nodeType": "ExpressionStatement",
                        "src": "7526:59:61"
                      },
                      {
                        "expression": {
                          "id": 19463,
                          "name": "selectors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19416,
                          "src": "7603:9:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "functionReturnParameters": 19411,
                        "id": 19464,
                        "nodeType": "Return",
                        "src": "7596:16:61"
                      }
                    ]
                  },
                  "functionSelector": "4b503f0b",
                  "id": 19466,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSelectors",
                  "nameLocation": "7146:12:61",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19407,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7158:2:61"
                  },
                  "returnParameters": {
                    "id": 19411,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19410,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 19466,
                        "src": "7184:15:61",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19408,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "7184:6:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 19409,
                          "nodeType": "ArrayTypeName",
                          "src": "7184:8:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7183:17:61"
                  },
                  "scope": 19467,
                  "src": "7137:482:61",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 19468,
              "src": "629:6992:61",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "40:7582:61"
        },
        "id": 61
      },
      "contracts/facets/ERC1155Facet.sol": {
        "ast": {
          "absolutePath": "contracts/facets/ERC1155Facet.sol",
          "exportedSymbols": {
            "Address": [
              1412
            ],
            "Context": [
              1442
            ],
            "ERC1155Facet": [
              20310
            ],
            "ERC165": [
              3050
            ],
            "IERC1155": [
              411
            ],
            "IERC1155Receiver": [
              453
            ],
            "IERC165": [
              3062
            ]
          },
          "id": 20311,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 19469,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:62"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
              "file": "@openzeppelin/contracts/utils/Context.sol",
              "id": 19471,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20311,
              "sourceUnit": 1443,
              "src": "66:68:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 19470,
                    "name": "Context",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1442,
                    "src": "75:7:62",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
              "file": "@openzeppelin/contracts/utils/Address.sol",
              "id": 19473,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20311,
              "sourceUnit": 1413,
              "src": "135:68:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 19472,
                    "name": "Address",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1412,
                    "src": "144:7:62",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "file": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "id": 19476,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20311,
              "sourceUnit": 3051,
              "src": "204:89:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 19474,
                    "name": "ERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3050,
                    "src": "213:6:62",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 19475,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3062,
                    "src": "221:7:62",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
              "id": 19478,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20311,
              "sourceUnit": 412,
              "src": "294:78:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 19477,
                    "name": "IERC1155",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 411,
                    "src": "303:8:62",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
              "id": 19480,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20311,
              "sourceUnit": 454,
              "src": "373:94:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 19479,
                    "name": "IERC1155Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 453,
                    "src": "382:16:62",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 19481,
                    "name": "Context",
                    "nameLocations": [
                      "494:7:62"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1442,
                    "src": "494:7:62"
                  },
                  "id": 19482,
                  "nodeType": "InheritanceSpecifier",
                  "src": "494:7:62"
                },
                {
                  "baseName": {
                    "id": 19483,
                    "name": "ERC165",
                    "nameLocations": [
                      "503:6:62"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3050,
                    "src": "503:6:62"
                  },
                  "id": 19484,
                  "nodeType": "InheritanceSpecifier",
                  "src": "503:6:62"
                },
                {
                  "baseName": {
                    "id": 19485,
                    "name": "IERC1155",
                    "nameLocations": [
                      "511:8:62"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 411,
                    "src": "511:8:62"
                  },
                  "id": 19486,
                  "nodeType": "InheritanceSpecifier",
                  "src": "511:8:62"
                }
              ],
              "canonicalName": "ERC1155Facet",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 20310,
              "linearizedBaseContracts": [
                20310,
                411,
                3050,
                3062,
                1442
              ],
              "name": "ERC1155Facet",
              "nameLocation": "478:12:62",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 19487,
                    "nodeType": "StructuredDocumentation",
                    "src": "526:159:62",
                    "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."
                  },
                  "errorSelector": "57f447ce",
                  "id": 19491,
                  "name": "ERC1155InvalidReceiver",
                  "nameLocation": "696:22:62",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 19490,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19489,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "727:8:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19491,
                        "src": "719:16:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19488,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "719:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "718:18:62"
                  },
                  "src": "690:47:62"
                },
                {
                  "global": false,
                  "id": 19494,
                  "libraryName": {
                    "id": 19492,
                    "name": "Address",
                    "nameLocations": [
                      "749:7:62"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1412,
                    "src": "749:7:62"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "743:26:62",
                  "typeName": {
                    "id": 19493,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "761:7:62",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 19500,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nameLocation": "831:9:62",
                  "nodeType": "VariableDeclaration",
                  "scope": 20310,
                  "src": "775:65:62",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(uint256 => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 19499,
                    "keyName": "",
                    "keyNameLocation": "-1:-1:-1",
                    "keyType": {
                      "id": 19495,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "783:7:62",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "775:47:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                    },
                    "valueName": "",
                    "valueNameLocation": "-1:-1:-1",
                    "valueType": {
                      "id": 19498,
                      "keyName": "",
                      "keyNameLocation": "-1:-1:-1",
                      "keyType": {
                        "id": 19496,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "802:7:62",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "794:27:62",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueName": "",
                      "valueNameLocation": "-1:-1:-1",
                      "valueType": {
                        "id": 19497,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "813:7:62",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 19506,
                  "mutability": "mutable",
                  "name": "_operatorApprovals",
                  "nameLocation": "899:18:62",
                  "nodeType": "VariableDeclaration",
                  "scope": 20310,
                  "src": "846:71:62",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 19505,
                    "keyName": "",
                    "keyNameLocation": "-1:-1:-1",
                    "keyType": {
                      "id": 19501,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "854:7:62",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "846:44:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueName": "",
                    "valueNameLocation": "-1:-1:-1",
                    "valueType": {
                      "id": 19504,
                      "keyName": "",
                      "keyNameLocation": "-1:-1:-1",
                      "keyType": {
                        "id": 19502,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "873:7:62",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "865:24:62",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueName": "",
                      "valueNameLocation": "-1:-1:-1",
                      "valueType": {
                        "id": 19503,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "884:4:62",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "baseFunctions": [
                    3049,
                    3061
                  ],
                  "body": {
                    "id": 19528,
                    "nodeType": "Block",
                    "src": "1032:105:62",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 19526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 19521,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 19516,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19508,
                              "src": "1049:11:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 19518,
                                    "name": "IERC1155",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 411,
                                    "src": "1069:8:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155_$411_$",
                                      "typeString": "type(contract IERC1155)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155_$411_$",
                                      "typeString": "type(contract IERC1155)"
                                    }
                                  ],
                                  "id": 19517,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1064:4:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 19519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1064:14:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155_$411",
                                  "typeString": "type(contract IERC1155)"
                                }
                              },
                              "id": 19520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1079:11:62",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1064:26:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1049:41:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 19524,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19508,
                                "src": "1118:11:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 19522,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1094:5:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_ERC1155Facet_$20310_$",
                                  "typeString": "type(contract super ERC1155Facet)"
                                }
                              },
                              "id": 19523,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1100:17:62",
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3049,
                              "src": "1094:23:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 19525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1094:36:62",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1049:81:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 19515,
                        "id": 19527,
                        "nodeType": "Return",
                        "src": "1042:88:62"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 19529,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "933:17:62",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19512,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 19510,
                        "name": "ERC165",
                        "nameLocations": [
                          "1000:6:62"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3050,
                        "src": "1000:6:62"
                      },
                      {
                        "id": 19511,
                        "name": "IERC165",
                        "nameLocations": [
                          "1008:7:62"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3062,
                        "src": "1008:7:62"
                      }
                    ],
                    "src": "991:25:62"
                  },
                  "parameters": {
                    "id": 19509,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19508,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "958:11:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19529,
                        "src": "951:18:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 19507,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "951:6:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "950:20:62"
                  },
                  "returnParameters": {
                    "id": 19515,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19514,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 19529,
                        "src": "1026:4:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 19513,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1026:4:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1025:6:62"
                  },
                  "scope": 20310,
                  "src": "924:213:62",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    349
                  ],
                  "body": {
                    "id": 19555,
                    "nodeType": "Block",
                    "src": "1232:133:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 19540,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19531,
                                "src": "1250:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 19543,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1269:1:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 19542,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1261:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19541,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1261:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 19544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1261:10:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1250:21:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373",
                              "id": 19546,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1273:45:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9",
                                "typeString": "literal_string \"ERC1155: balance query for the zero address\""
                              },
                              "value": "ERC1155: balance query for the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9",
                                "typeString": "literal_string \"ERC1155: balance query for the zero address\""
                              }
                            ],
                            "id": 19539,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1242:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1242:77:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19548,
                        "nodeType": "ExpressionStatement",
                        "src": "1242:77:62"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 19549,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19500,
                              "src": "1336:9:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 19551,
                            "indexExpression": {
                              "id": 19550,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19533,
                              "src": "1346:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1336:13:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 19553,
                          "indexExpression": {
                            "id": 19552,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19531,
                            "src": "1350:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1336:22:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 19538,
                        "id": 19554,
                        "nodeType": "Return",
                        "src": "1329:29:62"
                      }
                    ]
                  },
                  "functionSelector": "00fdd58e",
                  "id": 19556,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "1152:9:62",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19535,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1205:8:62"
                  },
                  "parameters": {
                    "id": 19534,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19531,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1170:7:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19556,
                        "src": "1162:15:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19530,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1162:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19533,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1187:2:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19556,
                        "src": "1179:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19532,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1179:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1161:29:62"
                  },
                  "returnParameters": {
                    "id": 19538,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19537,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 19556,
                        "src": "1223:7:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19536,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1223:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1222:9:62"
                  },
                  "scope": 20310,
                  "src": "1143:222:62",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    362
                  ],
                  "body": {
                    "id": 19619,
                    "nodeType": "Block",
                    "src": "1556:335:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19574,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 19570,
                                  "name": "accounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19559,
                                  "src": "1574:8:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 19571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1583:6:62",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "1574:15:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 19572,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19562,
                                  "src": "1593:3:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 19573,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1597:6:62",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "1593:10:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1574:29:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368",
                              "id": 19575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1605:43:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5",
                                "typeString": "literal_string \"ERC1155: accounts and ids length mismatch\""
                              },
                              "value": "ERC1155: accounts and ids length mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5",
                                "typeString": "literal_string \"ERC1155: accounts and ids length mismatch\""
                              }
                            ],
                            "id": 19569,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1566:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1566:83:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19577,
                        "nodeType": "ExpressionStatement",
                        "src": "1566:83:62"
                      },
                      {
                        "assignments": [
                          19582
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19582,
                            "mutability": "mutable",
                            "name": "batchBalances",
                            "nameLocation": "1677:13:62",
                            "nodeType": "VariableDeclaration",
                            "scope": 19619,
                            "src": "1660:30:62",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 19580,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1660:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19581,
                              "nodeType": "ArrayTypeName",
                              "src": "1660:9:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19589,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 19586,
                                "name": "accounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19559,
                                "src": "1707:8:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 19587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1716:6:62",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "1707:15:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19585,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1693:13:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 19583,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1697:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19584,
                              "nodeType": "ArrayTypeName",
                              "src": "1697:9:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 19588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1693:30:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1660:63:62"
                      },
                      {
                        "body": {
                          "id": 19615,
                          "nodeType": "Block",
                          "src": "1780:74:62",
                          "statements": [
                            {
                              "expression": {
                                "id": 19613,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 19601,
                                    "name": "batchBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19582,
                                    "src": "1794:13:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 19603,
                                  "indexExpression": {
                                    "id": 19602,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19591,
                                    "src": "1808:1:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1794:16:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 19604,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19500,
                                      "src": "1813:9:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 19608,
                                    "indexExpression": {
                                      "baseExpression": {
                                        "id": 19605,
                                        "name": "ids",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19562,
                                        "src": "1823:3:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 19607,
                                      "indexExpression": {
                                        "id": 19606,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19591,
                                        "src": "1827:1:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1823:6:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1813:17:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 19612,
                                  "indexExpression": {
                                    "baseExpression": {
                                      "id": 19609,
                                      "name": "accounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19559,
                                      "src": "1831:8:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 19611,
                                    "indexExpression": {
                                      "id": 19610,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19591,
                                      "src": "1840:1:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1831:11:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1813:30:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1794:49:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19614,
                              "nodeType": "ExpressionStatement",
                              "src": "1794:49:62"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19594,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19591,
                            "src": "1754:1:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 19595,
                              "name": "accounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19559,
                              "src": "1758:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 19596,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1767:6:62",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1758:15:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1754:19:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19616,
                        "initializationExpression": {
                          "assignments": [
                            19591
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 19591,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "1747:1:62",
                              "nodeType": "VariableDeclaration",
                              "scope": 19616,
                              "src": "1739:9:62",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 19590,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1739:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 19593,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 19592,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1751:1:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1739:13:62"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 19599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "1775:3:62",
                            "subExpression": {
                              "id": 19598,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19591,
                              "src": "1777:1:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19600,
                          "nodeType": "ExpressionStatement",
                          "src": "1775:3:62"
                        },
                        "nodeType": "ForStatement",
                        "src": "1734:120:62"
                      },
                      {
                        "expression": {
                          "id": 19617,
                          "name": "batchBalances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19582,
                          "src": "1871:13:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 19568,
                        "id": 19618,
                        "nodeType": "Return",
                        "src": "1864:20:62"
                      }
                    ]
                  },
                  "functionSelector": "4e1273f4",
                  "id": 19620,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nameLocation": "1380:14:62",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19564,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1508:8:62"
                  },
                  "parameters": {
                    "id": 19563,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19559,
                        "mutability": "mutable",
                        "name": "accounts",
                        "nameLocation": "1423:8:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19620,
                        "src": "1404:27:62",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19557,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1404:7:62",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 19558,
                          "nodeType": "ArrayTypeName",
                          "src": "1404:9:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19562,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "1460:3:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19620,
                        "src": "1441:22:62",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19560,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1441:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19561,
                          "nodeType": "ArrayTypeName",
                          "src": "1441:9:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1394:75:62"
                  },
                  "returnParameters": {
                    "id": 19568,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19567,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 19620,
                        "src": "1534:16:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19565,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1534:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19566,
                          "nodeType": "ArrayTypeName",
                          "src": "1534:9:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1533:18:62"
                  },
                  "scope": 20310,
                  "src": "1371:520:62",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    370
                  ],
                  "body": {
                    "id": 19635,
                    "nodeType": "Block",
                    "src": "1975:69:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 19629,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1424,
                                "src": "2004:10:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 19630,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2004:12:62",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19631,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19622,
                              "src": "2018:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19632,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19624,
                              "src": "2028:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 19628,
                            "name": "_setApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19958,
                            "src": "1985:18:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 19633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1985:52:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19634,
                        "nodeType": "ExpressionStatement",
                        "src": "1985:52:62"
                      }
                    ]
                  },
                  "functionSelector": "a22cb465",
                  "id": 19636,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "1906:17:62",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19626,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1966:8:62"
                  },
                  "parameters": {
                    "id": 19625,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19622,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1932:8:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19636,
                        "src": "1924:16:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19621,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1924:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19624,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "1947:8:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19636,
                        "src": "1942:13:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 19623,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1942:4:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1923:33:62"
                  },
                  "returnParameters": {
                    "id": 19627,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1975:0:62"
                  },
                  "scope": 20310,
                  "src": "1897:147:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    380
                  ],
                  "body": {
                    "id": 19652,
                    "nodeType": "Block",
                    "src": "2149:61:62",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 19646,
                              "name": "_operatorApprovals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19506,
                              "src": "2166:18:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(address => mapping(address => bool))"
                              }
                            },
                            "id": 19648,
                            "indexExpression": {
                              "id": 19647,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19638,
                              "src": "2185:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2166:27:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 19650,
                          "indexExpression": {
                            "id": 19649,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19640,
                            "src": "2194:8:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2166:37:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 19645,
                        "id": 19651,
                        "nodeType": "Return",
                        "src": "2159:44:62"
                      }
                    ]
                  },
                  "functionSelector": "e985e9c5",
                  "id": 19653,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nameLocation": "2059:16:62",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19642,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2125:8:62"
                  },
                  "parameters": {
                    "id": 19641,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19638,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2084:7:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19653,
                        "src": "2076:15:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19637,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2076:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19640,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "2101:8:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19653,
                        "src": "2093:16:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19639,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2093:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2075:35:62"
                  },
                  "returnParameters": {
                    "id": 19645,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19644,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 19653,
                        "src": "2143:4:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 19643,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2143:4:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2142:6:62"
                  },
                  "scope": 20310,
                  "src": "2050:160:62",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    394
                  ],
                  "body": {
                    "id": 19690,
                    "nodeType": "Block",
                    "src": "2401:210:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 19678,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 19671,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 19668,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19655,
                                  "src": "2432:4:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 19669,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1424,
                                    "src": "2440:10:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 19670,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2440:12:62",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2432:20:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 19672,
                                    "name": "_operatorApprovals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19506,
                                    "src": "2456:18:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                      "typeString": "mapping(address => mapping(address => bool))"
                                    }
                                  },
                                  "id": 19674,
                                  "indexExpression": {
                                    "id": 19673,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19655,
                                    "src": "2475:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2456:24:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 19677,
                                "indexExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 19675,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1424,
                                    "src": "2481:10:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 19676,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2481:12:62",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2456:38:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2432:62:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
                              "id": 19679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2496:43:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a",
                                "typeString": "literal_string \"ERC1155: caller is not owner nor approved\""
                              },
                              "value": "ERC1155: caller is not owner nor approved"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a",
                                "typeString": "literal_string \"ERC1155: caller is not owner nor approved\""
                              }
                            ],
                            "id": 19667,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2411:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2411:138:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19681,
                        "nodeType": "ExpressionStatement",
                        "src": "2411:138:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19683,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19655,
                              "src": "2577:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19684,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19657,
                              "src": "2583:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19685,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19659,
                              "src": "2587:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19686,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19661,
                              "src": "2591:6:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19687,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19663,
                              "src": "2599:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 19682,
                            "name": "_safeTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19811,
                            "src": "2559:17:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 19688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2559:45:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19689,
                        "nodeType": "ExpressionStatement",
                        "src": "2559:45:62"
                      }
                    ]
                  },
                  "functionSelector": "f242432a",
                  "id": 19691,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "2225:16:62",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19665,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2388:8:62"
                  },
                  "parameters": {
                    "id": 19664,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19655,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2259:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19691,
                        "src": "2251:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19654,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2251:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19657,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2281:2:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19691,
                        "src": "2273:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19656,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2273:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19659,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "2301:2:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19691,
                        "src": "2293:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19658,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2293:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19661,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2321:6:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19691,
                        "src": "2313:14:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19660,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2313:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19663,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2352:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19691,
                        "src": "2337:19:62",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 19662,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2337:5:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2241:121:62"
                  },
                  "returnParameters": {
                    "id": 19666,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2401:0:62"
                  },
                  "scope": 20310,
                  "src": "2216:395:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    410
                  ],
                  "body": {
                    "id": 19730,
                    "nodeType": "Block",
                    "src": "2831:238:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 19718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 19711,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 19708,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19693,
                                  "src": "2862:4:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 19709,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1424,
                                    "src": "2870:10:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 19710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2870:12:62",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2862:20:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 19712,
                                    "name": "_operatorApprovals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19506,
                                    "src": "2886:18:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                      "typeString": "mapping(address => mapping(address => bool))"
                                    }
                                  },
                                  "id": 19714,
                                  "indexExpression": {
                                    "id": 19713,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19693,
                                    "src": "2905:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2886:24:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 19717,
                                "indexExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 19715,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1424,
                                    "src": "2911:10:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 19716,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2911:12:62",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2886:38:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2862:62:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
                              "id": 19719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2938:52:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686",
                                "typeString": "literal_string \"ERC1155: transfer caller is not owner nor approved\""
                              },
                              "value": "ERC1155: transfer caller is not owner nor approved"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686",
                                "typeString": "literal_string \"ERC1155: transfer caller is not owner nor approved\""
                              }
                            ],
                            "id": 19707,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2841:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2841:159:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19721,
                        "nodeType": "ExpressionStatement",
                        "src": "2841:159:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19723,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19693,
                              "src": "3033:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19724,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19695,
                              "src": "3039:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19725,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19698,
                              "src": "3043:3:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 19726,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19701,
                              "src": "3048:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 19727,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19703,
                              "src": "3057:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 19722,
                            "name": "_safeBatchTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19927,
                            "src": "3010:22:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 19728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3010:52:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19729,
                        "nodeType": "ExpressionStatement",
                        "src": "3010:52:62"
                      }
                    ]
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 19731,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nameLocation": "2626:21:62",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19705,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2818:8:62"
                  },
                  "parameters": {
                    "id": 19704,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19693,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2665:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19731,
                        "src": "2657:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19692,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2657:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19695,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2687:2:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19731,
                        "src": "2679:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19694,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2679:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19698,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "2718:3:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19731,
                        "src": "2699:22:62",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19696,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2699:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19697,
                          "nodeType": "ArrayTypeName",
                          "src": "2699:9:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19701,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "2750:7:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19731,
                        "src": "2731:26:62",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19699,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2731:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19700,
                          "nodeType": "ArrayTypeName",
                          "src": "2731:9:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19703,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2782:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19731,
                        "src": "2767:19:62",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 19702,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2767:5:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2647:145:62"
                  },
                  "returnParameters": {
                    "id": 19706,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2831:0:62"
                  },
                  "scope": 20310,
                  "src": "2617:452:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 19810,
                    "nodeType": "Block",
                    "src": "3184:526:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 19745,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19735,
                                "src": "3202:2:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 19748,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3216:1:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 19747,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3208:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19746,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3208:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 19749,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3208:10:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3202:16:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "id": 19751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3220:39:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                                "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                              },
                              "value": "ERC1155: transfer to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                                "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                              }
                            ],
                            "id": 19744,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3194:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3194:66:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19753,
                        "nodeType": "ExpressionStatement",
                        "src": "3194:66:62"
                      },
                      {
                        "assignments": [
                          19755
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19755,
                            "mutability": "mutable",
                            "name": "operator",
                            "nameLocation": "3279:8:62",
                            "nodeType": "VariableDeclaration",
                            "scope": 19810,
                            "src": "3271:16:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19754,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3271:7:62",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19758,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 19756,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1424,
                            "src": "3290:10:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 19757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3290:12:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3271:31:62"
                      },
                      {
                        "assignments": [
                          19760
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19760,
                            "mutability": "mutable",
                            "name": "fromBalance",
                            "nameLocation": "3320:11:62",
                            "nodeType": "VariableDeclaration",
                            "scope": 19810,
                            "src": "3312:19:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19759,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3312:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19766,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 19761,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19500,
                              "src": "3334:9:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 19763,
                            "indexExpression": {
                              "id": 19762,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19737,
                              "src": "3344:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3334:13:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 19765,
                          "indexExpression": {
                            "id": 19764,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19733,
                            "src": "3348:4:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3334:19:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3312:41:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19770,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 19768,
                                "name": "fromBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19760,
                                "src": "3371:11:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 19769,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19739,
                                "src": "3386:6:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3371:21:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572",
                              "id": 19771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3394:44:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                              },
                              "value": "ERC1155: insufficient balance for transfer"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                              }
                            ],
                            "id": 19767,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3363:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3363:76:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19773,
                        "nodeType": "ExpressionStatement",
                        "src": "3363:76:62"
                      },
                      {
                        "id": 19784,
                        "nodeType": "UncheckedBlock",
                        "src": "3449:77:62",
                        "statements": [
                          {
                            "expression": {
                              "id": 19782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 19774,
                                    "name": "_balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19500,
                                    "src": "3473:9:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 19777,
                                  "indexExpression": {
                                    "id": 19775,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19737,
                                    "src": "3483:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3473:13:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 19778,
                                "indexExpression": {
                                  "id": 19776,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19733,
                                  "src": "3487:4:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "3473:19:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 19779,
                                  "name": "fromBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19760,
                                  "src": "3495:11:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 19780,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19739,
                                  "src": "3509:6:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3495:20:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3473:42:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 19783,
                            "nodeType": "ExpressionStatement",
                            "src": "3473:42:62"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 19791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 19785,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19500,
                                "src": "3535:9:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 19788,
                              "indexExpression": {
                                "id": 19786,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19737,
                                "src": "3545:2:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3535:13:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 19789,
                            "indexExpression": {
                              "id": 19787,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19735,
                              "src": "3549:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3535:17:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 19790,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19739,
                            "src": "3556:6:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3535:27:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19792,
                        "nodeType": "ExpressionStatement",
                        "src": "3535:27:62"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 19794,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19755,
                              "src": "3593:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19795,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19733,
                              "src": "3603:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19796,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19735,
                              "src": "3609:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19797,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19737,
                              "src": "3613:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19798,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19739,
                              "src": "3617:6:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19793,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 308,
                            "src": "3578:14:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 19799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3578:46:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19800,
                        "nodeType": "EmitStatement",
                        "src": "3573:51:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19802,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19755,
                              "src": "3666:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19803,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19733,
                              "src": "3676:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19804,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19735,
                              "src": "3682:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19805,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19737,
                              "src": "3686:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19806,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19739,
                              "src": "3690:6:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19807,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19741,
                              "src": "3698:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 19801,
                            "name": "_doSafeTransferAcceptanceCheck",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20025,
                            "src": "3635:30:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 19808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3635:68:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19809,
                        "nodeType": "ExpressionStatement",
                        "src": "3635:68:62"
                      }
                    ]
                  },
                  "id": 19811,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeTransferFrom",
                  "nameLocation": "3084:17:62",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19742,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19733,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "3110:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19811,
                        "src": "3102:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19732,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3102:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19735,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3124:2:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19811,
                        "src": "3116:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19734,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3116:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19737,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "3136:2:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19811,
                        "src": "3128:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19736,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3128:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19739,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "3148:6:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19811,
                        "src": "3140:14:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19738,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3140:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19741,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3169:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19811,
                        "src": "3156:17:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 19740,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3156:5:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3101:73:62"
                  },
                  "returnParameters": {
                    "id": 19743,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3184:0:62"
                  },
                  "scope": 20310,
                  "src": "3075:635:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19926,
                    "nodeType": "Block",
                    "src": "3908:786:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 19827,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19818,
                                  "src": "3926:3:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 19828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3930:6:62",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "3926:10:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 19829,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19821,
                                  "src": "3940:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 19830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3948:6:62",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "3940:14:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3926:28:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368",
                              "id": 19832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3956:42:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                                "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                              },
                              "value": "ERC1155: ids and amounts length mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                                "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                              }
                            ],
                            "id": 19826,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3918:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3918:81:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19834,
                        "nodeType": "ExpressionStatement",
                        "src": "3918:81:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19841,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 19836,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19815,
                                "src": "4017:2:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 19839,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4031:1:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 19838,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4023:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19837,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4023:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 19840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4023:10:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4017:16:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "id": 19842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4035:39:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                                "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                              },
                              "value": "ERC1155: transfer to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                                "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                              }
                            ],
                            "id": 19835,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4009:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19843,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4009:66:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19844,
                        "nodeType": "ExpressionStatement",
                        "src": "4009:66:62"
                      },
                      {
                        "assignments": [
                          19846
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19846,
                            "mutability": "mutable",
                            "name": "operator",
                            "nameLocation": "4094:8:62",
                            "nodeType": "VariableDeclaration",
                            "scope": 19926,
                            "src": "4086:16:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19845,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4086:7:62",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19849,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 19847,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1424,
                            "src": "4105:10:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 19848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4105:12:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4086:31:62"
                      },
                      {
                        "body": {
                          "id": 19907,
                          "nodeType": "Block",
                          "src": "4169:370:62",
                          "statements": [
                            {
                              "assignments": [
                                19862
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19862,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nameLocation": "4191:2:62",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19907,
                                  "src": "4183:10:62",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 19861,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4183:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19866,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 19863,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19818,
                                  "src": "4196:3:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 19865,
                                "indexExpression": {
                                  "id": 19864,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19851,
                                  "src": "4200:1:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4196:6:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4183:19:62"
                            },
                            {
                              "assignments": [
                                19868
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19868,
                                  "mutability": "mutable",
                                  "name": "amount",
                                  "nameLocation": "4224:6:62",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19907,
                                  "src": "4216:14:62",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 19867,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4216:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19872,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 19869,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19821,
                                  "src": "4233:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 19871,
                                "indexExpression": {
                                  "id": 19870,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19851,
                                  "src": "4241:1:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4233:10:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4216:27:62"
                            },
                            {
                              "assignments": [
                                19874
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19874,
                                  "mutability": "mutable",
                                  "name": "fromBalance",
                                  "nameLocation": "4266:11:62",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19907,
                                  "src": "4258:19:62",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 19873,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4258:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19880,
                              "initialValue": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 19875,
                                    "name": "_balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19500,
                                    "src": "4280:9:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 19877,
                                  "indexExpression": {
                                    "id": 19876,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19862,
                                    "src": "4290:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4280:13:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 19879,
                                "indexExpression": {
                                  "id": 19878,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19813,
                                  "src": "4294:4:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4280:19:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4258:41:62"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 19884,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 19882,
                                      "name": "fromBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19874,
                                      "src": "4321:11:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 19883,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19868,
                                      "src": "4336:6:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4321:21:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572",
                                    "id": 19885,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4344:44:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                      "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                                    },
                                    "value": "ERC1155: insufficient balance for transfer"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                      "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                                    }
                                  ],
                                  "id": 19881,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "4313:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 19886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4313:76:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19887,
                              "nodeType": "ExpressionStatement",
                              "src": "4313:76:62"
                            },
                            {
                              "id": 19898,
                              "nodeType": "UncheckedBlock",
                              "src": "4403:85:62",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 19896,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "baseExpression": {
                                          "id": 19888,
                                          "name": "_balances",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19500,
                                          "src": "4431:9:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                                          }
                                        },
                                        "id": 19891,
                                        "indexExpression": {
                                          "id": 19889,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19862,
                                          "src": "4441:2:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4431:13:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 19892,
                                      "indexExpression": {
                                        "id": 19890,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19813,
                                        "src": "4445:4:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "4431:19:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19895,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 19893,
                                        "name": "fromBalance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19874,
                                        "src": "4453:11:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 19894,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19868,
                                        "src": "4467:6:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4453:20:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4431:42:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 19897,
                                  "nodeType": "ExpressionStatement",
                                  "src": "4431:42:62"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "id": 19905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 19899,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19500,
                                      "src": "4501:9:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 19902,
                                    "indexExpression": {
                                      "id": 19900,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19862,
                                      "src": "4511:2:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4501:13:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 19903,
                                  "indexExpression": {
                                    "id": 19901,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19815,
                                    "src": "4515:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4501:17:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 19904,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19868,
                                  "src": "4522:6:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4501:27:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19906,
                              "nodeType": "ExpressionStatement",
                              "src": "4501:27:62"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19854,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19851,
                            "src": "4148:1:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 19855,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19818,
                              "src": "4152:3:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 19856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4156:6:62",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "4152:10:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4148:14:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19908,
                        "initializationExpression": {
                          "assignments": [
                            19851
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 19851,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "4141:1:62",
                              "nodeType": "VariableDeclaration",
                              "scope": 19908,
                              "src": "4133:9:62",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 19850,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4133:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 19853,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 19852,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4145:1:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4133:13:62"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 19859,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "4164:3:62",
                            "subExpression": {
                              "id": 19858,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19851,
                              "src": "4166:1:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19860,
                          "nodeType": "ExpressionStatement",
                          "src": "4164:3:62"
                        },
                        "nodeType": "ForStatement",
                        "src": "4128:411:62"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 19910,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19846,
                              "src": "4568:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19911,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19813,
                              "src": "4578:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19912,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19815,
                              "src": "4584:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19913,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19818,
                              "src": "4588:3:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 19914,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19821,
                              "src": "4593:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 19909,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 323,
                            "src": "4554:13:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 19915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4554:47:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19916,
                        "nodeType": "EmitStatement",
                        "src": "4549:52:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19918,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19846,
                              "src": "4648:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19919,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19813,
                              "src": "4658:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19920,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19815,
                              "src": "4664:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19921,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19818,
                              "src": "4668:3:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 19922,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19821,
                              "src": "4673:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 19923,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19823,
                              "src": "4682:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 19917,
                            "name": "_doSafeBatchTransferAcceptanceCheck",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20094,
                            "src": "4612:35:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 19924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4612:75:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19925,
                        "nodeType": "ExpressionStatement",
                        "src": "4612:75:62"
                      }
                    ]
                  },
                  "id": 19927,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeBatchTransferFrom",
                  "nameLocation": "3725:22:62",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19824,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19813,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "3765:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19927,
                        "src": "3757:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19812,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3757:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19815,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3787:2:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19927,
                        "src": "3779:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19814,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3779:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19818,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "3816:3:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19927,
                        "src": "3799:20:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19816,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3799:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19817,
                          "nodeType": "ArrayTypeName",
                          "src": "3799:9:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19821,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "3846:7:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19927,
                        "src": "3829:24:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19819,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3829:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19820,
                          "nodeType": "ArrayTypeName",
                          "src": "3829:9:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19823,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3876:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19927,
                        "src": "3863:17:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 19822,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3863:5:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3747:139:62"
                  },
                  "returnParameters": {
                    "id": 19825,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3908:0:62"
                  },
                  "scope": 20310,
                  "src": "3716:978:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19957,
                    "nodeType": "Block",
                    "src": "4785:200:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19939,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 19937,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19929,
                                "src": "4803:5:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 19938,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19931,
                                "src": "4812:8:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4803:17:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66",
                              "id": 19940,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4822:43:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2",
                                "typeString": "literal_string \"ERC1155: setting approval status for self\""
                              },
                              "value": "ERC1155: setting approval status for self"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2",
                                "typeString": "literal_string \"ERC1155: setting approval status for self\""
                              }
                            ],
                            "id": 19936,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4795:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4795:71:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19942,
                        "nodeType": "ExpressionStatement",
                        "src": "4795:71:62"
                      },
                      {
                        "expression": {
                          "id": 19949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 19943,
                                "name": "_operatorApprovals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19506,
                                "src": "4876:18:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 19946,
                              "indexExpression": {
                                "id": 19944,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19929,
                                "src": "4895:5:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4876:25:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 19947,
                            "indexExpression": {
                              "id": 19945,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19931,
                              "src": "4902:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4876:35:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 19948,
                            "name": "approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19933,
                            "src": "4914:8:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4876:46:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19950,
                        "nodeType": "ExpressionStatement",
                        "src": "4876:46:62"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 19952,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19929,
                              "src": "4952:5:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19953,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19931,
                              "src": "4959:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19954,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19933,
                              "src": "4969:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 19951,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 332,
                            "src": "4937:14:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 19955,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4937:41:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19956,
                        "nodeType": "EmitStatement",
                        "src": "4932:46:62"
                      }
                    ]
                  },
                  "id": 19958,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setApprovalForAll",
                  "nameLocation": "4709:18:62",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19934,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19929,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "4736:5:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19958,
                        "src": "4728:13:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19928,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4728:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19931,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "4751:8:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19958,
                        "src": "4743:16:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19930,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4743:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19933,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "4766:8:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 19958,
                        "src": "4761:13:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 19932,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4761:4:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4727:48:62"
                  },
                  "returnParameters": {
                    "id": 19935,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4785:0:62"
                  },
                  "scope": 20310,
                  "src": "4700:285:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20024,
                    "nodeType": "Block",
                    "src": "5195:782:62",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19977,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "id": 19973,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19964,
                                "src": "5209:2:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 19974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5212:4:62",
                              "memberName": "code",
                              "nodeType": "MemberAccess",
                              "src": "5209:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 19975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5217:6:62",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "5209:14:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 19976,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5226:1:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5209:18:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20023,
                        "nodeType": "IfStatement",
                        "src": "5205:766:62",
                        "trueBody": {
                          "id": 20022,
                          "nodeType": "Block",
                          "src": "5229:742:62",
                          "statements": [
                            {
                              "clauses": [
                                {
                                  "block": {
                                    "id": 20002,
                                    "nodeType": "Block",
                                    "src": "5345:206:62",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "id": 19995,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 19991,
                                            "name": "response",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19989,
                                            "src": "5367:8:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "expression": {
                                              "expression": {
                                                "id": 19992,
                                                "name": "IERC1155Receiver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 453,
                                                "src": "5379:16:62",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$453_$",
                                                  "typeString": "type(contract IERC1155Receiver)"
                                                }
                                              },
                                              "id": 19993,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberLocation": "5396:17:62",
                                              "memberName": "onERC1155Received",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 434,
                                              "src": "5379:34:62",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function IERC1155Receiver.onERC1155Received(address,address,uint256,uint256,bytes calldata) returns (bytes4)"
                                              }
                                            },
                                            "id": 19994,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "5414:8:62",
                                            "memberName": "selector",
                                            "nodeType": "MemberAccess",
                                            "src": "5379:43:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "src": "5367:55:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 20001,
                                        "nodeType": "IfStatement",
                                        "src": "5363:174:62",
                                        "trueBody": {
                                          "id": 20000,
                                          "nodeType": "Block",
                                          "src": "5424:113:62",
                                          "statements": [
                                            {
                                              "errorCall": {
                                                "arguments": [
                                                  {
                                                    "id": 19997,
                                                    "name": "to",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 19964,
                                                    "src": "5515:2:62",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 19996,
                                                  "name": "ERC1155InvalidReceiver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19491,
                                                  "src": "5492:22:62",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                                    "typeString": "function (address) pure returns (error)"
                                                  }
                                                },
                                                "id": 19998,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5492:26:62",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_error",
                                                  "typeString": "error"
                                                }
                                              },
                                              "id": 19999,
                                              "nodeType": "RevertStatement",
                                              "src": "5485:33:62"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 20003,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 19990,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 19989,
                                        "mutability": "mutable",
                                        "name": "response",
                                        "nameLocation": "5335:8:62",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 20003,
                                        "src": "5328:15:62",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        "typeName": {
                                          "id": 19988,
                                          "name": "bytes4",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5328:6:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "5327:17:62"
                                  },
                                  "src": "5319:232:62"
                                },
                                {
                                  "block": {
                                    "id": 20019,
                                    "nodeType": "Block",
                                    "src": "5580:381:62",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 20010,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 20007,
                                              "name": "reason",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 20005,
                                              "src": "5602:6:62",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 20008,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "5609:6:62",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "5602:13:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 20009,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5619:1:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "5602:18:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": {
                                          "id": 20017,
                                          "nodeType": "Block",
                                          "src": "5757:190:62",
                                          "statements": [
                                            {
                                              "AST": {
                                                "nativeSrc": "5843:86:62",
                                                "nodeType": "YulBlock",
                                                "src": "5843:86:62",
                                                "statements": [
                                                  {
                                                    "expression": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "kind": "number",
                                                              "nativeSrc": "5880:2:62",
                                                              "nodeType": "YulLiteral",
                                                              "src": "5880:2:62",
                                                              "type": "",
                                                              "value": "32"
                                                            },
                                                            {
                                                              "name": "reason",
                                                              "nativeSrc": "5884:6:62",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "5884:6:62"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "add",
                                                            "nativeSrc": "5876:3:62",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5876:3:62"
                                                          },
                                                          "nativeSrc": "5876:15:62",
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "5876:15:62"
                                                        },
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "reason",
                                                              "nativeSrc": "5899:6:62",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "5899:6:62"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "mload",
                                                            "nativeSrc": "5893:5:62",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5893:5:62"
                                                          },
                                                          "nativeSrc": "5893:13:62",
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "5893:13:62"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "revert",
                                                        "nativeSrc": "5869:6:62",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5869:6:62"
                                                      },
                                                      "nativeSrc": "5869:38:62",
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "5869:38:62"
                                                    },
                                                    "nativeSrc": "5869:38:62",
                                                    "nodeType": "YulExpressionStatement",
                                                    "src": "5869:38:62"
                                                  }
                                                ]
                                              },
                                              "documentation": "@solidity memory-safe-assembly",
                                              "evmVersion": "paris",
                                              "externalReferences": [
                                                {
                                                  "declaration": 20005,
                                                  "isOffset": false,
                                                  "isSlot": false,
                                                  "src": "5884:6:62",
                                                  "valueSize": 1
                                                },
                                                {
                                                  "declaration": 20005,
                                                  "isOffset": false,
                                                  "isSlot": false,
                                                  "src": "5899:6:62",
                                                  "valueSize": 1
                                                }
                                              ],
                                              "id": 20016,
                                              "nodeType": "InlineAssembly",
                                              "src": "5834:95:62"
                                            }
                                          ]
                                        },
                                        "id": 20018,
                                        "nodeType": "IfStatement",
                                        "src": "5598:349:62",
                                        "trueBody": {
                                          "id": 20015,
                                          "nodeType": "Block",
                                          "src": "5622:129:62",
                                          "statements": [
                                            {
                                              "errorCall": {
                                                "arguments": [
                                                  {
                                                    "id": 20012,
                                                    "name": "to",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 19964,
                                                    "src": "5729:2:62",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 20011,
                                                  "name": "ERC1155InvalidReceiver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19491,
                                                  "src": "5706:22:62",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                                    "typeString": "function (address) pure returns (error)"
                                                  }
                                                },
                                                "id": 20013,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5706:26:62",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_error",
                                                  "typeString": "error"
                                                }
                                              },
                                              "id": 20014,
                                              "nodeType": "RevertStatement",
                                              "src": "5699:33:62"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 20020,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 20006,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 20005,
                                        "mutability": "mutable",
                                        "name": "reason",
                                        "nameLocation": "5572:6:62",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 20020,
                                        "src": "5559:19:62",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes"
                                        },
                                        "typeName": {
                                          "id": 20004,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5559:5:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "5558:21:62"
                                  },
                                  "src": "5552:409:62"
                                }
                              ],
                              "externalCall": {
                                "arguments": [
                                  {
                                    "id": 19982,
                                    "name": "operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19960,
                                    "src": "5286:8:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19983,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19962,
                                    "src": "5296:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19984,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19966,
                                    "src": "5302:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 19985,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19968,
                                    "src": "5306:5:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 19986,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19970,
                                    "src": "5313:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 19979,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19964,
                                        "src": "5264:2:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 19978,
                                      "name": "IERC1155Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 453,
                                      "src": "5247:16:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$453_$",
                                        "typeString": "type(contract IERC1155Receiver)"
                                      }
                                    },
                                    "id": 19980,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5247:20:62",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155Receiver_$453",
                                      "typeString": "contract IERC1155Receiver"
                                    }
                                  },
                                  "id": 19981,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5268:17:62",
                                  "memberName": "onERC1155Received",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 434,
                                  "src": "5247:38:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 19987,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5247:71:62",
                                "tryCall": true,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 20021,
                              "nodeType": "TryStatement",
                              "src": "5243:718:62"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 20025,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_doSafeTransferAcceptanceCheck",
                  "nameLocation": "5000:30:62",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19971,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19960,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "5048:8:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20025,
                        "src": "5040:16:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19959,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5040:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19962,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "5074:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20025,
                        "src": "5066:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19961,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5066:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19964,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5096:2:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20025,
                        "src": "5088:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19963,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5088:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19966,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "5116:2:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20025,
                        "src": "5108:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19965,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5108:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19968,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5136:5:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20025,
                        "src": "5128:13:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19967,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5128:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19970,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5164:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20025,
                        "src": "5151:17:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 19969,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5151:5:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5030:144:62"
                  },
                  "returnParameters": {
                    "id": 19972,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5195:0:62"
                  },
                  "scope": 20310,
                  "src": "4991:986:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 20093,
                    "nodeType": "Block",
                    "src": "6212:806:62",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "id": 20042,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20031,
                                "src": "6226:2:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 20043,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6229:4:62",
                              "memberName": "code",
                              "nodeType": "MemberAccess",
                              "src": "6226:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 20044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6234:6:62",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "6226:14:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 20045,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6243:1:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6226:18:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20092,
                        "nodeType": "IfStatement",
                        "src": "6222:790:62",
                        "trueBody": {
                          "id": 20091,
                          "nodeType": "Block",
                          "src": "6246:766:62",
                          "statements": [
                            {
                              "clauses": [
                                {
                                  "block": {
                                    "id": 20071,
                                    "nodeType": "Block",
                                    "src": "6381:211:62",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "id": 20064,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 20060,
                                            "name": "response",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20058,
                                            "src": "6403:8:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "expression": {
                                              "expression": {
                                                "id": 20061,
                                                "name": "IERC1155Receiver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 453,
                                                "src": "6415:16:62",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$453_$",
                                                  "typeString": "type(contract IERC1155Receiver)"
                                                }
                                              },
                                              "id": 20062,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberLocation": "6432:22:62",
                                              "memberName": "onERC1155BatchReceived",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 452,
                                              "src": "6415:39:62",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function IERC1155Receiver.onERC1155BatchReceived(address,address,uint256[] calldata,uint256[] calldata,bytes calldata) returns (bytes4)"
                                              }
                                            },
                                            "id": 20063,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "6455:8:62",
                                            "memberName": "selector",
                                            "nodeType": "MemberAccess",
                                            "src": "6415:48:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "src": "6403:60:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 20070,
                                        "nodeType": "IfStatement",
                                        "src": "6399:179:62",
                                        "trueBody": {
                                          "id": 20069,
                                          "nodeType": "Block",
                                          "src": "6465:113:62",
                                          "statements": [
                                            {
                                              "errorCall": {
                                                "arguments": [
                                                  {
                                                    "id": 20066,
                                                    "name": "to",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 20031,
                                                    "src": "6556:2:62",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 20065,
                                                  "name": "ERC1155InvalidReceiver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19491,
                                                  "src": "6533:22:62",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                                    "typeString": "function (address) pure returns (error)"
                                                  }
                                                },
                                                "id": 20067,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6533:26:62",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_error",
                                                  "typeString": "error"
                                                }
                                              },
                                              "id": 20068,
                                              "nodeType": "RevertStatement",
                                              "src": "6526:33:62"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 20072,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 20059,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 20058,
                                        "mutability": "mutable",
                                        "name": "response",
                                        "nameLocation": "6359:8:62",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 20072,
                                        "src": "6352:15:62",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        "typeName": {
                                          "id": 20057,
                                          "name": "bytes4",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6352:6:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "6351:17:62"
                                  },
                                  "src": "6343:249:62"
                                },
                                {
                                  "block": {
                                    "id": 20088,
                                    "nodeType": "Block",
                                    "src": "6621:381:62",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 20079,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 20076,
                                              "name": "reason",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 20074,
                                              "src": "6643:6:62",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 20077,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "6650:6:62",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "6643:13:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 20078,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6660:1:62",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "6643:18:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": {
                                          "id": 20086,
                                          "nodeType": "Block",
                                          "src": "6798:190:62",
                                          "statements": [
                                            {
                                              "AST": {
                                                "nativeSrc": "6884:86:62",
                                                "nodeType": "YulBlock",
                                                "src": "6884:86:62",
                                                "statements": [
                                                  {
                                                    "expression": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "kind": "number",
                                                              "nativeSrc": "6921:2:62",
                                                              "nodeType": "YulLiteral",
                                                              "src": "6921:2:62",
                                                              "type": "",
                                                              "value": "32"
                                                            },
                                                            {
                                                              "name": "reason",
                                                              "nativeSrc": "6925:6:62",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "6925:6:62"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "add",
                                                            "nativeSrc": "6917:3:62",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6917:3:62"
                                                          },
                                                          "nativeSrc": "6917:15:62",
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "6917:15:62"
                                                        },
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "reason",
                                                              "nativeSrc": "6940:6:62",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "6940:6:62"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "mload",
                                                            "nativeSrc": "6934:5:62",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6934:5:62"
                                                          },
                                                          "nativeSrc": "6934:13:62",
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "6934:13:62"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "revert",
                                                        "nativeSrc": "6910:6:62",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6910:6:62"
                                                      },
                                                      "nativeSrc": "6910:38:62",
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "6910:38:62"
                                                    },
                                                    "nativeSrc": "6910:38:62",
                                                    "nodeType": "YulExpressionStatement",
                                                    "src": "6910:38:62"
                                                  }
                                                ]
                                              },
                                              "documentation": "@solidity memory-safe-assembly",
                                              "evmVersion": "paris",
                                              "externalReferences": [
                                                {
                                                  "declaration": 20074,
                                                  "isOffset": false,
                                                  "isSlot": false,
                                                  "src": "6925:6:62",
                                                  "valueSize": 1
                                                },
                                                {
                                                  "declaration": 20074,
                                                  "isOffset": false,
                                                  "isSlot": false,
                                                  "src": "6940:6:62",
                                                  "valueSize": 1
                                                }
                                              ],
                                              "id": 20085,
                                              "nodeType": "InlineAssembly",
                                              "src": "6875:95:62"
                                            }
                                          ]
                                        },
                                        "id": 20087,
                                        "nodeType": "IfStatement",
                                        "src": "6639:349:62",
                                        "trueBody": {
                                          "id": 20084,
                                          "nodeType": "Block",
                                          "src": "6663:129:62",
                                          "statements": [
                                            {
                                              "errorCall": {
                                                "arguments": [
                                                  {
                                                    "id": 20081,
                                                    "name": "to",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 20031,
                                                    "src": "6770:2:62",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 20080,
                                                  "name": "ERC1155InvalidReceiver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19491,
                                                  "src": "6747:22:62",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                                    "typeString": "function (address) pure returns (error)"
                                                  }
                                                },
                                                "id": 20082,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6747:26:62",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_error",
                                                  "typeString": "error"
                                                }
                                              },
                                              "id": 20083,
                                              "nodeType": "RevertStatement",
                                              "src": "6740:33:62"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 20089,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 20075,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 20074,
                                        "mutability": "mutable",
                                        "name": "reason",
                                        "nameLocation": "6613:6:62",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 20089,
                                        "src": "6600:19:62",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes"
                                        },
                                        "typeName": {
                                          "id": 20073,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6600:5:62",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "6599:21:62"
                                  },
                                  "src": "6593:409:62"
                                }
                              ],
                              "externalCall": {
                                "arguments": [
                                  {
                                    "id": 20051,
                                    "name": "operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20027,
                                    "src": "6308:8:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 20052,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20029,
                                    "src": "6318:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 20053,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20034,
                                    "src": "6324:3:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 20054,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20037,
                                    "src": "6329:6:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 20055,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20039,
                                    "src": "6337:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 20048,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20031,
                                        "src": "6281:2:62",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 20047,
                                      "name": "IERC1155Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 453,
                                      "src": "6264:16:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$453_$",
                                        "typeString": "type(contract IERC1155Receiver)"
                                      }
                                    },
                                    "id": 20049,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6264:20:62",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155Receiver_$453",
                                      "typeString": "contract IERC1155Receiver"
                                    }
                                  },
                                  "id": 20050,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6285:22:62",
                                  "memberName": "onERC1155BatchReceived",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 452,
                                  "src": "6264:43:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 20056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6264:78:62",
                                "tryCall": true,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 20090,
                              "nodeType": "TryStatement",
                              "src": "6260:742:62"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 20094,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_doSafeBatchTransferAcceptanceCheck",
                  "nameLocation": "5992:35:62",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20040,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20027,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "6045:8:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20094,
                        "src": "6037:16:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20026,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6037:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20029,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "6071:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20094,
                        "src": "6063:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20028,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6063:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20031,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "6093:2:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20094,
                        "src": "6085:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20030,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6085:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20034,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "6122:3:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20094,
                        "src": "6105:20:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20032,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6105:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 20033,
                          "nodeType": "ArrayTypeName",
                          "src": "6105:9:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20037,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "6152:6:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20094,
                        "src": "6135:23:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20035,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6135:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 20036,
                          "nodeType": "ArrayTypeName",
                          "src": "6135:9:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20039,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6181:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20094,
                        "src": "6168:17:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 20038,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6168:5:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6027:164:62"
                  },
                  "returnParameters": {
                    "id": 20041,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6212:0:62"
                  },
                  "scope": 20310,
                  "src": "5983:1035:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 20151,
                    "nodeType": "Block",
                    "src": "7160:311:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 20111,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 20106,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20096,
                                "src": "7178:2:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 20109,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7192:1:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 20108,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7184:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 20107,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7184:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 20110,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7184:10:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7178:16:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a206d696e7420746f20746865207a65726f2061646472657373",
                              "id": 20112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7196:35:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2",
                                "typeString": "literal_string \"ERC1155: mint to the zero address\""
                              },
                              "value": "ERC1155: mint to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2",
                                "typeString": "literal_string \"ERC1155: mint to the zero address\""
                              }
                            ],
                            "id": 20105,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7170:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7170:62:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20114,
                        "nodeType": "ExpressionStatement",
                        "src": "7170:62:62"
                      },
                      {
                        "assignments": [
                          20116
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20116,
                            "mutability": "mutable",
                            "name": "operator",
                            "nameLocation": "7251:8:62",
                            "nodeType": "VariableDeclaration",
                            "scope": 20151,
                            "src": "7243:16:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 20115,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7243:7:62",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20119,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 20117,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1424,
                            "src": "7262:10:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 20118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7262:12:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7243:31:62"
                      },
                      {
                        "expression": {
                          "id": 20126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 20120,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19500,
                                "src": "7285:9:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 20123,
                              "indexExpression": {
                                "id": 20121,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20098,
                                "src": "7295:2:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7285:13:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 20124,
                            "indexExpression": {
                              "id": 20122,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20096,
                              "src": "7299:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7285:17:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 20125,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20100,
                            "src": "7306:6:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7285:27:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20127,
                        "nodeType": "ExpressionStatement",
                        "src": "7285:27:62"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 20129,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20116,
                              "src": "7342:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 20132,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7360:1:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 20131,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7352:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 20130,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7352:7:62",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20133,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7352:10:62",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20134,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20096,
                              "src": "7364:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20135,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20098,
                              "src": "7368:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 20136,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20100,
                              "src": "7372:6:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20128,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 308,
                            "src": "7327:14:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 20137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7327:52:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20138,
                        "nodeType": "EmitStatement",
                        "src": "7322:57:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20140,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20116,
                              "src": "7421:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 20143,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7439:1:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 20142,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7431:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 20141,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7431:7:62",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7431:10:62",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20145,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20096,
                              "src": "7443:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20146,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20098,
                              "src": "7447:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 20147,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20100,
                              "src": "7451:6:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 20148,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20102,
                              "src": "7459:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 20139,
                            "name": "_doSafeTransferAcceptanceCheck",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20025,
                            "src": "7390:30:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 20149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7390:74:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20150,
                        "nodeType": "ExpressionStatement",
                        "src": "7390:74:62"
                      }
                    ]
                  },
                  "functionSelector": "731133e9",
                  "id": 20152,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nameLocation": "7085:4:62",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20103,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20096,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "7098:2:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20152,
                        "src": "7090:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20095,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7090:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20098,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "7110:2:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20152,
                        "src": "7102:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20097,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7102:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20100,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "7122:6:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20152,
                        "src": "7114:14:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20099,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7114:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20102,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "7145:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20152,
                        "src": "7130:19:62",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 20101,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7130:5:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7089:61:62"
                  },
                  "returnParameters": {
                    "id": 20104,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7160:0:62"
                  },
                  "scope": 20310,
                  "src": "7076:395:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 20224,
                    "nodeType": "Block",
                    "src": "7542:523:62",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 20167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 20162,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20154,
                                "src": "7560:4:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 20165,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7576:1:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 20164,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7568:7:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 20163,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7568:7:62",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 20166,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7568:10:62",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7560:18:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373",
                              "id": 20168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7580:37:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a",
                                "typeString": "literal_string \"ERC1155: burn from the zero address\""
                              },
                              "value": "ERC1155: burn from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a",
                                "typeString": "literal_string \"ERC1155: burn from the zero address\""
                              }
                            ],
                            "id": 20161,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7552:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7552:66:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20170,
                        "nodeType": "ExpressionStatement",
                        "src": "7552:66:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 20182,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 20175,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 20172,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20154,
                                  "src": "7649:4:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 20173,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1424,
                                    "src": "7657:10:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 20174,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7657:12:62",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "7649:20:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 20176,
                                    "name": "_operatorApprovals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19506,
                                    "src": "7673:18:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                      "typeString": "mapping(address => mapping(address => bool))"
                                    }
                                  },
                                  "id": 20178,
                                  "indexExpression": {
                                    "id": 20177,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20154,
                                    "src": "7692:4:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7673:24:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 20181,
                                "indexExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 20179,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1424,
                                    "src": "7698:10:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 20180,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7698:12:62",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7673:38:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7649:62:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
                              "id": 20183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7713:43:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a",
                                "typeString": "literal_string \"ERC1155: caller is not owner nor approved\""
                              },
                              "value": "ERC1155: caller is not owner nor approved"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a",
                                "typeString": "literal_string \"ERC1155: caller is not owner nor approved\""
                              }
                            ],
                            "id": 20171,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7628:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7628:138:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20185,
                        "nodeType": "ExpressionStatement",
                        "src": "7628:138:62"
                      },
                      {
                        "assignments": [
                          20187
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20187,
                            "mutability": "mutable",
                            "name": "fromBalance",
                            "nameLocation": "7785:11:62",
                            "nodeType": "VariableDeclaration",
                            "scope": 20224,
                            "src": "7777:19:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20186,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7777:7:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20193,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 20188,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19500,
                              "src": "7799:9:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 20190,
                            "indexExpression": {
                              "id": 20189,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20156,
                              "src": "7809:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7799:13:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 20192,
                          "indexExpression": {
                            "id": 20191,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20154,
                            "src": "7813:4:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7799:19:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7777:41:62"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 20195,
                                "name": "fromBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20187,
                                "src": "7836:11:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 20196,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20158,
                                "src": "7851:6:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7836:21:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365",
                              "id": 20198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7859:38:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685",
                                "typeString": "literal_string \"ERC1155: burn amount exceeds balance\""
                              },
                              "value": "ERC1155: burn amount exceeds balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685",
                                "typeString": "literal_string \"ERC1155: burn amount exceeds balance\""
                              }
                            ],
                            "id": 20194,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7828:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7828:70:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20200,
                        "nodeType": "ExpressionStatement",
                        "src": "7828:70:62"
                      },
                      {
                        "id": 20211,
                        "nodeType": "UncheckedBlock",
                        "src": "7908:77:62",
                        "statements": [
                          {
                            "expression": {
                              "id": 20209,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 20201,
                                    "name": "_balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19500,
                                    "src": "7932:9:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 20204,
                                  "indexExpression": {
                                    "id": 20202,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20156,
                                    "src": "7942:2:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7932:13:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 20205,
                                "indexExpression": {
                                  "id": 20203,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20154,
                                  "src": "7946:4:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "7932:19:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 20206,
                                  "name": "fromBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20187,
                                  "src": "7954:11:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 20207,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20158,
                                  "src": "7968:6:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7954:20:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7932:42:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 20210,
                            "nodeType": "ExpressionStatement",
                            "src": "7932:42:62"
                          }
                        ]
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 20213,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1424,
                                "src": "8015:10:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 20214,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8015:12:62",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20215,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20154,
                              "src": "8029:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 20218,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8043:1:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 20217,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8035:7:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 20216,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8035:7:62",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 20219,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8035:10:62",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20220,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20156,
                              "src": "8047:2:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 20221,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20158,
                              "src": "8051:6:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20212,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 308,
                            "src": "8000:14:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 20222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8000:58:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20223,
                        "nodeType": "EmitStatement",
                        "src": "7995:63:62"
                      }
                    ]
                  },
                  "functionSelector": "f5298aca",
                  "id": 20225,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nameLocation": "7486:4:62",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20159,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20154,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "7499:4:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20225,
                        "src": "7491:12:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20153,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7491:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20156,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "7513:2:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20225,
                        "src": "7505:10:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20155,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7505:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20158,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "7525:6:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 20225,
                        "src": "7517:14:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20157,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7517:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7490:42:62"
                  },
                  "returnParameters": {
                    "id": 20160,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7542:0:62"
                  },
                  "scope": 20310,
                  "src": "7477:588:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 20308,
                    "nodeType": "Block",
                    "src": "8135:499:62",
                    "statements": [
                      {
                        "assignments": [
                          20235
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20235,
                            "mutability": "mutable",
                            "name": "selectors",
                            "nameLocation": "8161:9:62",
                            "nodeType": "VariableDeclaration",
                            "scope": 20308,
                            "src": "8145:25:62",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                              "typeString": "bytes4[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 20233,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "8145:6:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 20234,
                              "nodeType": "ArrayTypeName",
                              "src": "8145:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20241,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "38",
                              "id": 20239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8186:1:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_8_by_1",
                                "typeString": "int_const 8"
                              },
                              "value": "8"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_8_by_1",
                                "typeString": "int_const 8"
                              }
                            ],
                            "id": 20238,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "8173:12:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes4[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 20236,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "8177:6:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 20237,
                              "nodeType": "ArrayTypeName",
                              "src": "8177:8:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            }
                          },
                          "id": 20240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8173:15:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8145:43:62"
                      },
                      {
                        "expression": {
                          "id": 20248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 20242,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20235,
                              "src": "8198:9:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 20244,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 20243,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8208:1:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8198:12:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 20245,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "8213:4:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ERC1155Facet_$20310",
                                  "typeString": "contract ERC1155Facet"
                                }
                              },
                              "id": 20246,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8218:9:62",
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19556,
                              "src": "8213:14:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) view external returns (uint256)"
                              }
                            },
                            "id": 20247,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "8228:8:62",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "8213:23:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "8198:38:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 20249,
                        "nodeType": "ExpressionStatement",
                        "src": "8198:38:62"
                      },
                      {
                        "expression": {
                          "id": 20256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 20250,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20235,
                              "src": "8246:9:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 20252,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 20251,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8256:1:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8246:12:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 20253,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "8261:4:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ERC1155Facet_$20310",
                                  "typeString": "contract ERC1155Facet"
                                }
                              },
                              "id": 20254,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8266:14:62",
                              "memberName": "balanceOfBatch",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19620,
                              "src": "8261:19:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (address[] memory,uint256[] memory) view external returns (uint256[] memory)"
                              }
                            },
                            "id": 20255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "8281:8:62",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "8261:28:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "8246:43:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 20257,
                        "nodeType": "ExpressionStatement",
                        "src": "8246:43:62"
                      },
                      {
                        "expression": {
                          "id": 20264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 20258,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20235,
                              "src": "8299:9:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 20260,
                            "indexExpression": {
                              "hexValue": "32",
                              "id": 20259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8309:1:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8299:12:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 20261,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "8314:4:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ERC1155Facet_$20310",
                                  "typeString": "contract ERC1155Facet"
                                }
                              },
                              "id": 20262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8319:17:62",
                              "memberName": "setApprovalForAll",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19636,
                              "src": "8314:22:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$",
                                "typeString": "function (address,bool) external"
                              }
                            },
                            "id": 20263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "8337:8:62",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "8314:31:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "8299:46:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 20265,
                        "nodeType": "ExpressionStatement",
                        "src": "8299:46:62"
                      },
                      {
                        "expression": {
                          "id": 20272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 20266,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20235,
                              "src": "8355:9:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 20268,
                            "indexExpression": {
                              "hexValue": "33",
                              "id": 20267,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8365:1:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              },
                              "value": "3"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8355:12:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 20269,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "8370:4:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ERC1155Facet_$20310",
                                  "typeString": "contract ERC1155Facet"
                                }
                              },
                              "id": 20270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8375:16:62",
                              "memberName": "isApprovedForAll",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19653,
                              "src": "8370:21:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address,address) view external returns (bool)"
                              }
                            },
                            "id": 20271,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "8392:8:62",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "8370:30:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "8355:45:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 20273,
                        "nodeType": "ExpressionStatement",
                        "src": "8355:45:62"
                      },
                      {
                        "expression": {
                          "id": 20280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 20274,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20235,
                              "src": "8410:9:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 20276,
                            "indexExpression": {
                              "hexValue": "34",
                              "id": 20275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8420:1:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8410:12:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 20277,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "8425:4:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ERC1155Facet_$20310",
                                  "typeString": "contract ERC1155Facet"
                                }
                              },
                              "id": 20278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8430:16:62",
                              "memberName": "safeTransferFrom",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19691,
                              "src": "8425:21:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                              }
                            },
                            "id": 20279,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "8447:8:62",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "8425:30:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "8410:45:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 20281,
                        "nodeType": "ExpressionStatement",
                        "src": "8410:45:62"
                      },
                      {
                        "expression": {
                          "id": 20288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 20282,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20235,
                              "src": "8465:9:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 20284,
                            "indexExpression": {
                              "hexValue": "35",
                              "id": 20283,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8475:1:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_5_by_1",
                                "typeString": "int_const 5"
                              },
                              "value": "5"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8465:12:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 20285,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "8480:4:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ERC1155Facet_$20310",
                                  "typeString": "contract ERC1155Facet"
                                }
                              },
                              "id": 20286,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8485:21:62",
                              "memberName": "safeBatchTransferFrom",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19731,
                              "src": "8480:26:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external"
                              }
                            },
                            "id": 20287,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "8507:8:62",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "8480:35:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "8465:50:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 20289,
                        "nodeType": "ExpressionStatement",
                        "src": "8465:50:62"
                      },
                      {
                        "expression": {
                          "id": 20296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 20290,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20235,
                              "src": "8525:9:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 20292,
                            "indexExpression": {
                              "hexValue": "36",
                              "id": 20291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8535:1:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_6_by_1",
                                "typeString": "int_const 6"
                              },
                              "value": "6"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8525:12:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 20293,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "8540:4:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ERC1155Facet_$20310",
                                  "typeString": "contract ERC1155Facet"
                                }
                              },
                              "id": 20294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8545:4:62",
                              "memberName": "mint",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20152,
                              "src": "8540:9:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                "typeString": "function (address,uint256,uint256,bytes memory) external"
                              }
                            },
                            "id": 20295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "8550:8:62",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "8540:18:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "8525:33:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 20297,
                        "nodeType": "ExpressionStatement",
                        "src": "8525:33:62"
                      },
                      {
                        "expression": {
                          "id": 20304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 20298,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20235,
                              "src": "8568:9:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 20300,
                            "indexExpression": {
                              "hexValue": "37",
                              "id": 20299,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8578:1:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_7_by_1",
                                "typeString": "int_const 7"
                              },
                              "value": "7"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8568:12:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 20301,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "8583:4:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ERC1155Facet_$20310",
                                  "typeString": "contract ERC1155Facet"
                                }
                              },
                              "id": 20302,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8588:4:62",
                              "memberName": "burn",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20225,
                              "src": "8583:9:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                "typeString": "function (address,uint256,uint256) external"
                              }
                            },
                            "id": 20303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "8593:8:62",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "8583:18:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "8568:33:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 20305,
                        "nodeType": "ExpressionStatement",
                        "src": "8568:33:62"
                      },
                      {
                        "expression": {
                          "id": 20306,
                          "name": "selectors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20235,
                          "src": "8618:9:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "functionReturnParameters": 20230,
                        "id": 20307,
                        "nodeType": "Return",
                        "src": "8611:16:62"
                      }
                    ]
                  },
                  "functionSelector": "4b503f0b",
                  "id": 20309,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSelectors",
                  "nameLocation": "8080:12:62",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20226,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8092:2:62"
                  },
                  "returnParameters": {
                    "id": 20230,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20229,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 20309,
                        "src": "8118:15:62",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20227,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "8118:6:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 20228,
                          "nodeType": "ArrayTypeName",
                          "src": "8118:8:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8117:17:62"
                  },
                  "scope": 20310,
                  "src": "8071:563:62",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 20311,
              "src": "469:8167:62",
              "usedErrors": [
                19491
              ],
              "usedEvents": [
                308,
                323,
                332,
                339
              ]
            }
          ],
          "src": "40:8597:62"
        },
        "id": 62
      },
      "contracts/facets/OwnershipFacet.sol": {
        "ast": {
          "absolutePath": "contracts/facets/OwnershipFacet.sol",
          "exportedSymbols": {
            "OwnershipFacet": [
              20472
            ]
          },
          "id": 20473,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 20312,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:63"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "OwnershipFacet",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 20472,
              "linearizedBaseContracts": [
                20472
              ],
              "name": "OwnershipFacet",
              "nameLocation": "35:14:63",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 20317,
                  "mutability": "constant",
                  "name": "OWNERSHIP_STORAGE_POSITION",
                  "nameLocation": "73:26:63",
                  "nodeType": "VariableDeclaration",
                  "scope": 20472,
                  "src": "56:93:63",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 20313,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "56:7:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "6469616d6f6e642e7374616e646172642e6f776e6572736869702e73746f72616765",
                        "id": 20315,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "112:36:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c",
                          "typeString": "literal_string \"diamond.standard.ownership.storage\""
                        },
                        "value": "diamond.standard.ownership.storage"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c",
                          "typeString": "literal_string \"diamond.standard.ownership.storage\""
                        }
                      ],
                      "id": 20314,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "102:9:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 20316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "102:47:63",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "canonicalName": "OwnershipFacet.OwnershipStorage",
                  "id": 20320,
                  "members": [
                    {
                      "constant": false,
                      "id": 20319,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "198:5:63",
                      "nodeType": "VariableDeclaration",
                      "scope": 20320,
                      "src": "190:13:63",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 20318,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "190:7:63",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "OwnershipStorage",
                  "nameLocation": "163:16:63",
                  "nodeType": "StructDefinition",
                  "scope": 20472,
                  "src": "156:54:63",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20348,
                    "nodeType": "Block",
                    "src": "269:157:63",
                    "statements": [
                      {
                        "assignments": [
                          20327
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20327,
                            "mutability": "mutable",
                            "name": "os",
                            "nameLocation": "304:2:63",
                            "nodeType": "VariableDeclaration",
                            "scope": 20348,
                            "src": "279:27:63",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OwnershipStorage_$20320_storage_ptr",
                              "typeString": "struct OwnershipFacet.OwnershipStorage"
                            },
                            "typeName": {
                              "id": 20326,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 20325,
                                "name": "OwnershipStorage",
                                "nameLocations": [
                                  "279:16:63"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 20320,
                                "src": "279:16:63"
                              },
                              "referencedDeclaration": 20320,
                              "src": "279:16:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OwnershipStorage_$20320_storage_ptr",
                                "typeString": "struct OwnershipFacet.OwnershipStorage"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20330,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 20328,
                            "name": "ownershipStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20413,
                            "src": "309:16:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_OwnershipStorage_$20320_storage_ptr_$",
                              "typeString": "function () pure returns (struct OwnershipFacet.OwnershipStorage storage pointer)"
                            }
                          },
                          "id": 20329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "309:18:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OwnershipStorage_$20320_storage_ptr",
                            "typeString": "struct OwnershipFacet.OwnershipStorage storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "279:48:63"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 20338,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 20332,
                                  "name": "os",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20327,
                                  "src": "345:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_OwnershipStorage_$20320_storage_ptr",
                                    "typeString": "struct OwnershipFacet.OwnershipStorage storage pointer"
                                  }
                                },
                                "id": 20333,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "348:5:63",
                                "memberName": "owner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20319,
                                "src": "345:8:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 20336,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "365:1:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 20335,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "357:7:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 20334,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "357:7:63",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 20337,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "357:10:63",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "345:22:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f776e657220616c726561647920736574",
                              "id": 20339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "369:19:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0cb8b89218358f6d040fadfd98cd075d05ecff1d81e4df7791823c99ed902f6c",
                                "typeString": "literal_string \"Owner already set\""
                              },
                              "value": "Owner already set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0cb8b89218358f6d040fadfd98cd075d05ecff1d81e4df7791823c99ed902f6c",
                                "typeString": "literal_string \"Owner already set\""
                              }
                            ],
                            "id": 20331,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "337:7:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "337:52:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20341,
                        "nodeType": "ExpressionStatement",
                        "src": "337:52:63"
                      },
                      {
                        "expression": {
                          "id": 20346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 20342,
                              "name": "os",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20327,
                              "src": "399:2:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OwnershipStorage_$20320_storage_ptr",
                                "typeString": "struct OwnershipFacet.OwnershipStorage storage pointer"
                              }
                            },
                            "id": 20344,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "402:5:63",
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20319,
                            "src": "399:8:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 20345,
                            "name": "_newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20322,
                            "src": "410:9:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "399:20:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 20347,
                        "nodeType": "ExpressionStatement",
                        "src": "399:20:63"
                      }
                    ]
                  },
                  "functionSelector": "8c5f36bb",
                  "id": 20349,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "initializeOwner",
                  "nameLocation": "225:15:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20323,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20322,
                        "mutability": "mutable",
                        "name": "_newOwner",
                        "nameLocation": "249:9:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 20349,
                        "src": "241:17:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20321,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "241:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "240:19:63"
                  },
                  "returnParameters": {
                    "id": 20324,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "269:0:63"
                  },
                  "scope": 20472,
                  "src": "216:210:63",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 20368,
                    "nodeType": "Block",
                    "src": "488:95:63",
                    "statements": [
                      {
                        "assignments": [
                          20358
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20358,
                            "mutability": "mutable",
                            "name": "os",
                            "nameLocation": "523:2:63",
                            "nodeType": "VariableDeclaration",
                            "scope": 20368,
                            "src": "498:27:63",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OwnershipStorage_$20320_storage_ptr",
                              "typeString": "struct OwnershipFacet.OwnershipStorage"
                            },
                            "typeName": {
                              "id": 20357,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 20356,
                                "name": "OwnershipStorage",
                                "nameLocations": [
                                  "498:16:63"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 20320,
                                "src": "498:16:63"
                              },
                              "referencedDeclaration": 20320,
                              "src": "498:16:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OwnershipStorage_$20320_storage_ptr",
                                "typeString": "struct OwnershipFacet.OwnershipStorage"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20361,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 20359,
                            "name": "ownershipStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20413,
                            "src": "528:16:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_OwnershipStorage_$20320_storage_ptr_$",
                              "typeString": "function () pure returns (struct OwnershipFacet.OwnershipStorage storage pointer)"
                            }
                          },
                          "id": 20360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "528:18:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OwnershipStorage_$20320_storage_ptr",
                            "typeString": "struct OwnershipFacet.OwnershipStorage storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "498:48:63"
                      },
                      {
                        "expression": {
                          "id": 20366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 20362,
                              "name": "os",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20358,
                              "src": "556:2:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OwnershipStorage_$20320_storage_ptr",
                                "typeString": "struct OwnershipFacet.OwnershipStorage storage pointer"
                              }
                            },
                            "id": 20364,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "559:5:63",
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20319,
                            "src": "556:8:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 20365,
                            "name": "_newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20351,
                            "src": "567:9:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "556:20:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 20367,
                        "nodeType": "ExpressionStatement",
                        "src": "556:20:63"
                      }
                    ]
                  },
                  "id": 20369,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 20354,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 20353,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "478:9:63"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 20427,
                        "src": "478:9:63"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "478:9:63"
                    }
                  ],
                  "name": "setOwner",
                  "nameLocation": "441:8:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20352,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20351,
                        "mutability": "mutable",
                        "name": "_newOwner",
                        "nameLocation": "458:9:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 20369,
                        "src": "450:17:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20350,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "450:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "449:19:63"
                  },
                  "returnParameters": {
                    "id": 20355,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "488:0:63"
                  },
                  "scope": 20472,
                  "src": "432:151:63",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20378,
                    "nodeType": "Block",
                    "src": "638:48:63",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 20374,
                              "name": "ownershipStorage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20413,
                              "src": "655:16:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_OwnershipStorage_$20320_storage_ptr_$",
                                "typeString": "function () pure returns (struct OwnershipFacet.OwnershipStorage storage pointer)"
                              }
                            },
                            "id": 20375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "655:18:63",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OwnershipStorage_$20320_storage_ptr",
                              "typeString": "struct OwnershipFacet.OwnershipStorage storage pointer"
                            }
                          },
                          "id": 20376,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "674:5:63",
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20319,
                          "src": "655:24:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 20373,
                        "id": 20377,
                        "nodeType": "Return",
                        "src": "648:31:63"
                      }
                    ]
                  },
                  "functionSelector": "8da5cb5b",
                  "id": 20379,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nameLocation": "598:5:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20370,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "603:2:63"
                  },
                  "returnParameters": {
                    "id": 20373,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20372,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 20379,
                        "src": "629:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20371,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "629:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "628:9:63"
                  },
                  "scope": 20472,
                  "src": "589:97:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 20400,
                    "nodeType": "Block",
                    "src": "757:118:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 20392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 20387,
                                "name": "_newOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20381,
                                "src": "775:9:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 20390,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "796:1:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 20389,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "788:7:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 20388,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "788:7:63",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 20391,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "788:10:63",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "775:23:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646472657373",
                              "id": 20393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "800:38:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fa71ef4c1fdf1e34de72d05db09cce7beb630160c908930ad641e3534e5b4422",
                                "typeString": "literal_string \"New owner cannot be the zero address\""
                              },
                              "value": "New owner cannot be the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fa71ef4c1fdf1e34de72d05db09cce7beb630160c908930ad641e3534e5b4422",
                                "typeString": "literal_string \"New owner cannot be the zero address\""
                              }
                            ],
                            "id": 20386,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "767:7:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "767:72:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20395,
                        "nodeType": "ExpressionStatement",
                        "src": "767:72:63"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20397,
                              "name": "_newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20381,
                              "src": "858:9:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 20396,
                            "name": "setOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20369,
                            "src": "849:8:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 20398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "849:19:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20399,
                        "nodeType": "ExpressionStatement",
                        "src": "849:19:63"
                      }
                    ]
                  },
                  "functionSelector": "f2fde38b",
                  "id": 20401,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 20384,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 20383,
                        "name": "onlyOwner",
                        "nameLocations": [
                          "747:9:63"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 20427,
                        "src": "747:9:63"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "747:9:63"
                    }
                  ],
                  "name": "transferOwnership",
                  "nameLocation": "701:17:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20382,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20381,
                        "mutability": "mutable",
                        "name": "_newOwner",
                        "nameLocation": "727:9:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 20401,
                        "src": "719:17:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20380,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "719:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "718:19:63"
                  },
                  "returnParameters": {
                    "id": 20385,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "757:0:63"
                  },
                  "scope": 20472,
                  "src": "692:183:63",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 20412,
                    "nodeType": "Block",
                    "src": "961:123:63",
                    "statements": [
                      {
                        "assignments": [
                          20408
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20408,
                            "mutability": "mutable",
                            "name": "position",
                            "nameLocation": "979:8:63",
                            "nodeType": "VariableDeclaration",
                            "scope": 20412,
                            "src": "971:16:63",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 20407,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "971:7:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20410,
                        "initialValue": {
                          "id": 20409,
                          "name": "OWNERSHIP_STORAGE_POSITION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20317,
                          "src": "990:26:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "971:45:63"
                      },
                      {
                        "AST": {
                          "nativeSrc": "1035:43:63",
                          "nodeType": "YulBlock",
                          "src": "1035:43:63",
                          "statements": [
                            {
                              "nativeSrc": "1049:19:63",
                              "nodeType": "YulAssignment",
                              "src": "1049:19:63",
                              "value": {
                                "name": "position",
                                "nativeSrc": "1060:8:63",
                                "nodeType": "YulIdentifier",
                                "src": "1060:8:63"
                              },
                              "variableNames": [
                                {
                                  "name": "os.slot",
                                  "nativeSrc": "1049:7:63",
                                  "nodeType": "YulIdentifier",
                                  "src": "1049:7:63"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 20405,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "1049:7:63",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 20408,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1060:8:63",
                            "valueSize": 1
                          }
                        ],
                        "id": 20411,
                        "nodeType": "InlineAssembly",
                        "src": "1026:52:63"
                      }
                    ]
                  },
                  "id": 20413,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownershipStorage",
                  "nameLocation": "890:16:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20402,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "906:2:63"
                  },
                  "returnParameters": {
                    "id": 20406,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20405,
                        "mutability": "mutable",
                        "name": "os",
                        "nameLocation": "957:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 20413,
                        "src": "932:27:63",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OwnershipStorage_$20320_storage_ptr",
                          "typeString": "struct OwnershipFacet.OwnershipStorage"
                        },
                        "typeName": {
                          "id": 20404,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 20403,
                            "name": "OwnershipStorage",
                            "nameLocations": [
                              "932:16:63"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 20320,
                            "src": "932:16:63"
                          },
                          "referencedDeclaration": 20320,
                          "src": "932:16:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OwnershipStorage_$20320_storage_ptr",
                            "typeString": "struct OwnershipFacet.OwnershipStorage"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "931:29:63"
                  },
                  "scope": 20472,
                  "src": "881:203:63",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20426,
                    "nodeType": "Block",
                    "src": "1111:116:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 20421,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 20416,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1129:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 20417,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1133:6:63",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "1129:10:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 20418,
                                    "name": "ownershipStorage",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20413,
                                    "src": "1143:16:63",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_OwnershipStorage_$20320_storage_ptr_$",
                                      "typeString": "function () pure returns (struct OwnershipFacet.OwnershipStorage storage pointer)"
                                    }
                                  },
                                  "id": 20419,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1143:18:63",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_OwnershipStorage_$20320_storage_ptr",
                                    "typeString": "struct OwnershipFacet.OwnershipStorage storage pointer"
                                  }
                                },
                                "id": 20420,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1162:5:63",
                                "memberName": "owner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20319,
                                "src": "1143:24:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1129:38:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e6374696f6e",
                              "id": 20422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1169:39:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_02c4ea565ba5dd10ca7507fa4aece08fe60d2b6b945dff193cdbce1647b7face",
                                "typeString": "literal_string \"Only the owner can call this function\""
                              },
                              "value": "Only the owner can call this function"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_02c4ea565ba5dd10ca7507fa4aece08fe60d2b6b945dff193cdbce1647b7face",
                                "typeString": "literal_string \"Only the owner can call this function\""
                              }
                            ],
                            "id": 20415,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1121:7:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1121:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20424,
                        "nodeType": "ExpressionStatement",
                        "src": "1121:88:63"
                      },
                      {
                        "id": 20425,
                        "nodeType": "PlaceholderStatement",
                        "src": "1219:1:63"
                      }
                    ]
                  },
                  "id": 20427,
                  "name": "onlyOwner",
                  "nameLocation": "1099:9:63",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 20414,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1108:2:63"
                  },
                  "src": "1090:137:63",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20470,
                    "nodeType": "Block",
                    "src": "1304:270:63",
                    "statements": [
                      {
                        "assignments": [
                          20437
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20437,
                            "mutability": "mutable",
                            "name": "selectors",
                            "nameLocation": "1330:9:63",
                            "nodeType": "VariableDeclaration",
                            "scope": 20470,
                            "src": "1314:25:63",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                              "typeString": "bytes4[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 20435,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "1314:6:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 20436,
                              "nodeType": "ArrayTypeName",
                              "src": "1314:8:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20443,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "33",
                              "id": 20441,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1355:1:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              },
                              "value": "3"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              }
                            ],
                            "id": 20440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1342:12:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes4[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 20438,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "1346:6:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 20439,
                              "nodeType": "ArrayTypeName",
                              "src": "1346:8:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            }
                          },
                          "id": 20442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1342:15:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1314:43:63"
                      },
                      {
                        "expression": {
                          "id": 20450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 20444,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20437,
                              "src": "1367:9:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 20446,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 20445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1377:1:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1367:12:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 20447,
                                "name": "OwnershipFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20472,
                                "src": "1382:14:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_OwnershipFacet_$20472_$",
                                  "typeString": "type(contract OwnershipFacet)"
                                }
                              },
                              "id": 20448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1397:5:63",
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20379,
                              "src": "1382:20:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_view$__$returns$_t_address_$",
                                "typeString": "function OwnershipFacet.owner() view returns (address)"
                              }
                            },
                            "id": 20449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "1403:8:63",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "1382:29:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "1367:44:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 20451,
                        "nodeType": "ExpressionStatement",
                        "src": "1367:44:63"
                      },
                      {
                        "expression": {
                          "id": 20458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 20452,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20437,
                              "src": "1421:9:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 20454,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 20453,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1431:1:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1421:12:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 20455,
                                "name": "OwnershipFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20472,
                                "src": "1436:14:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_OwnershipFacet_$20472_$",
                                  "typeString": "type(contract OwnershipFacet)"
                                }
                              },
                              "id": 20456,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1451:17:63",
                              "memberName": "transferOwnership",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20401,
                              "src": "1436:32:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$returns$__$",
                                "typeString": "function OwnershipFacet.transferOwnership(address)"
                              }
                            },
                            "id": 20457,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "1469:8:63",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "1436:41:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "1421:56:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 20459,
                        "nodeType": "ExpressionStatement",
                        "src": "1421:56:63"
                      },
                      {
                        "expression": {
                          "id": 20466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 20460,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20437,
                              "src": "1487:9:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 20462,
                            "indexExpression": {
                              "hexValue": "32",
                              "id": 20461,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1497:1:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1487:12:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 20463,
                                "name": "OwnershipFacet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20472,
                                "src": "1502:14:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_OwnershipFacet_$20472_$",
                                  "typeString": "type(contract OwnershipFacet)"
                                }
                              },
                              "id": 20464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1517:15:63",
                              "memberName": "initializeOwner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20349,
                              "src": "1502:30:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$returns$__$",
                                "typeString": "function OwnershipFacet.initializeOwner(address)"
                              }
                            },
                            "id": 20465,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "1533:8:63",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "1502:39:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "1487:54:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 20467,
                        "nodeType": "ExpressionStatement",
                        "src": "1487:54:63"
                      },
                      {
                        "expression": {
                          "id": 20468,
                          "name": "selectors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20437,
                          "src": "1558:9:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "functionReturnParameters": 20432,
                        "id": 20469,
                        "nodeType": "Return",
                        "src": "1551:16:63"
                      }
                    ]
                  },
                  "functionSelector": "b4105004",
                  "id": 20471,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSelectorsOwnership",
                  "nameLocation": "1242:21:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20428,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1263:2:63"
                  },
                  "returnParameters": {
                    "id": 20432,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20431,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 20471,
                        "src": "1287:15:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20429,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "1287:6:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 20430,
                          "nodeType": "ArrayTypeName",
                          "src": "1287:8:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1286:17:63"
                  },
                  "scope": 20472,
                  "src": "1233:341:63",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 20473,
              "src": "26:1550:63",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "0:1577:63"
        },
        "id": 63
      },
      "contracts/interfaces/IDiamond.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IDiamond.sol",
          "exportedSymbols": {
            "IDiamond": [
              20498
            ]
          },
          "id": 20499,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 20474,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:64"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IDiamond",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": true,
              "id": 20498,
              "linearizedBaseContracts": [
                20498
              ],
              "name": "IDiamond",
              "nameLocation": "386:8:64",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "IDiamond.FacetCutAction",
                  "id": 20478,
                  "members": [
                    {
                      "id": 20475,
                      "name": "Add",
                      "nameLocation": "431:3:64",
                      "nodeType": "EnumValue",
                      "src": "431:3:64"
                    },
                    {
                      "id": 20476,
                      "name": "Replace",
                      "nameLocation": "444:7:64",
                      "nodeType": "EnumValue",
                      "src": "444:7:64"
                    },
                    {
                      "id": 20477,
                      "name": "Remove",
                      "nameLocation": "461:6:64",
                      "nodeType": "EnumValue",
                      "src": "461:6:64"
                    }
                  ],
                  "name": "FacetCutAction",
                  "nameLocation": "406:14:64",
                  "nodeType": "EnumDefinition",
                  "src": "401:72:64"
                },
                {
                  "canonicalName": "IDiamond.FacetCut",
                  "id": 20487,
                  "members": [
                    {
                      "constant": false,
                      "id": 20480,
                      "mutability": "mutable",
                      "name": "facetAddress",
                      "nameLocation": "547:12:64",
                      "nodeType": "VariableDeclaration",
                      "scope": 20487,
                      "src": "539:20:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 20479,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "539:7:64",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 20483,
                      "mutability": "mutable",
                      "name": "action",
                      "nameLocation": "584:6:64",
                      "nodeType": "VariableDeclaration",
                      "scope": 20487,
                      "src": "569:21:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                        "typeString": "enum IDiamond.FacetCutAction"
                      },
                      "typeName": {
                        "id": 20482,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 20481,
                          "name": "FacetCutAction",
                          "nameLocations": [
                            "569:14:64"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 20478,
                          "src": "569:14:64"
                        },
                        "referencedDeclaration": 20478,
                        "src": "569:14:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                          "typeString": "enum IDiamond.FacetCutAction"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 20486,
                      "mutability": "mutable",
                      "name": "functionSelectors",
                      "nameLocation": "609:17:64",
                      "nodeType": "VariableDeclaration",
                      "scope": 20487,
                      "src": "600:26:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                        "typeString": "bytes4[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 20484,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "600:6:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 20485,
                        "nodeType": "ArrayTypeName",
                        "src": "600:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                          "typeString": "bytes4[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "FacetCut",
                  "nameLocation": "520:8:64",
                  "nodeType": "StructDefinition",
                  "scope": 20498,
                  "src": "513:120:64",
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "eventSelector": "8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673",
                  "id": 20497,
                  "name": "DiamondCut",
                  "nameLocation": "645:10:64",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 20496,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20491,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_diamondCut",
                        "nameLocation": "667:11:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 20497,
                        "src": "656:22:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IDiamond.FacetCut[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20489,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 20488,
                              "name": "FacetCut",
                              "nameLocations": [
                                "656:8:64"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 20487,
                              "src": "656:8:64"
                            },
                            "referencedDeclaration": 20487,
                            "src": "656:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_FacetCut_$20487_storage_ptr",
                              "typeString": "struct IDiamond.FacetCut"
                            }
                          },
                          "id": 20490,
                          "nodeType": "ArrayTypeName",
                          "src": "656:10:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_storage_$dyn_storage_ptr",
                            "typeString": "struct IDiamond.FacetCut[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20493,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_init",
                        "nameLocation": "688:5:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 20497,
                        "src": "680:13:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20492,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "680:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20495,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_calldata",
                        "nameLocation": "701:9:64",
                        "nodeType": "VariableDeclaration",
                        "scope": 20497,
                        "src": "695:15:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 20494,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "695:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "655:56:64"
                  },
                  "src": "639:73:64"
                }
              ],
              "scope": 20499,
              "src": "376:338:64",
              "usedErrors": [],
              "usedEvents": [
                20497
              ]
            }
          ],
          "src": "40:675:64"
        },
        "id": 64
      },
      "contracts/interfaces/IDiamondCut.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IDiamondCut.sol",
          "exportedSymbols": {
            "IDiamond": [
              20498
            ],
            "IDiamondCut": [
              20517
            ]
          },
          "id": 20518,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 20500,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:65"
            },
            {
              "absolutePath": "contracts/interfaces/IDiamond.sol",
              "file": "./IDiamond.sol",
              "id": 20502,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 20518,
              "sourceUnit": 20499,
              "src": "377:42:65",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 20501,
                    "name": "IDiamond",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20498,
                    "src": "386:8:65",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 20503,
                    "name": "IDiamond",
                    "nameLocations": [
                      "446:8:65"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 20498,
                    "src": "446:8:65"
                  },
                  "id": 20504,
                  "nodeType": "InheritanceSpecifier",
                  "src": "446:8:65"
                }
              ],
              "canonicalName": "IDiamondCut",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 20517,
              "linearizedBaseContracts": [
                20517,
                20498
              ],
              "name": "IDiamondCut",
              "nameLocation": "431:11:65",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 20505,
                    "nodeType": "StructuredDocumentation",
                    "src": "461:438:65",
                    "text": "@notice Add/replace/remove any number of functions and optionally execute\n         a function with delegatecall\n @param _diamondCut Contains the facet addresses and function selectors\n @param _init The address of the contract or facet to execute _calldata\n @param _calldata A function call, including function selector and arguments\n                  _calldata is executed with delegatecall on _init"
                  },
                  "functionSelector": "1f931c1c",
                  "id": 20516,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "diamondCut",
                  "nameLocation": "913:10:65",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20514,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20509,
                        "mutability": "mutable",
                        "name": "_diamondCut",
                        "nameLocation": "944:11:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 20516,
                        "src": "924:31:65",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct IDiamond.FacetCut[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20507,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 20506,
                              "name": "FacetCut",
                              "nameLocations": [
                                "924:8:65"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 20487,
                              "src": "924:8:65"
                            },
                            "referencedDeclaration": 20487,
                            "src": "924:8:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_FacetCut_$20487_storage_ptr",
                              "typeString": "struct IDiamond.FacetCut"
                            }
                          },
                          "id": 20508,
                          "nodeType": "ArrayTypeName",
                          "src": "924:10:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_storage_$dyn_storage_ptr",
                            "typeString": "struct IDiamond.FacetCut[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20511,
                        "mutability": "mutable",
                        "name": "_init",
                        "nameLocation": "965:5:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 20516,
                        "src": "957:13:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20510,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "957:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20513,
                        "mutability": "mutable",
                        "name": "_calldata",
                        "nameLocation": "987:9:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 20516,
                        "src": "972:24:65",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 20512,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "972:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "923:74:65"
                  },
                  "returnParameters": {
                    "id": 20515,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1006:0:65"
                  },
                  "scope": 20517,
                  "src": "904:103:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 20518,
              "src": "421:588:65",
              "usedErrors": [],
              "usedEvents": [
                20497
              ]
            }
          ],
          "src": "40:970:65"
        },
        "id": 65
      },
      "contracts/interfaces/IDiamondLoupe.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IDiamondLoupe.sol",
          "exportedSymbols": {
            "IDiamondLoupe": [
              20559
            ]
          },
          "id": 20560,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 20519,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:66"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IDiamondLoupe",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 20559,
              "linearizedBaseContracts": [
                20559
              ],
              "name": "IDiamondLoupe",
              "nameLocation": "488:13:66",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "IDiamondLoupe.Facet",
                  "documentation": {
                    "id": 20520,
                    "nodeType": "StructuredDocumentation",
                    "src": "508:75:66",
                    "text": "These functions are expected to be called frequently\n by tools."
                  },
                  "id": 20526,
                  "members": [
                    {
                      "constant": false,
                      "id": 20522,
                      "mutability": "mutable",
                      "name": "facetAddress",
                      "nameLocation": "619:12:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 20526,
                      "src": "611:20:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 20521,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "611:7:66",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 20525,
                      "mutability": "mutable",
                      "name": "functionSelectors",
                      "nameLocation": "650:17:66",
                      "nodeType": "VariableDeclaration",
                      "scope": 20526,
                      "src": "641:26:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                        "typeString": "bytes4[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 20523,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "641:6:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 20524,
                        "nodeType": "ArrayTypeName",
                        "src": "641:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                          "typeString": "bytes4[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Facet",
                  "nameLocation": "595:5:66",
                  "nodeType": "StructDefinition",
                  "scope": 20559,
                  "src": "588:86:66",
                  "visibility": "public"
                },
                {
                  "documentation": {
                    "id": 20527,
                    "nodeType": "StructuredDocumentation",
                    "src": "680:106:66",
                    "text": "@notice Gets all facet addresses and their four byte function selectors.\n @return facets_ Facet"
                  },
                  "functionSelector": "7a0ed627",
                  "id": 20534,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "facets",
                  "nameLocation": "800:6:66",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20528,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "806:2:66"
                  },
                  "returnParameters": {
                    "id": 20533,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20532,
                        "mutability": "mutable",
                        "name": "facets_",
                        "nameLocation": "847:7:66",
                        "nodeType": "VariableDeclaration",
                        "scope": 20534,
                        "src": "832:22:66",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Facet_$20526_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IDiamondLoupe.Facet[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20530,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 20529,
                              "name": "Facet",
                              "nameLocations": [
                                "832:5:66"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 20526,
                              "src": "832:5:66"
                            },
                            "referencedDeclaration": 20526,
                            "src": "832:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Facet_$20526_storage_ptr",
                              "typeString": "struct IDiamondLoupe.Facet"
                            }
                          },
                          "id": 20531,
                          "nodeType": "ArrayTypeName",
                          "src": "832:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Facet_$20526_storage_$dyn_storage_ptr",
                            "typeString": "struct IDiamondLoupe.Facet[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "831:24:66"
                  },
                  "scope": 20559,
                  "src": "791:65:66",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 20535,
                    "nodeType": "StructuredDocumentation",
                    "src": "862:155:66",
                    "text": "@notice Gets all the function selectors supported by a specific facet.\n @param _facet The facet address.\n @return facetFunctionSelectors_"
                  },
                  "functionSelector": "adfca15e",
                  "id": 20543,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "facetFunctionSelectors",
                  "nameLocation": "1031:22:66",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20538,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20537,
                        "mutability": "mutable",
                        "name": "_facet",
                        "nameLocation": "1062:6:66",
                        "nodeType": "VariableDeclaration",
                        "scope": 20543,
                        "src": "1054:14:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20536,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1054:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1053:16:66"
                  },
                  "returnParameters": {
                    "id": 20542,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20541,
                        "mutability": "mutable",
                        "name": "facetFunctionSelectors_",
                        "nameLocation": "1109:23:66",
                        "nodeType": "VariableDeclaration",
                        "scope": 20543,
                        "src": "1093:39:66",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20539,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "1093:6:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 20540,
                          "nodeType": "ArrayTypeName",
                          "src": "1093:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1092:41:66"
                  },
                  "scope": 20559,
                  "src": "1022:112:66",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 20544,
                    "nodeType": "StructuredDocumentation",
                    "src": "1140:90:66",
                    "text": "@notice Get all the facet addresses used by a diamond.\n @return facetAddresses_"
                  },
                  "functionSelector": "52ef6b2c",
                  "id": 20550,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "facetAddresses",
                  "nameLocation": "1244:14:66",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20545,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1258:2:66"
                  },
                  "returnParameters": {
                    "id": 20549,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20548,
                        "mutability": "mutable",
                        "name": "facetAddresses_",
                        "nameLocation": "1301:15:66",
                        "nodeType": "VariableDeclaration",
                        "scope": 20550,
                        "src": "1284:32:66",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20546,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1284:7:66",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 20547,
                          "nodeType": "ArrayTypeName",
                          "src": "1284:9:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1283:34:66"
                  },
                  "scope": 20559,
                  "src": "1235:83:66",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 20551,
                    "nodeType": "StructuredDocumentation",
                    "src": "1324:219:66",
                    "text": "@notice Gets the facet that supports the given selector.\n @dev If facet is not found return address(0).\n @param _functionSelector The function selector.\n @return facetAddress_ The facet address."
                  },
                  "functionSelector": "cdffacc6",
                  "id": 20558,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "facetAddress",
                  "nameLocation": "1557:12:66",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20554,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20553,
                        "mutability": "mutable",
                        "name": "_functionSelector",
                        "nameLocation": "1577:17:66",
                        "nodeType": "VariableDeclaration",
                        "scope": 20558,
                        "src": "1570:24:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 20552,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1570:6:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1569:26:66"
                  },
                  "returnParameters": {
                    "id": 20557,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20556,
                        "mutability": "mutable",
                        "name": "facetAddress_",
                        "nameLocation": "1627:13:66",
                        "nodeType": "VariableDeclaration",
                        "scope": 20558,
                        "src": "1619:21:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20555,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1619:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1618:23:66"
                  },
                  "scope": 20559,
                  "src": "1548:94:66",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 20560,
              "src": "478:1166:66",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "40:1605:66"
        },
        "id": 66
      },
      "contracts/interfaces/IERC173.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IERC173.sol",
          "exportedSymbols": {
            "IERC173": [
              20582
            ]
          },
          "id": 20583,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 20561,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:67"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC173",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 20562,
                "nodeType": "StructuredDocumentation",
                "src": "66:114:67",
                "text": "@title ERC-173 Contract Ownership Standard\n  Note: the ERC-165 identifier for this interface is 0x7f5828d0"
              },
              "fullyImplemented": false,
              "id": 20582,
              "linearizedBaseContracts": [
                20582
              ],
              "name": "IERC173",
              "nameLocation": "206:7:67",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 20563,
                    "nodeType": "StructuredDocumentation",
                    "src": "220:57:67",
                    "text": "@dev This emits when ownership of a contract changes."
                  },
                  "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
                  "id": 20569,
                  "name": "OwnershipTransferred",
                  "nameLocation": "288:20:67",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 20568,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20565,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nameLocation": "325:13:67",
                        "nodeType": "VariableDeclaration",
                        "scope": 20569,
                        "src": "309:29:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20564,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "309:7:67",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20567,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "356:8:67",
                        "nodeType": "VariableDeclaration",
                        "scope": 20569,
                        "src": "340:24:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20566,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "340:7:67",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "308:57:67"
                  },
                  "src": "282:84:67"
                },
                {
                  "documentation": {
                    "id": 20570,
                    "nodeType": "StructuredDocumentation",
                    "src": "372:89:67",
                    "text": "@notice Get the address of the owner\n @return owner_ The address of the owner."
                  },
                  "functionSelector": "8da5cb5b",
                  "id": 20575,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nameLocation": "475:5:67",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20571,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "480:2:67"
                  },
                  "returnParameters": {
                    "id": 20574,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20573,
                        "mutability": "mutable",
                        "name": "owner_",
                        "nameLocation": "514:6:67",
                        "nodeType": "VariableDeclaration",
                        "scope": 20575,
                        "src": "506:14:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20572,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "506:7:67",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "505:16:67"
                  },
                  "scope": 20582,
                  "src": "466:56:67",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 20576,
                    "nodeType": "StructuredDocumentation",
                    "src": "528:198:67",
                    "text": "@notice Set the address of the new owner of the contract\n @dev Set _newOwner to address(0) to renounce any ownership.\n @param _newOwner The address of the new owner of the contract"
                  },
                  "functionSelector": "f2fde38b",
                  "id": 20581,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferOwnership",
                  "nameLocation": "740:17:67",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20579,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20578,
                        "mutability": "mutable",
                        "name": "_newOwner",
                        "nameLocation": "766:9:67",
                        "nodeType": "VariableDeclaration",
                        "scope": 20581,
                        "src": "758:17:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20577,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "758:7:67",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "757:19:67"
                  },
                  "returnParameters": {
                    "id": 20580,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "785:0:67"
                  },
                  "scope": 20582,
                  "src": "731:55:67",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 20583,
              "src": "196:592:67",
              "usedErrors": [],
              "usedEvents": [
                20569
              ]
            }
          ],
          "src": "40:749:67"
        },
        "id": 67
      },
      "contracts/libraries/BokkyPooBahsDateTimeLibrary.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/BokkyPooBahsDateTimeLibrary.sol",
          "exportedSymbols": {
            "BokkyPooBahsDateTimeLibrary": [
              22113
            ]
          },
          "id": 22114,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 20584,
              "literals": [
                "solidity",
                ">=",
                "0.6",
                ".0",
                "<",
                "0.9",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:31:68"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "BokkyPooBahsDateTimeLibrary",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 22113,
              "linearizedBaseContracts": [
                22113
              ],
              "name": "BokkyPooBahsDateTimeLibrary",
              "nameLocation": "967:27:68",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 20591,
                  "mutability": "constant",
                  "name": "SECONDS_PER_DAY",
                  "nameLocation": "1027:15:68",
                  "nodeType": "VariableDeclaration",
                  "scope": 22113,
                  "src": "1001:56:68",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20585,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1001:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_86400_by_1",
                      "typeString": "int_const 86400"
                    },
                    "id": 20590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_rational_1440_by_1",
                        "typeString": "int_const 1440"
                      },
                      "id": 20588,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "3234",
                        "id": 20586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1045:2:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_24_by_1",
                          "typeString": "int_const 24"
                        },
                        "value": "24"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "hexValue": "3630",
                        "id": 20587,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1050:2:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_60_by_1",
                          "typeString": "int_const 60"
                        },
                        "value": "60"
                      },
                      "src": "1045:7:68",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1440_by_1",
                        "typeString": "int_const 1440"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "hexValue": "3630",
                      "id": 20589,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1055:2:68",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_60_by_1",
                        "typeString": "int_const 60"
                      },
                      "value": "60"
                    },
                    "src": "1045:12:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_86400_by_1",
                      "typeString": "int_const 86400"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 20596,
                  "mutability": "constant",
                  "name": "SECONDS_PER_HOUR",
                  "nameLocation": "1089:16:68",
                  "nodeType": "VariableDeclaration",
                  "scope": 22113,
                  "src": "1063:52:68",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20592,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1063:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_3600_by_1",
                      "typeString": "int_const 3600"
                    },
                    "id": 20595,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "3630",
                      "id": 20593,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1108:2:68",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_60_by_1",
                        "typeString": "int_const 60"
                      },
                      "value": "60"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "hexValue": "3630",
                      "id": 20594,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1113:2:68",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_60_by_1",
                        "typeString": "int_const 60"
                      },
                      "value": "60"
                    },
                    "src": "1108:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3600_by_1",
                      "typeString": "int_const 3600"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 20599,
                  "mutability": "constant",
                  "name": "SECONDS_PER_MINUTE",
                  "nameLocation": "1147:18:68",
                  "nodeType": "VariableDeclaration",
                  "scope": 22113,
                  "src": "1121:49:68",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20597,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1121:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3630",
                    "id": 20598,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1168:2:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_60_by_1",
                      "typeString": "int_const 60"
                    },
                    "value": "60"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 20602,
                  "mutability": "constant",
                  "name": "OFFSET19700101",
                  "nameLocation": "1201:14:68",
                  "nodeType": "VariableDeclaration",
                  "scope": 22113,
                  "src": "1176:51:68",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 20600,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1176:6:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": {
                    "hexValue": "325f3434305f353838",
                    "id": 20601,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1218:9:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2440588_by_1",
                      "typeString": "int_const 2440588"
                    },
                    "value": "2_440_588"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 20605,
                  "mutability": "constant",
                  "name": "DOW_MON",
                  "nameLocation": "1260:7:68",
                  "nodeType": "VariableDeclaration",
                  "scope": 22113,
                  "src": "1234:37:68",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20603,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1234:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "31",
                    "id": 20604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1270:1:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 20608,
                  "mutability": "constant",
                  "name": "DOW_TUE",
                  "nameLocation": "1303:7:68",
                  "nodeType": "VariableDeclaration",
                  "scope": 22113,
                  "src": "1277:37:68",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20606,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1277:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "32",
                    "id": 20607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1313:1:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 20611,
                  "mutability": "constant",
                  "name": "DOW_WED",
                  "nameLocation": "1346:7:68",
                  "nodeType": "VariableDeclaration",
                  "scope": 22113,
                  "src": "1320:37:68",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20609,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1320:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "33",
                    "id": 20610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1356:1:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3_by_1",
                      "typeString": "int_const 3"
                    },
                    "value": "3"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 20614,
                  "mutability": "constant",
                  "name": "DOW_THU",
                  "nameLocation": "1389:7:68",
                  "nodeType": "VariableDeclaration",
                  "scope": 22113,
                  "src": "1363:37:68",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20612,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1363:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "34",
                    "id": 20613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1399:1:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4_by_1",
                      "typeString": "int_const 4"
                    },
                    "value": "4"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 20617,
                  "mutability": "constant",
                  "name": "DOW_FRI",
                  "nameLocation": "1432:7:68",
                  "nodeType": "VariableDeclaration",
                  "scope": 22113,
                  "src": "1406:37:68",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20615,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1406:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "35",
                    "id": 20616,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1442:1:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_5_by_1",
                      "typeString": "int_const 5"
                    },
                    "value": "5"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 20620,
                  "mutability": "constant",
                  "name": "DOW_SAT",
                  "nameLocation": "1475:7:68",
                  "nodeType": "VariableDeclaration",
                  "scope": 22113,
                  "src": "1449:37:68",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20618,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1449:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "36",
                    "id": 20619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1485:1:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_6_by_1",
                      "typeString": "int_const 6"
                    },
                    "value": "6"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 20623,
                  "mutability": "constant",
                  "name": "DOW_SUN",
                  "nameLocation": "1518:7:68",
                  "nodeType": "VariableDeclaration",
                  "scope": 22113,
                  "src": "1492:37:68",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20621,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1492:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "37",
                    "id": 20622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1528:1:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_7_by_1",
                      "typeString": "int_const 7"
                    },
                    "value": "7"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20741,
                    "nodeType": "Block",
                    "src": "2292:818:68",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 20635,
                                "name": "year",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20625,
                                "src": "2310:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "hexValue": "31393730",
                                "id": 20636,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2318:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1970_by_1",
                                  "typeString": "int_const 1970"
                                },
                                "value": "1970"
                              },
                              "src": "2310:12:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "596561722063616e6e6f74206265206561726c696572207468616e2031393730",
                              "id": 20638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2324:34:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_68c53877b9eb12ad5e49bbe3eaab6d6d8d040041a1595c7a867db751ffe8e621",
                                "typeString": "literal_string \"Year cannot be earlier than 1970\""
                              },
                              "value": "Year cannot be earlier than 1970"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_68c53877b9eb12ad5e49bbe3eaab6d6d8d040041a1595c7a867db751ffe8e621",
                                "typeString": "literal_string \"Year cannot be earlier than 1970\""
                              }
                            ],
                            "id": 20634,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2302:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2302:57:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20640,
                        "nodeType": "ExpressionStatement",
                        "src": "2302:57:68"
                      },
                      {
                        "assignments": [
                          20642
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20642,
                            "mutability": "mutable",
                            "name": "_year",
                            "nameLocation": "2376:5:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20741,
                            "src": "2369:12:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20641,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2369:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20647,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 20645,
                              "name": "year",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20625,
                              "src": "2391:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20644,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2384:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 20643,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2384:6:68",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 20646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2384:12:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2369:27:68"
                      },
                      {
                        "assignments": [
                          20649
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20649,
                            "mutability": "mutable",
                            "name": "_month",
                            "nameLocation": "2413:6:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20741,
                            "src": "2406:13:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20648,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2406:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20654,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 20652,
                              "name": "month",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20627,
                              "src": "2429:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20651,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2422:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 20650,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2422:6:68",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 20653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2422:13:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2406:29:68"
                      },
                      {
                        "assignments": [
                          20656
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20656,
                            "mutability": "mutable",
                            "name": "_day",
                            "nameLocation": "2452:4:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20741,
                            "src": "2445:11:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20655,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2445:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20661,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 20659,
                              "name": "day",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20629,
                              "src": "2466:3:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20658,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2459:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 20657,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2459:6:68",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 20660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2459:11:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2445:25:68"
                      },
                      {
                        "assignments": [
                          20663
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20663,
                            "mutability": "mutable",
                            "name": "monthAdjustment",
                            "nameLocation": "2529:15:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20741,
                            "src": "2522:22:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20662,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2522:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20670,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 20669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 20666,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 20664,
                                  "name": "_month",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20649,
                                  "src": "2548:6:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "3134",
                                  "id": 20665,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2557:2:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_14_by_1",
                                    "typeString": "int_const 14"
                                  },
                                  "value": "14"
                                },
                                "src": "2548:11:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 20667,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2547:13:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "hexValue": "3132",
                            "id": 20668,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2563:2:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_12_by_1",
                              "typeString": "int_const 12"
                            },
                            "value": "12"
                          },
                          "src": "2547:18:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2522:43:68"
                      },
                      {
                        "assignments": [
                          20672
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20672,
                            "mutability": "mutable",
                            "name": "adjustedYear",
                            "nameLocation": "2582:12:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20741,
                            "src": "2575:19:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20671,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2575:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20678,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 20677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 20675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 20673,
                              "name": "_year",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20642,
                              "src": "2597:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "34383030",
                              "id": 20674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2605:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4800_by_1",
                                "typeString": "int_const 4800"
                              },
                              "value": "4800"
                            },
                            "src": "2597:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 20676,
                            "name": "monthAdjustment",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20663,
                            "src": "2612:15:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "2597:30:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2575:52:68"
                      },
                      {
                        "assignments": [
                          20680
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20680,
                            "mutability": "mutable",
                            "name": "adjustedMonth",
                            "nameLocation": "2685:13:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20741,
                            "src": "2678:20:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20679,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2678:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20689,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 20688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 20683,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 20681,
                              "name": "_month",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20649,
                              "src": "2701:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 20682,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2710:1:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "2701:10:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 20686,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 20684,
                                  "name": "monthAdjustment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20663,
                                  "src": "2715:15:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "hexValue": "3132",
                                  "id": 20685,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2733:2:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_12_by_1",
                                    "typeString": "int_const 12"
                                  },
                                  "value": "12"
                                },
                                "src": "2715:20:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 20687,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2714:22:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "2701:35:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2678:58:68"
                      },
                      {
                        "assignments": [
                          20691
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20691,
                            "mutability": "mutable",
                            "name": "temp1",
                            "nameLocation": "2806:5:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20741,
                            "src": "2799:12:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20690,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2799:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20695,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 20694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "31343631",
                            "id": 20692,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2814:4:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1461_by_1",
                              "typeString": "int_const 1461"
                            },
                            "value": "1461"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 20693,
                            "name": "adjustedYear",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20672,
                            "src": "2821:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "2814:19:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2799:34:68"
                      },
                      {
                        "assignments": [
                          20697
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20697,
                            "mutability": "mutable",
                            "name": "temp2",
                            "nameLocation": "2850:5:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20741,
                            "src": "2843:12:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20696,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2843:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20701,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 20700,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "333637",
                            "id": 20698,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2858:3:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_367_by_1",
                              "typeString": "int_const 367"
                            },
                            "value": "367"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 20699,
                            "name": "adjustedMonth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20680,
                            "src": "2864:13:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "2858:19:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2843:34:68"
                      },
                      {
                        "assignments": [
                          20703
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20703,
                            "mutability": "mutable",
                            "name": "temp3",
                            "nameLocation": "2935:5:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20741,
                            "src": "2928:12:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20702,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2928:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20713,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 20712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "33",
                            "id": 20704,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2943:1:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 20710,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 20707,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 20705,
                                        "name": "adjustedYear",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20672,
                                        "src": "2949:12:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "313030",
                                        "id": 20706,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2964:3:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_100_by_1",
                                          "typeString": "int_const 100"
                                        },
                                        "value": "100"
                                      },
                                      "src": "2949:18:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 20708,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2948:20:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "313030",
                                  "id": 20709,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2971:3:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_100_by_1",
                                    "typeString": "int_const 100"
                                  },
                                  "value": "100"
                                },
                                "src": "2948:26:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 20711,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2947:28:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "2943:32:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2928:47:68"
                      },
                      {
                        "assignments": [
                          20715
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20715,
                            "mutability": "mutable",
                            "name": "__days",
                            "nameLocation": "2993:6:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20741,
                            "src": "2986:13:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20714,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2986:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20733,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 20732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 20730,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 20726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 20722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 20718,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 20716,
                                    "name": "_day",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20656,
                                    "src": "3002:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "33325f303735",
                                    "id": 20717,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3009:6:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_32075_by_1",
                                      "typeString": "int_const 32075"
                                    },
                                    "value": "32_075"
                                  },
                                  "src": "3002:13:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 20721,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 20719,
                                    "name": "temp1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20691,
                                    "src": "3018:5:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "hexValue": "34",
                                    "id": 20720,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3026:1:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "src": "3018:9:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "3002:25:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 20725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 20723,
                                  "name": "temp2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20697,
                                  "src": "3030:5:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "3132",
                                  "id": 20724,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3038:2:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_12_by_1",
                                    "typeString": "int_const 12"
                                  },
                                  "value": "12"
                                },
                                "src": "3030:10:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "3002:38:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 20729,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 20727,
                                "name": "temp3",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20703,
                                "src": "3043:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "hexValue": "34",
                                "id": 20728,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3051:1:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "3043:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "3002:50:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 20731,
                            "name": "OFFSET19700101",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20602,
                            "src": "3055:14:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "3002:67:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2986:83:68"
                      },
                      {
                        "expression": {
                          "id": 20739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20734,
                            "name": "_days",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20632,
                            "src": "3080:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20737,
                                "name": "__days",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20715,
                                "src": "3096:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 20736,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3088:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 20735,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3088:7:68",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 20738,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3088:15:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3080:23:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20740,
                        "nodeType": "ExpressionStatement",
                        "src": "3080:23:68"
                      }
                    ]
                  },
                  "id": 20742,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_daysFromDate",
                  "nameLocation": "2198:13:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20630,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20625,
                        "mutability": "mutable",
                        "name": "year",
                        "nameLocation": "2220:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20742,
                        "src": "2212:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20624,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2212:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20627,
                        "mutability": "mutable",
                        "name": "month",
                        "nameLocation": "2234:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20742,
                        "src": "2226:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20626,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2226:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20629,
                        "mutability": "mutable",
                        "name": "day",
                        "nameLocation": "2249:3:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20742,
                        "src": "2241:11:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20628,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2241:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2211:42:68"
                  },
                  "returnParameters": {
                    "id": 20633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20632,
                        "mutability": "mutable",
                        "name": "_days",
                        "nameLocation": "2285:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20742,
                        "src": "2277:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20631,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2277:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2276:15:68"
                  },
                  "scope": 22113,
                  "src": "2189:921:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20890,
                    "nodeType": "Block",
                    "src": "3620:1069:68",
                    "statements": [
                      {
                        "assignments": [
                          20754
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20754,
                            "mutability": "mutable",
                            "name": "__days",
                            "nameLocation": "3637:6:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20890,
                            "src": "3630:13:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20753,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3630:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20759,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 20757,
                              "name": "_days",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20744,
                              "src": "3653:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20756,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3646:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 20755,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3646:6:68",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 20758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3646:13:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3630:29:68"
                      },
                      {
                        "assignments": [
                          20761
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20761,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "3677:6:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20890,
                            "src": "3670:13:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20760,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3670:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20767,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 20766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 20764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 20762,
                              "name": "__days",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20754,
                              "src": "3686:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "36385f353639",
                              "id": 20763,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3695:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_68569_by_1",
                                "typeString": "int_const 68569"
                              },
                              "value": "68_569"
                            },
                            "src": "3686:15:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 20765,
                            "name": "OFFSET19700101",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20602,
                            "src": "3704:14:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "3686:32:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3670:48:68"
                      },
                      {
                        "assignments": [
                          20769
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20769,
                            "mutability": "mutable",
                            "name": "n",
                            "nameLocation": "3776:1:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20890,
                            "src": "3769:8:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20768,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3769:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20776,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 20775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 20772,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "34",
                                  "id": 20770,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3781:1:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 20771,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20761,
                                  "src": "3785:6:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "3781:10:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 20773,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3780:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "hexValue": "3134365f303937",
                            "id": 20774,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3795:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_146097_by_1",
                              "typeString": "int_const 146097"
                            },
                            "value": "146_097"
                          },
                          "src": "3780:22:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3769:33:68"
                      },
                      {
                        "expression": {
                          "id": 20788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20777,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20761,
                            "src": "3853:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 20787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 20778,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20761,
                              "src": "3862:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 20786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 20783,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 20781,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3134365f303937",
                                        "id": 20779,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3872:7:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_146097_by_1",
                                          "typeString": "int_const 146097"
                                        },
                                        "value": "146_097"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 20780,
                                        "name": "n",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20769,
                                        "src": "3882:1:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "3872:11:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "hexValue": "33",
                                      "id": 20782,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3886:1:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "src": "3872:15:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "id": 20784,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3871:17:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "hexValue": "34",
                                "id": 20785,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3891:1:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "3871:21:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "3862:30:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "3853:39:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 20789,
                        "nodeType": "ExpressionStatement",
                        "src": "3853:39:68"
                      },
                      {
                        "assignments": [
                          20791
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20791,
                            "mutability": "mutable",
                            "name": "_year",
                            "nameLocation": "3950:5:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20890,
                            "src": "3943:12:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20790,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3943:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20801,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 20800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 20797,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "34303030",
                                  "id": 20792,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3959:4:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4000_by_1",
                                    "typeString": "int_const 4000"
                                  },
                                  "value": "4000"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 20795,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 20793,
                                        "name": "length",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20761,
                                        "src": "3967:6:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 20794,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3976:1:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "3967:10:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 20796,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "3966:12:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "3959:19:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 20798,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3958:21:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "hexValue": "315f3436315f303031",
                            "id": 20799,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3982:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1461001_by_1",
                              "typeString": "int_const 1461001"
                            },
                            "value": "1_461_001"
                          },
                          "src": "3958:33:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3943:48:68"
                      },
                      {
                        "expression": {
                          "id": 20813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20802,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20761,
                            "src": "4042:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 20812,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 20810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 20803,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20761,
                                "src": "4051:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 20809,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 20806,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "31343631",
                                        "id": 20804,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4061:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1461_by_1",
                                          "typeString": "int_const 1461"
                                        },
                                        "value": "1461"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 20805,
                                        "name": "_year",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20791,
                                        "src": "4068:5:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "4061:12:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 20807,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "4060:14:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "34",
                                  "id": 20808,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4077:1:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "4060:18:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "4051:27:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "3331",
                              "id": 20811,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4081:2:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_31_by_1",
                                "typeString": "int_const 31"
                              },
                              "value": "31"
                            },
                            "src": "4051:32:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "4042:41:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 20814,
                        "nodeType": "ExpressionStatement",
                        "src": "4042:41:68"
                      },
                      {
                        "assignments": [
                          20816
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20816,
                            "mutability": "mutable",
                            "name": "tempMonth",
                            "nameLocation": "4179:9:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20890,
                            "src": "4172:16:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20815,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4172:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20821,
                        "initialValue": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 20819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "3830",
                                "id": 20817,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4192:2:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_80_by_1",
                                  "typeString": "int_const 80"
                                },
                                "value": "80"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 20818,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20761,
                                "src": "4197:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "4192:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "id": 20820,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4191:13:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4172:32:68"
                      },
                      {
                        "assignments": [
                          20823
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20823,
                            "mutability": "mutable",
                            "name": "_month",
                            "nameLocation": "4262:6:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20890,
                            "src": "4255:13:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20822,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4255:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20827,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 20826,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20824,
                            "name": "tempMonth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20816,
                            "src": "4271:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "hexValue": "32343437",
                            "id": 20825,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4283:4:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2447_by_1",
                              "typeString": "int_const 2447"
                            },
                            "value": "2447"
                          },
                          "src": "4271:16:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4255:32:68"
                      },
                      {
                        "assignments": [
                          20829
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20829,
                            "mutability": "mutable",
                            "name": "_day",
                            "nameLocation": "4345:4:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 20890,
                            "src": "4338:11:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 20828,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4338:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20839,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 20838,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20830,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20761,
                            "src": "4352:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 20836,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 20833,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "32343437",
                                        "id": 20831,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4363:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2447_by_1",
                                          "typeString": "int_const 2447"
                                        },
                                        "value": "2447"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 20832,
                                        "name": "_month",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20823,
                                        "src": "4370:6:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "4363:13:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 20834,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "4362:15:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "3830",
                                  "id": 20835,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4380:2:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_80_by_1",
                                    "typeString": "int_const 80"
                                  },
                                  "value": "80"
                                },
                                "src": "4362:20:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 20837,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4361:22:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "4352:31:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4338:45:68"
                      },
                      {
                        "expression": {
                          "id": 20844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20840,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20761,
                            "src": "4435:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 20843,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 20841,
                              "name": "_month",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20823,
                              "src": "4444:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "hexValue": "3131",
                              "id": 20842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4453:2:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_11_by_1",
                                "typeString": "int_const 11"
                              },
                              "value": "11"
                            },
                            "src": "4444:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "4435:20:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 20845,
                        "nodeType": "ExpressionStatement",
                        "src": "4435:20:68"
                      },
                      {
                        "expression": {
                          "id": 20854,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20846,
                            "name": "_month",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20823,
                            "src": "4465:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 20853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 20849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 20847,
                                "name": "_month",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20823,
                                "src": "4474:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "32",
                                "id": 20848,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4483:1:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "4474:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 20852,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "3132",
                                "id": 20850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4487:2:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_12_by_1",
                                  "typeString": "int_const 12"
                                },
                                "value": "12"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 20851,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20761,
                                "src": "4492:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "4487:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "4474:24:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "4465:33:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 20855,
                        "nodeType": "ExpressionStatement",
                        "src": "4465:33:68"
                      },
                      {
                        "expression": {
                          "id": 20867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20856,
                            "name": "_year",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20791,
                            "src": "4549:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 20866,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 20864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 20862,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "313030",
                                  "id": 20857,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4557:3:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_100_by_1",
                                    "typeString": "int_const 100"
                                  },
                                  "value": "100"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 20860,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 20858,
                                        "name": "n",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20769,
                                        "src": "4564:1:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "hexValue": "3439",
                                        "id": 20859,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4568:2:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_49_by_1",
                                          "typeString": "int_const 49"
                                        },
                                        "value": "49"
                                      },
                                      "src": "4564:6:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 20861,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "4563:8:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "4557:14:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "id": 20863,
                                "name": "_year",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20791,
                                "src": "4574:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "4557:22:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 20865,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20761,
                              "src": "4582:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "4557:31:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "4549:39:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 20868,
                        "nodeType": "ExpressionStatement",
                        "src": "4549:39:68"
                      },
                      {
                        "expression": {
                          "id": 20874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20869,
                            "name": "year",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20747,
                            "src": "4599:4:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20872,
                                "name": "_year",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20791,
                                "src": "4614:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 20871,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4606:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 20870,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4606:7:68",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 20873,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4606:14:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4599:21:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20875,
                        "nodeType": "ExpressionStatement",
                        "src": "4599:21:68"
                      },
                      {
                        "expression": {
                          "id": 20881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20876,
                            "name": "month",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20749,
                            "src": "4630:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20879,
                                "name": "_month",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20823,
                                "src": "4646:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 20878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4638:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 20877,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4638:7:68",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 20880,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4638:15:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4630:23:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20882,
                        "nodeType": "ExpressionStatement",
                        "src": "4630:23:68"
                      },
                      {
                        "expression": {
                          "id": 20888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20883,
                            "name": "day",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20751,
                            "src": "4663:3:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20886,
                                "name": "_day",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20829,
                                "src": "4677:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 20885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4669:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 20884,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4669:7:68",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 20887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4669:13:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4663:19:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20889,
                        "nodeType": "ExpressionStatement",
                        "src": "4663:19:68"
                      }
                    ]
                  },
                  "id": 20891,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_daysToDate",
                  "nameLocation": "3528:11:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20745,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20744,
                        "mutability": "mutable",
                        "name": "_days",
                        "nameLocation": "3548:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20891,
                        "src": "3540:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20743,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3540:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3539:15:68"
                  },
                  "returnParameters": {
                    "id": 20752,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20747,
                        "mutability": "mutable",
                        "name": "year",
                        "nameLocation": "3586:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20891,
                        "src": "3578:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20746,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3578:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20749,
                        "mutability": "mutable",
                        "name": "month",
                        "nameLocation": "3600:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20891,
                        "src": "3592:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20748,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3592:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20751,
                        "mutability": "mutable",
                        "name": "day",
                        "nameLocation": "3615:3:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20891,
                        "src": "3607:11:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20750,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3607:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3577:42:68"
                  },
                  "scope": 22113,
                  "src": "3519:1170:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20912,
                    "nodeType": "Block",
                    "src": "4806:78:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 20910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20902,
                            "name": "timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20900,
                            "src": "4816:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 20909,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 20904,
                                  "name": "year",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20893,
                                  "src": "4842:4:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 20905,
                                  "name": "month",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20895,
                                  "src": "4848:5:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 20906,
                                  "name": "day",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20897,
                                  "src": "4855:3:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 20903,
                                "name": "_daysFromDate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20742,
                                "src": "4828:13:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 20907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4828:31:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "id": 20908,
                              "name": "SECONDS_PER_DAY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20591,
                              "src": "4862:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4828:49:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4816:61:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20911,
                        "nodeType": "ExpressionStatement",
                        "src": "4816:61:68"
                      }
                    ]
                  },
                  "id": 20913,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "timestampFromDate",
                  "nameLocation": "4704:17:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20898,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20893,
                        "mutability": "mutable",
                        "name": "year",
                        "nameLocation": "4730:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20913,
                        "src": "4722:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20892,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4722:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20895,
                        "mutability": "mutable",
                        "name": "month",
                        "nameLocation": "4744:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20913,
                        "src": "4736:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20894,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4736:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20897,
                        "mutability": "mutable",
                        "name": "day",
                        "nameLocation": "4759:3:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20913,
                        "src": "4751:11:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20896,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4751:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4721:42:68"
                  },
                  "returnParameters": {
                    "id": 20901,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20900,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "4795:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20913,
                        "src": "4787:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20899,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4787:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4786:19:68"
                  },
                  "scope": 22113,
                  "src": "4695:189:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20950,
                    "nodeType": "Block",
                    "src": "5133:155:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 20948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20930,
                            "name": "timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20928,
                            "src": "5143:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 20947,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20945,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20941,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20937,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 20932,
                                        "name": "year",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20915,
                                        "src": "5169:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 20933,
                                        "name": "month",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20917,
                                        "src": "5175:5:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 20934,
                                        "name": "day",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20919,
                                        "src": "5182:3:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 20931,
                                      "name": "_daysFromDate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20742,
                                      "src": "5155:13:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 20935,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5155:31:68",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 20936,
                                    "name": "SECONDS_PER_DAY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20591,
                                    "src": "5189:15:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5155:49:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20940,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 20938,
                                    "name": "hour",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20921,
                                    "src": "5207:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 20939,
                                    "name": "SECONDS_PER_HOUR",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20596,
                                    "src": "5214:16:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5207:23:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5155:75:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20944,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 20942,
                                  "name": "minute",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20923,
                                  "src": "5245:6:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 20943,
                                  "name": "SECONDS_PER_MINUTE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20599,
                                  "src": "5254:18:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5245:27:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5155:117:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 20946,
                              "name": "second",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20925,
                              "src": "5275:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5155:126:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5143:138:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20949,
                        "nodeType": "ExpressionStatement",
                        "src": "5143:138:68"
                      }
                    ]
                  },
                  "id": 20951,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "timestampFromDateTime",
                  "nameLocation": "4899:21:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20926,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20915,
                        "mutability": "mutable",
                        "name": "year",
                        "nameLocation": "4938:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20951,
                        "src": "4930:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20914,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4930:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20917,
                        "mutability": "mutable",
                        "name": "month",
                        "nameLocation": "4960:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20951,
                        "src": "4952:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20916,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4952:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20919,
                        "mutability": "mutable",
                        "name": "day",
                        "nameLocation": "4983:3:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20951,
                        "src": "4975:11:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20918,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4975:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20921,
                        "mutability": "mutable",
                        "name": "hour",
                        "nameLocation": "5004:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20951,
                        "src": "4996:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20920,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4996:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20923,
                        "mutability": "mutable",
                        "name": "minute",
                        "nameLocation": "5026:6:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20951,
                        "src": "5018:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20922,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5018:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20925,
                        "mutability": "mutable",
                        "name": "second",
                        "nameLocation": "5050:6:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20951,
                        "src": "5042:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20924,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5042:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4920:142:68"
                  },
                  "returnParameters": {
                    "id": 20929,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20928,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "5118:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20951,
                        "src": "5110:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20927,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5110:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5109:19:68"
                  },
                  "scope": 22113,
                  "src": "4890:398:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20973,
                    "nodeType": "Block",
                    "src": "5403:78:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 20971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 20962,
                                "name": "year",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20956,
                                "src": "5414:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 20963,
                                "name": "month",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20958,
                                "src": "5420:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 20964,
                                "name": "day",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20960,
                                "src": "5427:3:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20965,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5413:18:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20969,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 20967,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20953,
                                  "src": "5446:9:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 20968,
                                  "name": "SECONDS_PER_DAY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20591,
                                  "src": "5458:15:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5446:27:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 20966,
                              "name": "_daysToDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20891,
                              "src": "5434:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 20970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5434:40:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "5413:61:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20972,
                        "nodeType": "ExpressionStatement",
                        "src": "5413:61:68"
                      }
                    ]
                  },
                  "id": 20974,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "timestampToDate",
                  "nameLocation": "5303:15:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20954,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20953,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "5327:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20974,
                        "src": "5319:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20952,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5319:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5318:19:68"
                  },
                  "returnParameters": {
                    "id": 20961,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20956,
                        "mutability": "mutable",
                        "name": "year",
                        "nameLocation": "5369:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20974,
                        "src": "5361:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20955,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5361:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20958,
                        "mutability": "mutable",
                        "name": "month",
                        "nameLocation": "5383:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20974,
                        "src": "5375:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20957,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5375:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20960,
                        "mutability": "mutable",
                        "name": "day",
                        "nameLocation": "5398:3:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 20974,
                        "src": "5390:11:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20959,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5390:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5360:42:68"
                  },
                  "scope": 22113,
                  "src": "5294:187:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21032,
                    "nodeType": "Block",
                    "src": "5674:298:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 20991,
                                "name": "year",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20979,
                                "src": "5685:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 20992,
                                "name": "month",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20981,
                                "src": "5691:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 20993,
                                "name": "day",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20983,
                                "src": "5698:3:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20994,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5684:18:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20998,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 20996,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20976,
                                  "src": "5717:9:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 20997,
                                  "name": "SECONDS_PER_DAY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20591,
                                  "src": "5729:15:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5717:27:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 20995,
                              "name": "_daysToDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20891,
                              "src": "5705:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 20999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5705:40:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "5684:61:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21001,
                        "nodeType": "ExpressionStatement",
                        "src": "5684:61:68"
                      },
                      {
                        "assignments": [
                          21003
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21003,
                            "mutability": "mutable",
                            "name": "secs",
                            "nameLocation": "5763:4:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21032,
                            "src": "5755:12:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21002,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5755:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21007,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21004,
                            "name": "timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20976,
                            "src": "5770:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "%",
                          "rightExpression": {
                            "id": 21005,
                            "name": "SECONDS_PER_DAY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20591,
                            "src": "5782:15:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5770:27:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5755:42:68"
                      },
                      {
                        "expression": {
                          "id": 21012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21008,
                            "name": "hour",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20985,
                            "src": "5807:4:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21009,
                              "name": "secs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21003,
                              "src": "5814:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 21010,
                              "name": "SECONDS_PER_HOUR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20596,
                              "src": "5821:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5814:23:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5807:30:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21013,
                        "nodeType": "ExpressionStatement",
                        "src": "5807:30:68"
                      },
                      {
                        "expression": {
                          "id": 21018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21014,
                            "name": "secs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21003,
                            "src": "5847:4:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21015,
                              "name": "secs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21003,
                              "src": "5854:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "id": 21016,
                              "name": "SECONDS_PER_HOUR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20596,
                              "src": "5861:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5854:23:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5847:30:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21019,
                        "nodeType": "ExpressionStatement",
                        "src": "5847:30:68"
                      },
                      {
                        "expression": {
                          "id": 21024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21020,
                            "name": "minute",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20987,
                            "src": "5887:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21021,
                              "name": "secs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21003,
                              "src": "5896:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 21022,
                              "name": "SECONDS_PER_MINUTE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20599,
                              "src": "5903:18:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5896:25:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5887:34:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21025,
                        "nodeType": "ExpressionStatement",
                        "src": "5887:34:68"
                      },
                      {
                        "expression": {
                          "id": 21030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21026,
                            "name": "second",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20989,
                            "src": "5931:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21029,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21027,
                              "name": "secs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21003,
                              "src": "5940:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "id": 21028,
                              "name": "SECONDS_PER_MINUTE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20599,
                              "src": "5947:18:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5940:25:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5931:34:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21031,
                        "nodeType": "ExpressionStatement",
                        "src": "5931:34:68"
                      }
                    ]
                  },
                  "id": 21033,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "timestampToDateTime",
                  "nameLocation": "5496:19:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20977,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20976,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "5524:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21033,
                        "src": "5516:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20975,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5516:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5515:19:68"
                  },
                  "returnParameters": {
                    "id": 20990,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20979,
                        "mutability": "mutable",
                        "name": "year",
                        "nameLocation": "5590:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21033,
                        "src": "5582:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20978,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5582:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20981,
                        "mutability": "mutable",
                        "name": "month",
                        "nameLocation": "5604:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21033,
                        "src": "5596:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20980,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5596:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20983,
                        "mutability": "mutable",
                        "name": "day",
                        "nameLocation": "5619:3:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21033,
                        "src": "5611:11:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20982,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5611:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20985,
                        "mutability": "mutable",
                        "name": "hour",
                        "nameLocation": "5632:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21033,
                        "src": "5624:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20984,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5624:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20987,
                        "mutability": "mutable",
                        "name": "minute",
                        "nameLocation": "5646:6:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21033,
                        "src": "5638:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20986,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5638:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20989,
                        "mutability": "mutable",
                        "name": "second",
                        "nameLocation": "5662:6:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21033,
                        "src": "5654:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20988,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5654:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5581:88:68"
                  },
                  "scope": 22113,
                  "src": "5487:485:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21077,
                    "nodeType": "Block",
                    "src": "6076:230:68",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 21054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 21050,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21046,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21044,
                                "name": "year",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21035,
                                "src": "6090:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "hexValue": "31393730",
                                "id": 21045,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6098:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1970_by_1",
                                  "typeString": "int_const 1970"
                                },
                                "value": "1970"
                              },
                              "src": "6090:12:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21049,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21047,
                                "name": "month",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21037,
                                "src": "6106:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 21048,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6114:1:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6106:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "6090:25:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21051,
                              "name": "month",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21037,
                              "src": "6119:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "hexValue": "3132",
                              "id": 21052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6128:2:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_12_by_1",
                                "typeString": "int_const 12"
                              },
                              "value": "12"
                            },
                            "src": "6119:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6090:40:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21076,
                        "nodeType": "IfStatement",
                        "src": "6086:214:68",
                        "trueBody": {
                          "id": 21075,
                          "nodeType": "Block",
                          "src": "6132:168:68",
                          "statements": [
                            {
                              "assignments": [
                                21056
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 21056,
                                  "mutability": "mutable",
                                  "name": "daysInMonth",
                                  "nameLocation": "6154:11:68",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 21075,
                                  "src": "6146:19:68",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 21055,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6146:7:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 21061,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 21058,
                                    "name": "year",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21035,
                                    "src": "6184:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 21059,
                                    "name": "month",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21037,
                                    "src": "6190:5:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 21057,
                                  "name": "_getDaysInMonth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21293,
                                  "src": "6168:15:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 21060,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6168:28:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6146:50:68"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 21068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21064,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21062,
                                    "name": "day",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21039,
                                    "src": "6214:3:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 21063,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6220:1:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6214:7:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21067,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21065,
                                    "name": "day",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21039,
                                    "src": "6225:3:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "id": 21066,
                                    "name": "daysInMonth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21056,
                                    "src": "6232:11:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6225:18:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6214:29:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 21074,
                              "nodeType": "IfStatement",
                              "src": "6210:80:68",
                              "trueBody": {
                                "id": 21073,
                                "nodeType": "Block",
                                "src": "6245:45:68",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 21071,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 21069,
                                        "name": "valid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21042,
                                        "src": "6263:5:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "74727565",
                                        "id": 21070,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6271:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "true"
                                      },
                                      "src": "6263:12:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 21072,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6263:12:68"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 21078,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidDate",
                  "nameLocation": "5987:11:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21040,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21035,
                        "mutability": "mutable",
                        "name": "year",
                        "nameLocation": "6007:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21078,
                        "src": "5999:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21034,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5999:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21037,
                        "mutability": "mutable",
                        "name": "month",
                        "nameLocation": "6021:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21078,
                        "src": "6013:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21036,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6013:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21039,
                        "mutability": "mutable",
                        "name": "day",
                        "nameLocation": "6036:3:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21078,
                        "src": "6028:11:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21038,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6028:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5998:42:68"
                  },
                  "returnParameters": {
                    "id": 21043,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21042,
                        "mutability": "mutable",
                        "name": "valid",
                        "nameLocation": "6069:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21078,
                        "src": "6064:10:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21041,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6064:4:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6063:12:68"
                  },
                  "scope": 22113,
                  "src": "5978:328:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21119,
                    "nodeType": "Block",
                    "src": "6542:165:68",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 21096,
                              "name": "year",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21080,
                              "src": "6568:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 21097,
                              "name": "month",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21082,
                              "src": "6574:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 21098,
                              "name": "day",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21084,
                              "src": "6581:3:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21095,
                            "name": "isValidDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21078,
                            "src": "6556:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                            }
                          },
                          "id": 21099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6556:29:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21118,
                        "nodeType": "IfStatement",
                        "src": "6552:149:68",
                        "trueBody": {
                          "id": 21117,
                          "nodeType": "Block",
                          "src": "6587:114:68",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 21110,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 21106,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 21102,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 21100,
                                      "name": "hour",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21086,
                                      "src": "6605:4:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "hexValue": "3234",
                                      "id": 21101,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6612:2:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_24_by_1",
                                        "typeString": "int_const 24"
                                      },
                                      "value": "24"
                                    },
                                    "src": "6605:9:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 21105,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 21103,
                                      "name": "minute",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21088,
                                      "src": "6618:6:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "hexValue": "3630",
                                      "id": 21104,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6627:2:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_60_by_1",
                                        "typeString": "int_const 60"
                                      },
                                      "value": "60"
                                    },
                                    "src": "6618:11:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "6605:24:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21109,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21107,
                                    "name": "second",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21090,
                                    "src": "6633:6:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "hexValue": "3630",
                                    "id": 21108,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6642:2:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_60_by_1",
                                      "typeString": "int_const 60"
                                    },
                                    "value": "60"
                                  },
                                  "src": "6633:11:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6605:39:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 21116,
                              "nodeType": "IfStatement",
                              "src": "6601:90:68",
                              "trueBody": {
                                "id": 21115,
                                "nodeType": "Block",
                                "src": "6646:45:68",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 21113,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 21111,
                                        "name": "valid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21093,
                                        "src": "6664:5:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "74727565",
                                        "id": 21112,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6672:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "true"
                                      },
                                      "src": "6664:12:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 21114,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6664:12:68"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 21120,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidDateTime",
                  "nameLocation": "6321:15:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21091,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21080,
                        "mutability": "mutable",
                        "name": "year",
                        "nameLocation": "6354:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21120,
                        "src": "6346:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21079,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6346:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21082,
                        "mutability": "mutable",
                        "name": "month",
                        "nameLocation": "6376:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21120,
                        "src": "6368:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21081,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6368:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21084,
                        "mutability": "mutable",
                        "name": "day",
                        "nameLocation": "6399:3:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21120,
                        "src": "6391:11:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21083,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6391:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21086,
                        "mutability": "mutable",
                        "name": "hour",
                        "nameLocation": "6420:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21120,
                        "src": "6412:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21085,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6412:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21088,
                        "mutability": "mutable",
                        "name": "minute",
                        "nameLocation": "6442:6:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21120,
                        "src": "6434:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21087,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6434:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21090,
                        "mutability": "mutable",
                        "name": "second",
                        "nameLocation": "6466:6:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21120,
                        "src": "6458:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21089,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6458:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6336:142:68"
                  },
                  "returnParameters": {
                    "id": 21094,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21093,
                        "mutability": "mutable",
                        "name": "valid",
                        "nameLocation": "6531:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21120,
                        "src": "6526:10:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21092,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6526:4:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6525:12:68"
                  },
                  "scope": 22113,
                  "src": "6312:395:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21141,
                    "nodeType": "Block",
                    "src": "6790:114:68",
                    "statements": [
                      {
                        "assignments": [
                          21128,
                          null,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21128,
                            "mutability": "mutable",
                            "name": "year",
                            "nameLocation": "6809:4:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21141,
                            "src": "6801:12:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21127,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6801:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          null,
                          null
                        ],
                        "id": 21134,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21130,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21122,
                                "src": "6831:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "id": 21131,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "6843:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6831:27:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21129,
                            "name": "_daysToDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20891,
                            "src": "6819:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 21133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6819:40:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6800:59:68"
                      },
                      {
                        "expression": {
                          "id": 21139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21135,
                            "name": "leapYear",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21125,
                            "src": "6869:8:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 21137,
                                "name": "year",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21128,
                                "src": "6892:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 21136,
                              "name": "_isLeapYear",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21174,
                              "src": "6880:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (uint256) pure returns (bool)"
                              }
                            },
                            "id": 21138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6880:17:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6869:28:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21140,
                        "nodeType": "ExpressionStatement",
                        "src": "6869:28:68"
                      }
                    ]
                  },
                  "id": 21142,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isLeapYear",
                  "nameLocation": "6722:10:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21123,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21122,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "6741:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21142,
                        "src": "6733:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21121,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6733:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6732:19:68"
                  },
                  "returnParameters": {
                    "id": 21126,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21125,
                        "mutability": "mutable",
                        "name": "leapYear",
                        "nameLocation": "6780:8:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21142,
                        "src": "6775:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21124,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6775:4:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6774:15:68"
                  },
                  "scope": 22113,
                  "src": "6713:191:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21173,
                    "nodeType": "Block",
                    "src": "6983:87:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21149,
                            "name": "leapYear",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21147,
                            "src": "6993:8:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 21170,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 21162,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 21154,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 21152,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 21150,
                                            "name": "year",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 21144,
                                            "src": "7006:4:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "%",
                                          "rightExpression": {
                                            "hexValue": "34",
                                            "id": 21151,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7013:1:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_4_by_1",
                                              "typeString": "int_const 4"
                                            },
                                            "value": "4"
                                          },
                                          "src": "7006:8:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 21153,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7018:1:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "7006:13:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "id": 21155,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "7005:15:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 21160,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 21158,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 21156,
                                            "name": "year",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 21144,
                                            "src": "7025:4:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "%",
                                          "rightExpression": {
                                            "hexValue": "313030",
                                            "id": 21157,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7032:3:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_100_by_1",
                                              "typeString": "int_const 100"
                                            },
                                            "value": "100"
                                          },
                                          "src": "7025:10:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 21159,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7039:1:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "7025:15:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "id": 21161,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "7024:17:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "7005:36:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 21163,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7004:38:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21168,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 21166,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 21164,
                                      "name": "year",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21144,
                                      "src": "7047:4:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "%",
                                    "rightExpression": {
                                      "hexValue": "343030",
                                      "id": 21165,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7054:3:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_400_by_1",
                                        "typeString": "int_const 400"
                                      },
                                      "value": "400"
                                    },
                                    "src": "7047:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 21167,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7061:1:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7047:15:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 21169,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7046:17:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "7004:59:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6993:70:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21172,
                        "nodeType": "ExpressionStatement",
                        "src": "6993:70:68"
                      }
                    ]
                  },
                  "id": 21174,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isLeapYear",
                  "nameLocation": "6919:11:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21145,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21144,
                        "mutability": "mutable",
                        "name": "year",
                        "nameLocation": "6939:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21174,
                        "src": "6931:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21143,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6931:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6930:14:68"
                  },
                  "returnParameters": {
                    "id": 21148,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21147,
                        "mutability": "mutable",
                        "name": "leapYear",
                        "nameLocation": "6973:8:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21174,
                        "src": "6968:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21146,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6968:4:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6967:15:68"
                  },
                  "scope": 22113,
                  "src": "6910:160:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21189,
                    "nodeType": "Block",
                    "src": "7151:61:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21181,
                            "name": "weekDay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21179,
                            "src": "7161:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21186,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 21183,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21176,
                                  "src": "7184:9:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 21182,
                                "name": "getDayOfWeek",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21319,
                                "src": "7171:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 21184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7171:23:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "id": 21185,
                              "name": "DOW_FRI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20617,
                              "src": "7198:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7171:34:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7161:44:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21188,
                        "nodeType": "ExpressionStatement",
                        "src": "7161:44:68"
                      }
                    ]
                  },
                  "id": 21190,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isWeekDay",
                  "nameLocation": "7085:9:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21176,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "7103:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21190,
                        "src": "7095:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21175,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7095:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7094:19:68"
                  },
                  "returnParameters": {
                    "id": 21180,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21179,
                        "mutability": "mutable",
                        "name": "weekDay",
                        "nameLocation": "7142:7:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21190,
                        "src": "7137:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21178,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7137:4:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7136:14:68"
                  },
                  "scope": 22113,
                  "src": "7076:136:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21205,
                    "nodeType": "Block",
                    "src": "7293:61:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21197,
                            "name": "weekEnd",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21195,
                            "src": "7303:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21202,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 21199,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21192,
                                  "src": "7326:9:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 21198,
                                "name": "getDayOfWeek",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21319,
                                "src": "7313:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 21200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7313:23:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "id": 21201,
                              "name": "DOW_SAT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20620,
                              "src": "7340:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7313:34:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7303:44:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21204,
                        "nodeType": "ExpressionStatement",
                        "src": "7303:44:68"
                      }
                    ]
                  },
                  "id": 21206,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isWeekEnd",
                  "nameLocation": "7227:9:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21192,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "7245:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21206,
                        "src": "7237:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21191,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7237:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7236:19:68"
                  },
                  "returnParameters": {
                    "id": 21196,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21195,
                        "mutability": "mutable",
                        "name": "weekEnd",
                        "nameLocation": "7284:7:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21206,
                        "src": "7279:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21194,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7279:4:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7278:14:68"
                  },
                  "scope": 22113,
                  "src": "7218:136:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21230,
                    "nodeType": "Block",
                    "src": "7447:142:68",
                    "statements": [
                      {
                        "assignments": [
                          21214,
                          21216,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21214,
                            "mutability": "mutable",
                            "name": "year",
                            "nameLocation": "7466:4:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21230,
                            "src": "7458:12:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21213,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7458:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21216,
                            "mutability": "mutable",
                            "name": "month",
                            "nameLocation": "7480:5:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21230,
                            "src": "7472:13:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21215,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7472:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 21222,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21220,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21218,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21208,
                                "src": "7502:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "id": 21219,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "7514:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7502:27:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21217,
                            "name": "_daysToDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20891,
                            "src": "7490:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 21221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7490:40:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7457:73:68"
                      },
                      {
                        "expression": {
                          "id": 21228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21223,
                            "name": "daysInMonth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21211,
                            "src": "7540:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 21225,
                                "name": "year",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21214,
                                "src": "7570:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 21226,
                                "name": "month",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21216,
                                "src": "7576:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 21224,
                              "name": "_getDaysInMonth",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21293,
                              "src": "7554:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 21227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7554:28:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7540:42:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21229,
                        "nodeType": "ExpressionStatement",
                        "src": "7540:42:68"
                      }
                    ]
                  },
                  "id": 21231,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDaysInMonth",
                  "nameLocation": "7369:14:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21209,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21208,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "7392:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21231,
                        "src": "7384:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21207,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7384:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7383:19:68"
                  },
                  "returnParameters": {
                    "id": 21212,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21211,
                        "mutability": "mutable",
                        "name": "daysInMonth",
                        "nameLocation": "7434:11:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21231,
                        "src": "7426:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21210,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7426:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7425:21:68"
                  },
                  "scope": 22113,
                  "src": "7360:229:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21292,
                    "nodeType": "Block",
                    "src": "7693:294:68",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 21266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 21262,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 21254,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 21250,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 21246,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 21242,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 21240,
                                        "name": "month",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21235,
                                        "src": "7707:5:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 21241,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7716:1:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "7707:10:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 21245,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 21243,
                                        "name": "month",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21235,
                                        "src": "7721:5:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "hexValue": "33",
                                        "id": 21244,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7730:1:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_3_by_1",
                                          "typeString": "int_const 3"
                                        },
                                        "value": "3"
                                      },
                                      "src": "7721:10:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "7707:24:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 21249,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 21247,
                                      "name": "month",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21235,
                                      "src": "7735:5:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "35",
                                      "id": 21248,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7744:1:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_5_by_1",
                                        "typeString": "int_const 5"
                                      },
                                      "value": "5"
                                    },
                                    "src": "7735:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "7707:38:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21253,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21251,
                                    "name": "month",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21235,
                                    "src": "7749:5:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "37",
                                    "id": 21252,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7758:1:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_7_by_1",
                                      "typeString": "int_const 7"
                                    },
                                    "value": "7"
                                  },
                                  "src": "7749:10:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7707:52:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 21257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 21255,
                                  "name": "month",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21235,
                                  "src": "7763:5:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "38",
                                  "id": 21256,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7772:1:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_8_by_1",
                                    "typeString": "int_const 8"
                                  },
                                  "value": "8"
                                },
                                "src": "7763:10:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7707:66:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21259,
                                "name": "month",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21235,
                                "src": "7777:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "3130",
                                "id": 21260,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7786:2:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "src": "7777:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "7707:81:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21265,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21263,
                              "name": "month",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21235,
                              "src": "7792:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "3132",
                              "id": 21264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7801:2:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_12_by_1",
                                "typeString": "int_const 12"
                              },
                              "value": "12"
                            },
                            "src": "7792:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7707:96:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21272,
                              "name": "month",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21235,
                              "src": "7856:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 21273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7865:1:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "7856:10:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 21289,
                            "nodeType": "Block",
                            "src": "7915:66:68",
                            "statements": [
                              {
                                "expression": {
                                  "id": 21287,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 21280,
                                    "name": "daysInMonth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21238,
                                    "src": "7929:11:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "condition": {
                                      "arguments": [
                                        {
                                          "id": 21282,
                                          "name": "year",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21233,
                                          "src": "7955:4:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 21281,
                                        "name": "_isLeapYear",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21174,
                                        "src": "7943:11:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$",
                                          "typeString": "function (uint256) pure returns (bool)"
                                        }
                                      },
                                      "id": 21283,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7943:17:68",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "hexValue": "3238",
                                      "id": 21285,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7968:2:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_28_by_1",
                                        "typeString": "int_const 28"
                                      },
                                      "value": "28"
                                    },
                                    "id": 21286,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "7943:27:68",
                                    "trueExpression": {
                                      "hexValue": "3239",
                                      "id": 21284,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7963:2:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_29_by_1",
                                        "typeString": "int_const 29"
                                      },
                                      "value": "29"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "7929:41:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 21288,
                                "nodeType": "ExpressionStatement",
                                "src": "7929:41:68"
                              }
                            ]
                          },
                          "id": 21290,
                          "nodeType": "IfStatement",
                          "src": "7852:129:68",
                          "trueBody": {
                            "id": 21279,
                            "nodeType": "Block",
                            "src": "7868:41:68",
                            "statements": [
                              {
                                "expression": {
                                  "id": 21277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 21275,
                                    "name": "daysInMonth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21238,
                                    "src": "7882:11:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "hexValue": "3330",
                                    "id": 21276,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7896:2:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_30_by_1",
                                      "typeString": "int_const 30"
                                    },
                                    "value": "30"
                                  },
                                  "src": "7882:16:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 21278,
                                "nodeType": "ExpressionStatement",
                                "src": "7882:16:68"
                              }
                            ]
                          }
                        },
                        "id": 21291,
                        "nodeType": "IfStatement",
                        "src": "7703:278:68",
                        "trueBody": {
                          "id": 21271,
                          "nodeType": "Block",
                          "src": "7805:41:68",
                          "statements": [
                            {
                              "expression": {
                                "id": 21269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 21267,
                                  "name": "daysInMonth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21238,
                                  "src": "7819:11:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "3331",
                                  "id": 21268,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7833:2:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_31_by_1",
                                    "typeString": "int_const 31"
                                  },
                                  "value": "31"
                                },
                                "src": "7819:16:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21270,
                              "nodeType": "ExpressionStatement",
                              "src": "7819:16:68"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 21293,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getDaysInMonth",
                  "nameLocation": "7604:15:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21236,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21233,
                        "mutability": "mutable",
                        "name": "year",
                        "nameLocation": "7628:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21293,
                        "src": "7620:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21232,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7620:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21235,
                        "mutability": "mutable",
                        "name": "month",
                        "nameLocation": "7642:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21293,
                        "src": "7634:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21234,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7634:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7619:29:68"
                  },
                  "returnParameters": {
                    "id": 21239,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21238,
                        "mutability": "mutable",
                        "name": "daysInMonth",
                        "nameLocation": "7680:11:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21293,
                        "src": "7672:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21237,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7672:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7671:21:68"
                  },
                  "scope": 22113,
                  "src": "7595:392:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21318,
                    "nodeType": "Block",
                    "src": "8106:103:68",
                    "statements": [
                      {
                        "assignments": [
                          21301
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21301,
                            "mutability": "mutable",
                            "name": "_days",
                            "nameLocation": "8124:5:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21318,
                            "src": "8116:13:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21300,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8116:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21305,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21302,
                            "name": "timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21295,
                            "src": "8132:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 21303,
                            "name": "SECONDS_PER_DAY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20591,
                            "src": "8144:15:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8132:27:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8116:43:68"
                      },
                      {
                        "expression": {
                          "id": 21316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21306,
                            "name": "dayOfWeek",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21298,
                            "src": "8169:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21315,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21312,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 21309,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 21307,
                                          "name": "_days",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21301,
                                          "src": "8183:5:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "hexValue": "33",
                                          "id": 21308,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8191:1:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_3_by_1",
                                            "typeString": "int_const 3"
                                          },
                                          "value": "3"
                                        },
                                        "src": "8183:9:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 21310,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "8182:11:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "%",
                                  "rightExpression": {
                                    "hexValue": "37",
                                    "id": 21311,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8196:1:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_7_by_1",
                                      "typeString": "int_const 7"
                                    },
                                    "value": "7"
                                  },
                                  "src": "8182:15:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 21313,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "8181:17:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 21314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8201:1:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "8181:21:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8169:33:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21317,
                        "nodeType": "ExpressionStatement",
                        "src": "8169:33:68"
                      }
                    ]
                  },
                  "id": 21319,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDayOfWeek",
                  "nameLocation": "8032:12:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21296,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21295,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "8053:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21319,
                        "src": "8045:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21294,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8045:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8044:19:68"
                  },
                  "returnParameters": {
                    "id": 21299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21298,
                        "mutability": "mutable",
                        "name": "dayOfWeek",
                        "nameLocation": "8095:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21319,
                        "src": "8087:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21297,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8087:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8086:19:68"
                  },
                  "scope": 22113,
                  "src": "8023:186:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21335,
                    "nodeType": "Block",
                    "src": "8288:68:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 21326,
                                "name": "year",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21324,
                                "src": "8299:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              null,
                              null
                            ],
                            "id": 21327,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "8298:8:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$__$__$",
                              "typeString": "tuple(uint256,,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 21331,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 21329,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21321,
                                  "src": "8321:9:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 21330,
                                  "name": "SECONDS_PER_DAY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20591,
                                  "src": "8333:15:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8321:27:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 21328,
                              "name": "_daysToDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20891,
                              "src": "8309:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 21332,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8309:40:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "8298:51:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21334,
                        "nodeType": "ExpressionStatement",
                        "src": "8298:51:68"
                      }
                    ]
                  },
                  "id": 21336,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getYear",
                  "nameLocation": "8224:7:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21322,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21321,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "8240:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21336,
                        "src": "8232:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21320,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8232:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8231:19:68"
                  },
                  "returnParameters": {
                    "id": 21325,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21324,
                        "mutability": "mutable",
                        "name": "year",
                        "nameLocation": "8282:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21336,
                        "src": "8274:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21323,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8274:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8273:14:68"
                  },
                  "scope": 22113,
                  "src": "8215:141:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21352,
                    "nodeType": "Block",
                    "src": "8437:70:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              null,
                              {
                                "id": 21343,
                                "name": "month",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21341,
                                "src": "8450:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              null
                            ],
                            "id": 21344,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "8447:10:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$_t_uint256_$__$",
                              "typeString": "tuple(,uint256,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 21348,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 21346,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21338,
                                  "src": "8472:9:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 21347,
                                  "name": "SECONDS_PER_DAY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20591,
                                  "src": "8484:15:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8472:27:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 21345,
                              "name": "_daysToDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20891,
                              "src": "8460:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 21349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8460:40:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "8447:53:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21351,
                        "nodeType": "ExpressionStatement",
                        "src": "8447:53:68"
                      }
                    ]
                  },
                  "id": 21353,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMonth",
                  "nameLocation": "8371:8:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21339,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21338,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "8388:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21353,
                        "src": "8380:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21337,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8380:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8379:19:68"
                  },
                  "returnParameters": {
                    "id": 21342,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21341,
                        "mutability": "mutable",
                        "name": "month",
                        "nameLocation": "8430:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21353,
                        "src": "8422:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21340,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8422:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8421:15:68"
                  },
                  "scope": 22113,
                  "src": "8362:145:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21369,
                    "nodeType": "Block",
                    "src": "8584:68:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              null,
                              null,
                              {
                                "id": 21360,
                                "name": "day",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21358,
                                "src": "8598:3:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 21361,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "8594:8:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$__$_t_uint256_$",
                              "typeString": "tuple(,,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 21365,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 21363,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21355,
                                  "src": "8617:9:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 21364,
                                  "name": "SECONDS_PER_DAY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20591,
                                  "src": "8629:15:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8617:27:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 21362,
                              "name": "_daysToDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20891,
                              "src": "8605:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 21366,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8605:40:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "8594:51:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21368,
                        "nodeType": "ExpressionStatement",
                        "src": "8594:51:68"
                      }
                    ]
                  },
                  "id": 21370,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDay",
                  "nameLocation": "8522:6:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21356,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21355,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "8537:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21370,
                        "src": "8529:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21354,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8529:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8528:19:68"
                  },
                  "returnParameters": {
                    "id": 21359,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21358,
                        "mutability": "mutable",
                        "name": "day",
                        "nameLocation": "8579:3:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21370,
                        "src": "8571:11:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21357,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8571:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8570:13:68"
                  },
                  "scope": 22113,
                  "src": "8513:139:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21389,
                    "nodeType": "Block",
                    "src": "8731:99:68",
                    "statements": [
                      {
                        "assignments": [
                          21378
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21378,
                            "mutability": "mutable",
                            "name": "secs",
                            "nameLocation": "8749:4:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21389,
                            "src": "8741:12:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21377,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8741:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21382,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21379,
                            "name": "timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21372,
                            "src": "8756:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "%",
                          "rightExpression": {
                            "id": 21380,
                            "name": "SECONDS_PER_DAY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20591,
                            "src": "8768:15:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8756:27:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8741:42:68"
                      },
                      {
                        "expression": {
                          "id": 21387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21383,
                            "name": "hour",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21375,
                            "src": "8793:4:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21384,
                              "name": "secs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21378,
                              "src": "8800:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 21385,
                              "name": "SECONDS_PER_HOUR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20596,
                              "src": "8807:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8800:23:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8793:30:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21388,
                        "nodeType": "ExpressionStatement",
                        "src": "8793:30:68"
                      }
                    ]
                  },
                  "id": 21390,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getHour",
                  "nameLocation": "8667:7:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21373,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21372,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "8683:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21390,
                        "src": "8675:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21371,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8675:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8674:19:68"
                  },
                  "returnParameters": {
                    "id": 21376,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21375,
                        "mutability": "mutable",
                        "name": "hour",
                        "nameLocation": "8725:4:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21390,
                        "src": "8717:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21374,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8717:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8716:14:68"
                  },
                  "scope": 22113,
                  "src": "8658:172:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21409,
                    "nodeType": "Block",
                    "src": "8913:104:68",
                    "statements": [
                      {
                        "assignments": [
                          21398
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21398,
                            "mutability": "mutable",
                            "name": "secs",
                            "nameLocation": "8931:4:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21409,
                            "src": "8923:12:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21397,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8923:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21402,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21399,
                            "name": "timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21392,
                            "src": "8938:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "%",
                          "rightExpression": {
                            "id": 21400,
                            "name": "SECONDS_PER_HOUR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20596,
                            "src": "8950:16:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8938:28:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8923:43:68"
                      },
                      {
                        "expression": {
                          "id": 21407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21403,
                            "name": "minute",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21395,
                            "src": "8976:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21404,
                              "name": "secs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21398,
                              "src": "8985:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 21405,
                              "name": "SECONDS_PER_MINUTE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20599,
                              "src": "8992:18:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8985:25:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8976:34:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21408,
                        "nodeType": "ExpressionStatement",
                        "src": "8976:34:68"
                      }
                    ]
                  },
                  "id": 21410,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMinute",
                  "nameLocation": "8845:9:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21392,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "8863:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21410,
                        "src": "8855:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21391,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8855:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8854:19:68"
                  },
                  "returnParameters": {
                    "id": 21396,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21395,
                        "mutability": "mutable",
                        "name": "minute",
                        "nameLocation": "8905:6:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21410,
                        "src": "8897:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21394,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8897:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8896:16:68"
                  },
                  "scope": 22113,
                  "src": "8836:181:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21423,
                    "nodeType": "Block",
                    "src": "9100:56:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21417,
                            "name": "second",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21415,
                            "src": "9110:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21420,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21418,
                              "name": "timestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21412,
                              "src": "9119:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "id": 21419,
                              "name": "SECONDS_PER_MINUTE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20599,
                              "src": "9131:18:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9119:30:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9110:39:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21422,
                        "nodeType": "ExpressionStatement",
                        "src": "9110:39:68"
                      }
                    ]
                  },
                  "id": 21424,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSecond",
                  "nameLocation": "9032:9:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21413,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21412,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "9050:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21424,
                        "src": "9042:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21411,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9042:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9041:19:68"
                  },
                  "returnParameters": {
                    "id": 21416,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21415,
                        "mutability": "mutable",
                        "name": "second",
                        "nameLocation": "9092:6:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21424,
                        "src": "9084:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21414,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9084:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9083:16:68"
                  },
                  "scope": 22113,
                  "src": "9023:133:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21487,
                    "nodeType": "Block",
                    "src": "9260:475:68",
                    "statements": [
                      {
                        "assignments": [
                          21434,
                          21436,
                          21438
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21434,
                            "mutability": "mutable",
                            "name": "year",
                            "nameLocation": "9279:4:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21487,
                            "src": "9271:12:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21433,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9271:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21436,
                            "mutability": "mutable",
                            "name": "month",
                            "nameLocation": "9293:5:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21487,
                            "src": "9285:13:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21435,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9285:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21438,
                            "mutability": "mutable",
                            "name": "day",
                            "nameLocation": "9308:3:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21487,
                            "src": "9300:11:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21437,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9300:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21444,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21440,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21426,
                                "src": "9327:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "id": 21441,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "9339:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9327:27:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21439,
                            "name": "_daysToDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20891,
                            "src": "9315:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 21443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9315:40:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9270:85:68"
                      },
                      {
                        "expression": {
                          "id": 21447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21445,
                            "name": "year",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21434,
                            "src": "9365:4:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 21446,
                            "name": "_years",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21428,
                            "src": "9373:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9365:14:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21448,
                        "nodeType": "ExpressionStatement",
                        "src": "9365:14:68"
                      },
                      {
                        "assignments": [
                          21450
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21450,
                            "mutability": "mutable",
                            "name": "daysInMonth",
                            "nameLocation": "9397:11:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21487,
                            "src": "9389:19:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21449,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9389:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21455,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 21452,
                              "name": "year",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21434,
                              "src": "9427:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 21453,
                              "name": "month",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21436,
                              "src": "9433:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21451,
                            "name": "_getDaysInMonth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21293,
                            "src": "9411:15:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 21454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9411:28:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9389:50:68"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21456,
                            "name": "day",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21438,
                            "src": "9453:3:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 21457,
                            "name": "daysInMonth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21450,
                            "src": "9459:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9453:17:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21464,
                        "nodeType": "IfStatement",
                        "src": "9449:65:68",
                        "trueBody": {
                          "id": 21463,
                          "nodeType": "Block",
                          "src": "9472:42:68",
                          "statements": [
                            {
                              "expression": {
                                "id": 21461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 21459,
                                  "name": "day",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21438,
                                  "src": "9486:3:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 21460,
                                  "name": "daysInMonth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21450,
                                  "src": "9492:11:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9486:17:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21462,
                              "nodeType": "ExpressionStatement",
                              "src": "9486:17:68"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 21478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21465,
                            "name": "newTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21431,
                            "src": "9523:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 21467,
                                    "name": "year",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21434,
                                    "src": "9552:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 21468,
                                    "name": "month",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21436,
                                    "src": "9558:5:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 21469,
                                    "name": "day",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21438,
                                    "src": "9565:3:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 21466,
                                  "name": "_daysFromDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20742,
                                  "src": "9538:13:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 21470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9538:31:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 21471,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "9572:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9538:49:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21475,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21473,
                                    "name": "timestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21426,
                                    "src": "9591:9:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "%",
                                  "rightExpression": {
                                    "id": 21474,
                                    "name": "SECONDS_PER_DAY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20591,
                                    "src": "9603:15:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "9591:27:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 21476,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "9590:29:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9538:81:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9523:96:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21479,
                        "nodeType": "ExpressionStatement",
                        "src": "9523:96:68"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21483,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21481,
                                "name": "newTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21431,
                                "src": "9637:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 21482,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21426,
                                "src": "9653:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9637:25:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "54696d657374616d702073686f756c64206265206561726c696572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 21484,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9664:63:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_12fb118d185595d505d36c4f28d0ab9045fa35b3e307048679ee24e642c70dfb",
                                "typeString": "literal_string \"Timestamp should be earlier or equal to the current timestamp\""
                              },
                              "value": "Timestamp should be earlier or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_12fb118d185595d505d36c4f28d0ab9045fa35b3e307048679ee24e642c70dfb",
                                "typeString": "literal_string \"Timestamp should be earlier or equal to the current timestamp\""
                              }
                            ],
                            "id": 21480,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9629:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9629:99:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21486,
                        "nodeType": "ExpressionStatement",
                        "src": "9629:99:68"
                      }
                    ]
                  },
                  "id": 21488,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addYears",
                  "nameLocation": "9171:8:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21429,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21426,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "9188:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21488,
                        "src": "9180:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21425,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9180:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21428,
                        "mutability": "mutable",
                        "name": "_years",
                        "nameLocation": "9207:6:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21488,
                        "src": "9199:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21427,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9199:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9179:35:68"
                  },
                  "returnParameters": {
                    "id": 21432,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21431,
                        "mutability": "mutable",
                        "name": "newTimestamp",
                        "nameLocation": "9246:12:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21488,
                        "src": "9238:20:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21430,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9238:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9237:22:68"
                  },
                  "scope": 22113,
                  "src": "9162:573:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21572,
                    "nodeType": "Block",
                    "src": "9841:551:68",
                    "statements": [
                      {
                        "assignments": [
                          21498,
                          21500,
                          21502
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21498,
                            "mutability": "mutable",
                            "name": "year",
                            "nameLocation": "9860:4:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21572,
                            "src": "9852:12:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21497,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9852:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21500,
                            "mutability": "mutable",
                            "name": "month",
                            "nameLocation": "9874:5:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21572,
                            "src": "9866:13:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21499,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9866:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21502,
                            "mutability": "mutable",
                            "name": "day",
                            "nameLocation": "9889:3:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21572,
                            "src": "9881:11:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21501,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9881:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21508,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21506,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21504,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21490,
                                "src": "9908:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "id": 21505,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "9920:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9908:27:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21503,
                            "name": "_daysToDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20891,
                            "src": "9896:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 21507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9896:40:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9851:85:68"
                      },
                      {
                        "expression": {
                          "id": 21511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21509,
                            "name": "month",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21500,
                            "src": "9946:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 21510,
                            "name": "_months",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21492,
                            "src": "9955:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9946:16:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21512,
                        "nodeType": "ExpressionStatement",
                        "src": "9946:16:68"
                      },
                      {
                        "expression": {
                          "id": 21520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21513,
                            "name": "year",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21498,
                            "src": "9972:4:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21516,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21514,
                                    "name": "month",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21500,
                                    "src": "9981:5:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 21515,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9989:1:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "9981:9:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 21517,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "9980:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "hexValue": "3132",
                              "id": 21518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9994:2:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_12_by_1",
                                "typeString": "int_const 12"
                              },
                              "value": "12"
                            },
                            "src": "9980:16:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9972:24:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21521,
                        "nodeType": "ExpressionStatement",
                        "src": "9972:24:68"
                      },
                      {
                        "expression": {
                          "id": 21532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21522,
                            "name": "month",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21500,
                            "src": "10006:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21528,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 21525,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 21523,
                                          "name": "month",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21500,
                                          "src": "10016:5:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "hexValue": "31",
                                          "id": 21524,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10024:1:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "10016:9:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 21526,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "10015:11:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "%",
                                  "rightExpression": {
                                    "hexValue": "3132",
                                    "id": 21527,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10029:2:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_12_by_1",
                                      "typeString": "int_const 12"
                                    },
                                    "value": "12"
                                  },
                                  "src": "10015:16:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 21529,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "10014:18:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 21530,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10035:1:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "10014:22:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10006:30:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21533,
                        "nodeType": "ExpressionStatement",
                        "src": "10006:30:68"
                      },
                      {
                        "assignments": [
                          21535
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21535,
                            "mutability": "mutable",
                            "name": "daysInMonth",
                            "nameLocation": "10054:11:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21572,
                            "src": "10046:19:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21534,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10046:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21540,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 21537,
                              "name": "year",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21498,
                              "src": "10084:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 21538,
                              "name": "month",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21500,
                              "src": "10090:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21536,
                            "name": "_getDaysInMonth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21293,
                            "src": "10068:15:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 21539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10068:28:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10046:50:68"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21541,
                            "name": "day",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21502,
                            "src": "10110:3:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 21542,
                            "name": "daysInMonth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21535,
                            "src": "10116:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10110:17:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21549,
                        "nodeType": "IfStatement",
                        "src": "10106:65:68",
                        "trueBody": {
                          "id": 21548,
                          "nodeType": "Block",
                          "src": "10129:42:68",
                          "statements": [
                            {
                              "expression": {
                                "id": 21546,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 21544,
                                  "name": "day",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21502,
                                  "src": "10143:3:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 21545,
                                  "name": "daysInMonth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21535,
                                  "src": "10149:11:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10143:17:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21547,
                              "nodeType": "ExpressionStatement",
                              "src": "10143:17:68"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 21563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21550,
                            "name": "newTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21495,
                            "src": "10180:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 21552,
                                    "name": "year",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21498,
                                    "src": "10209:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 21553,
                                    "name": "month",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21500,
                                    "src": "10215:5:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 21554,
                                    "name": "day",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21502,
                                    "src": "10222:3:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 21551,
                                  "name": "_daysFromDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20742,
                                  "src": "10195:13:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 21555,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10195:31:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 21556,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "10229:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10195:49:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21560,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21558,
                                    "name": "timestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21490,
                                    "src": "10248:9:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "%",
                                  "rightExpression": {
                                    "id": 21559,
                                    "name": "SECONDS_PER_DAY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20591,
                                    "src": "10260:15:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10248:27:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 21561,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "10247:29:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10195:81:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10180:96:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21564,
                        "nodeType": "ExpressionStatement",
                        "src": "10180:96:68"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21566,
                                "name": "newTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21495,
                                "src": "10294:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 21567,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21490,
                                "src": "10310:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10294:25:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "54696d657374616d702073686f756c64206265206561726c696572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 21569,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10321:63:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_12fb118d185595d505d36c4f28d0ab9045fa35b3e307048679ee24e642c70dfb",
                                "typeString": "literal_string \"Timestamp should be earlier or equal to the current timestamp\""
                              },
                              "value": "Timestamp should be earlier or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_12fb118d185595d505d36c4f28d0ab9045fa35b3e307048679ee24e642c70dfb",
                                "typeString": "literal_string \"Timestamp should be earlier or equal to the current timestamp\""
                              }
                            ],
                            "id": 21565,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10286:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10286:99:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21571,
                        "nodeType": "ExpressionStatement",
                        "src": "10286:99:68"
                      }
                    ]
                  },
                  "id": 21573,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addMonths",
                  "nameLocation": "9750:9:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21493,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21490,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "9768:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21573,
                        "src": "9760:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21489,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9760:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21492,
                        "mutability": "mutable",
                        "name": "_months",
                        "nameLocation": "9787:7:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21573,
                        "src": "9779:15:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21491,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9779:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9759:36:68"
                  },
                  "returnParameters": {
                    "id": 21496,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21495,
                        "mutability": "mutable",
                        "name": "newTimestamp",
                        "nameLocation": "9827:12:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21573,
                        "src": "9819:20:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21494,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9819:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9818:22:68"
                  },
                  "scope": 22113,
                  "src": "9741:651:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21597,
                    "nodeType": "Block",
                    "src": "10494:176:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21582,
                            "name": "newTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21580,
                            "src": "10504:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21583,
                              "name": "timestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21575,
                              "src": "10519:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21584,
                                "name": "_days",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21577,
                                "src": "10531:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 21585,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "10539:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10531:23:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10519:35:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10504:50:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21589,
                        "nodeType": "ExpressionStatement",
                        "src": "10504:50:68"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21593,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21591,
                                "name": "newTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21580,
                                "src": "10572:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 21592,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21575,
                                "src": "10588:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10572:25:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "54696d657374616d702073686f756c64206265206561726c696572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 21594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10599:63:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_12fb118d185595d505d36c4f28d0ab9045fa35b3e307048679ee24e642c70dfb",
                                "typeString": "literal_string \"Timestamp should be earlier or equal to the current timestamp\""
                              },
                              "value": "Timestamp should be earlier or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_12fb118d185595d505d36c4f28d0ab9045fa35b3e307048679ee24e642c70dfb",
                                "typeString": "literal_string \"Timestamp should be earlier or equal to the current timestamp\""
                              }
                            ],
                            "id": 21590,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10564:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10564:99:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21596,
                        "nodeType": "ExpressionStatement",
                        "src": "10564:99:68"
                      }
                    ]
                  },
                  "id": 21598,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addDays",
                  "nameLocation": "10407:7:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21578,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21575,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "10423:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21598,
                        "src": "10415:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21574,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10415:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21577,
                        "mutability": "mutable",
                        "name": "_days",
                        "nameLocation": "10442:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21598,
                        "src": "10434:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21576,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10434:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10414:34:68"
                  },
                  "returnParameters": {
                    "id": 21581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21580,
                        "mutability": "mutable",
                        "name": "newTimestamp",
                        "nameLocation": "10480:12:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21598,
                        "src": "10472:20:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10472:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10471:22:68"
                  },
                  "scope": 22113,
                  "src": "10398:272:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21622,
                    "nodeType": "Block",
                    "src": "10774:178:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21607,
                            "name": "newTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21605,
                            "src": "10784:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21612,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21608,
                              "name": "timestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21600,
                              "src": "10799:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21611,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21609,
                                "name": "_hours",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21602,
                                "src": "10811:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 21610,
                                "name": "SECONDS_PER_HOUR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20596,
                                "src": "10820:16:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10811:25:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10799:37:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10784:52:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21614,
                        "nodeType": "ExpressionStatement",
                        "src": "10784:52:68"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21618,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21616,
                                "name": "newTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21605,
                                "src": "10854:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 21617,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21600,
                                "src": "10870:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10854:25:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "54696d657374616d702073686f756c64206265206561726c696572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 21619,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10881:63:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_12fb118d185595d505d36c4f28d0ab9045fa35b3e307048679ee24e642c70dfb",
                                "typeString": "literal_string \"Timestamp should be earlier or equal to the current timestamp\""
                              },
                              "value": "Timestamp should be earlier or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_12fb118d185595d505d36c4f28d0ab9045fa35b3e307048679ee24e642c70dfb",
                                "typeString": "literal_string \"Timestamp should be earlier or equal to the current timestamp\""
                              }
                            ],
                            "id": 21615,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10846:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10846:99:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21621,
                        "nodeType": "ExpressionStatement",
                        "src": "10846:99:68"
                      }
                    ]
                  },
                  "id": 21623,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addHours",
                  "nameLocation": "10685:8:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21603,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21600,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "10702:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21623,
                        "src": "10694:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21599,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10694:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21602,
                        "mutability": "mutable",
                        "name": "_hours",
                        "nameLocation": "10721:6:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21623,
                        "src": "10713:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21601,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10713:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10693:35:68"
                  },
                  "returnParameters": {
                    "id": 21606,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21605,
                        "mutability": "mutable",
                        "name": "newTimestamp",
                        "nameLocation": "10760:12:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21623,
                        "src": "10752:20:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21604,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10752:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10751:22:68"
                  },
                  "scope": 22113,
                  "src": "10676:276:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21647,
                    "nodeType": "Block",
                    "src": "11060:182:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21632,
                            "name": "newTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21630,
                            "src": "11070:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21637,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21633,
                              "name": "timestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21625,
                              "src": "11085:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21634,
                                "name": "_minutes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21627,
                                "src": "11097:8:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 21635,
                                "name": "SECONDS_PER_MINUTE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20599,
                                "src": "11108:18:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11097:29:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11085:41:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11070:56:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21639,
                        "nodeType": "ExpressionStatement",
                        "src": "11070:56:68"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21643,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21641,
                                "name": "newTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21630,
                                "src": "11144:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 21642,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21625,
                                "src": "11160:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11144:25:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "54696d657374616d702073686f756c64206265206561726c696572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 21644,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11171:63:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_12fb118d185595d505d36c4f28d0ab9045fa35b3e307048679ee24e642c70dfb",
                                "typeString": "literal_string \"Timestamp should be earlier or equal to the current timestamp\""
                              },
                              "value": "Timestamp should be earlier or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_12fb118d185595d505d36c4f28d0ab9045fa35b3e307048679ee24e642c70dfb",
                                "typeString": "literal_string \"Timestamp should be earlier or equal to the current timestamp\""
                              }
                            ],
                            "id": 21640,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11136:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11136:99:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21646,
                        "nodeType": "ExpressionStatement",
                        "src": "11136:99:68"
                      }
                    ]
                  },
                  "id": 21648,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addMinutes",
                  "nameLocation": "10967:10:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21628,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21625,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "10986:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21648,
                        "src": "10978:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21624,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10978:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21627,
                        "mutability": "mutable",
                        "name": "_minutes",
                        "nameLocation": "11005:8:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21648,
                        "src": "10997:16:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21626,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10997:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10977:37:68"
                  },
                  "returnParameters": {
                    "id": 21631,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21630,
                        "mutability": "mutable",
                        "name": "newTimestamp",
                        "nameLocation": "11046:12:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21648,
                        "src": "11038:20:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21629,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11038:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11037:22:68"
                  },
                  "scope": 22113,
                  "src": "10958:284:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21670,
                    "nodeType": "Block",
                    "src": "11350:161:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21657,
                            "name": "newTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21655,
                            "src": "11360:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21660,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21658,
                              "name": "timestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21650,
                              "src": "11375:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 21659,
                              "name": "_seconds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21652,
                              "src": "11387:8:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11375:20:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11360:35:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21662,
                        "nodeType": "ExpressionStatement",
                        "src": "11360:35:68"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21666,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21664,
                                "name": "newTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21655,
                                "src": "11413:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 21665,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21650,
                                "src": "11429:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11413:25:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "54696d657374616d702073686f756c64206265206561726c696572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 21667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11440:63:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_12fb118d185595d505d36c4f28d0ab9045fa35b3e307048679ee24e642c70dfb",
                                "typeString": "literal_string \"Timestamp should be earlier or equal to the current timestamp\""
                              },
                              "value": "Timestamp should be earlier or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_12fb118d185595d505d36c4f28d0ab9045fa35b3e307048679ee24e642c70dfb",
                                "typeString": "literal_string \"Timestamp should be earlier or equal to the current timestamp\""
                              }
                            ],
                            "id": 21663,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11405:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11405:99:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21669,
                        "nodeType": "ExpressionStatement",
                        "src": "11405:99:68"
                      }
                    ]
                  },
                  "id": 21671,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addSeconds",
                  "nameLocation": "11257:10:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21653,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21650,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "11276:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21671,
                        "src": "11268:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21649,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11268:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21652,
                        "mutability": "mutable",
                        "name": "_seconds",
                        "nameLocation": "11295:8:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21671,
                        "src": "11287:16:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21651,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11287:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11267:37:68"
                  },
                  "returnParameters": {
                    "id": 21656,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21655,
                        "mutability": "mutable",
                        "name": "newTimestamp",
                        "nameLocation": "11336:12:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21671,
                        "src": "11328:20:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21654,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11328:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11327:22:68"
                  },
                  "scope": 22113,
                  "src": "11248:263:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21734,
                    "nodeType": "Block",
                    "src": "11615:477:68",
                    "statements": [
                      {
                        "assignments": [
                          21681,
                          21683,
                          21685
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21681,
                            "mutability": "mutable",
                            "name": "year",
                            "nameLocation": "11634:4:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21734,
                            "src": "11626:12:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21680,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11626:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21683,
                            "mutability": "mutable",
                            "name": "month",
                            "nameLocation": "11648:5:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21734,
                            "src": "11640:13:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21682,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11640:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21685,
                            "mutability": "mutable",
                            "name": "day",
                            "nameLocation": "11663:3:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21734,
                            "src": "11655:11:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21684,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11655:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21691,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21689,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21687,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21673,
                                "src": "11682:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "id": 21688,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "11694:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11682:27:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21686,
                            "name": "_daysToDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20891,
                            "src": "11670:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 21690,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11670:40:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11625:85:68"
                      },
                      {
                        "expression": {
                          "id": 21694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21692,
                            "name": "year",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21681,
                            "src": "11720:4:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 21693,
                            "name": "_years",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21675,
                            "src": "11728:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11720:14:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21695,
                        "nodeType": "ExpressionStatement",
                        "src": "11720:14:68"
                      },
                      {
                        "assignments": [
                          21697
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21697,
                            "mutability": "mutable",
                            "name": "daysInMonth",
                            "nameLocation": "11752:11:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21734,
                            "src": "11744:19:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21696,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11744:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21702,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 21699,
                              "name": "year",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21681,
                              "src": "11782:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 21700,
                              "name": "month",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21683,
                              "src": "11788:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21698,
                            "name": "_getDaysInMonth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21293,
                            "src": "11766:15:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 21701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11766:28:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11744:50:68"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21705,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21703,
                            "name": "day",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21685,
                            "src": "11808:3:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 21704,
                            "name": "daysInMonth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21697,
                            "src": "11814:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11808:17:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21711,
                        "nodeType": "IfStatement",
                        "src": "11804:65:68",
                        "trueBody": {
                          "id": 21710,
                          "nodeType": "Block",
                          "src": "11827:42:68",
                          "statements": [
                            {
                              "expression": {
                                "id": 21708,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 21706,
                                  "name": "day",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21685,
                                  "src": "11841:3:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 21707,
                                  "name": "daysInMonth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21697,
                                  "src": "11847:11:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11841:17:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21709,
                              "nodeType": "ExpressionStatement",
                              "src": "11841:17:68"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 21725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21712,
                            "name": "newTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21678,
                            "src": "11878:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21724,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 21714,
                                    "name": "year",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21681,
                                    "src": "11907:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 21715,
                                    "name": "month",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21683,
                                    "src": "11913:5:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 21716,
                                    "name": "day",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21685,
                                    "src": "11920:3:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 21713,
                                  "name": "_daysFromDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20742,
                                  "src": "11893:13:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 21717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11893:31:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 21718,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "11927:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11893:49:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21722,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21720,
                                    "name": "timestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21673,
                                    "src": "11946:9:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "%",
                                  "rightExpression": {
                                    "id": 21721,
                                    "name": "SECONDS_PER_DAY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20591,
                                    "src": "11958:15:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "11946:27:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 21723,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "11945:29:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11893:81:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11878:96:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21726,
                        "nodeType": "ExpressionStatement",
                        "src": "11878:96:68"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21728,
                                "name": "newTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21678,
                                "src": "11992:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 21729,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21673,
                                "src": "12008:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11992:25:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e65772074696d657374616d702073686f756c64206265206c61746572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 21731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12019:65:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              },
                              "value": "New timestamp should be later or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              }
                            ],
                            "id": 21727,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11984:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11984:101:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21733,
                        "nodeType": "ExpressionStatement",
                        "src": "11984:101:68"
                      }
                    ]
                  },
                  "id": 21735,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "subYears",
                  "nameLocation": "11526:8:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21676,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21673,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "11543:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21735,
                        "src": "11535:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21672,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11535:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21675,
                        "mutability": "mutable",
                        "name": "_years",
                        "nameLocation": "11562:6:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21735,
                        "src": "11554:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21674,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11554:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11534:35:68"
                  },
                  "returnParameters": {
                    "id": 21679,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21678,
                        "mutability": "mutable",
                        "name": "newTimestamp",
                        "nameLocation": "11601:12:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21735,
                        "src": "11593:20:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21677,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11593:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11592:22:68"
                  },
                  "scope": 22113,
                  "src": "11517:575:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21822,
                    "nodeType": "Block",
                    "src": "12198:667:68",
                    "statements": [
                      {
                        "assignments": [
                          21745,
                          21747,
                          21749
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21745,
                            "mutability": "mutable",
                            "name": "year",
                            "nameLocation": "12217:4:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21822,
                            "src": "12209:12:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21744,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12209:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21747,
                            "mutability": "mutable",
                            "name": "month",
                            "nameLocation": "12231:5:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21822,
                            "src": "12223:13:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21746,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12223:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21749,
                            "mutability": "mutable",
                            "name": "day",
                            "nameLocation": "12246:3:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21822,
                            "src": "12238:11:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21748,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12238:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21755,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21751,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21737,
                                "src": "12265:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "id": 21752,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "12277:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12265:27:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21750,
                            "name": "_daysToDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20891,
                            "src": "12253:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 21754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12253:40:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12208:85:68"
                      },
                      {
                        "assignments": [
                          21757
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21757,
                            "mutability": "mutable",
                            "name": "yearMonth",
                            "nameLocation": "12311:9:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21822,
                            "src": "12303:17:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21756,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12303:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21768,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21767,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21765,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21760,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21758,
                                "name": "year",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21745,
                                "src": "12323:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "hexValue": "3132",
                                "id": 21759,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12330:2:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_12_by_1",
                                  "typeString": "int_const 12"
                                },
                                "value": "12"
                              },
                              "src": "12323:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21763,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21761,
                                    "name": "month",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21747,
                                    "src": "12336:5:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 21762,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12344:1:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "12336:9:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 21764,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "12335:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12323:23:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 21766,
                            "name": "_months",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21739,
                            "src": "12349:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12323:33:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12303:53:68"
                      },
                      {
                        "expression": {
                          "id": 21773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21769,
                            "name": "year",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21745,
                            "src": "12407:4:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21772,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21770,
                              "name": "yearMonth",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21757,
                              "src": "12414:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "hexValue": "3132",
                              "id": 21771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12426:2:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_12_by_1",
                                "typeString": "int_const 12"
                              },
                              "value": "12"
                            },
                            "src": "12414:14:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12407:21:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21774,
                        "nodeType": "ExpressionStatement",
                        "src": "12407:21:68"
                      },
                      {
                        "expression": {
                          "id": 21782,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21775,
                            "name": "month",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21747,
                            "src": "12479:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21781,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21778,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21776,
                                    "name": "yearMonth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21757,
                                    "src": "12488:9:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "%",
                                  "rightExpression": {
                                    "hexValue": "3132",
                                    "id": 21777,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12500:2:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_12_by_1",
                                      "typeString": "int_const 12"
                                    },
                                    "value": "12"
                                  },
                                  "src": "12488:14:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 21779,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "12487:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 21780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12506:1:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "12487:20:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12479:28:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21783,
                        "nodeType": "ExpressionStatement",
                        "src": "12479:28:68"
                      },
                      {
                        "assignments": [
                          21785
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21785,
                            "mutability": "mutable",
                            "name": "daysInMonth",
                            "nameLocation": "12525:11:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21822,
                            "src": "12517:19:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21784,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12517:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21790,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 21787,
                              "name": "year",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21745,
                              "src": "12555:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 21788,
                              "name": "month",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21747,
                              "src": "12561:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21786,
                            "name": "_getDaysInMonth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21293,
                            "src": "12539:15:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 21789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12539:28:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12517:50:68"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21793,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21791,
                            "name": "day",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21749,
                            "src": "12581:3:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 21792,
                            "name": "daysInMonth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21785,
                            "src": "12587:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12581:17:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21799,
                        "nodeType": "IfStatement",
                        "src": "12577:65:68",
                        "trueBody": {
                          "id": 21798,
                          "nodeType": "Block",
                          "src": "12600:42:68",
                          "statements": [
                            {
                              "expression": {
                                "id": 21796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 21794,
                                  "name": "day",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21749,
                                  "src": "12614:3:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 21795,
                                  "name": "daysInMonth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21785,
                                  "src": "12620:11:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12614:17:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21797,
                              "nodeType": "ExpressionStatement",
                              "src": "12614:17:68"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 21813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21800,
                            "name": "newTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21742,
                            "src": "12651:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21812,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21807,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 21802,
                                    "name": "year",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21745,
                                    "src": "12680:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 21803,
                                    "name": "month",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21747,
                                    "src": "12686:5:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 21804,
                                    "name": "day",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21749,
                                    "src": "12693:3:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 21801,
                                  "name": "_daysFromDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20742,
                                  "src": "12666:13:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 21805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12666:31:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 21806,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "12700:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12666:49:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21810,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21808,
                                    "name": "timestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21737,
                                    "src": "12719:9:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "%",
                                  "rightExpression": {
                                    "id": 21809,
                                    "name": "SECONDS_PER_DAY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20591,
                                    "src": "12731:15:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "12719:27:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 21811,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "12718:29:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12666:81:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12651:96:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21814,
                        "nodeType": "ExpressionStatement",
                        "src": "12651:96:68"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21816,
                                "name": "newTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21742,
                                "src": "12765:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 21817,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21737,
                                "src": "12781:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12765:25:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e65772074696d657374616d702073686f756c64206265206c61746572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 21819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12792:65:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              },
                              "value": "New timestamp should be later or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              }
                            ],
                            "id": 21815,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12757:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21820,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12757:101:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21821,
                        "nodeType": "ExpressionStatement",
                        "src": "12757:101:68"
                      }
                    ]
                  },
                  "id": 21823,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "subMonths",
                  "nameLocation": "12107:9:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21740,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21737,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "12125:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21823,
                        "src": "12117:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21736,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12117:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21739,
                        "mutability": "mutable",
                        "name": "_months",
                        "nameLocation": "12144:7:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21823,
                        "src": "12136:15:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21738,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12136:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12116:36:68"
                  },
                  "returnParameters": {
                    "id": 21743,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21742,
                        "mutability": "mutable",
                        "name": "newTimestamp",
                        "nameLocation": "12184:12:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21823,
                        "src": "12176:20:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21741,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12176:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12175:22:68"
                  },
                  "scope": 22113,
                  "src": "12098:767:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21847,
                    "nodeType": "Block",
                    "src": "12967:178:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21838,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21832,
                            "name": "newTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21830,
                            "src": "12977:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21837,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21833,
                              "name": "timestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21825,
                              "src": "12992:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21836,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21834,
                                "name": "_days",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21827,
                                "src": "13004:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 21835,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "13012:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13004:23:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12992:35:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12977:50:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21839,
                        "nodeType": "ExpressionStatement",
                        "src": "12977:50:68"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21843,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21841,
                                "name": "newTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21830,
                                "src": "13045:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 21842,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21825,
                                "src": "13061:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13045:25:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e65772074696d657374616d702073686f756c64206265206c61746572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 21844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13072:65:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              },
                              "value": "New timestamp should be later or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              }
                            ],
                            "id": 21840,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13037:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13037:101:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21846,
                        "nodeType": "ExpressionStatement",
                        "src": "13037:101:68"
                      }
                    ]
                  },
                  "id": 21848,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "subDays",
                  "nameLocation": "12880:7:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21828,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21825,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "12896:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21848,
                        "src": "12888:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21824,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12888:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21827,
                        "mutability": "mutable",
                        "name": "_days",
                        "nameLocation": "12915:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21848,
                        "src": "12907:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21826,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12907:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12887:34:68"
                  },
                  "returnParameters": {
                    "id": 21831,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21830,
                        "mutability": "mutable",
                        "name": "newTimestamp",
                        "nameLocation": "12953:12:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21848,
                        "src": "12945:20:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21829,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12945:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12944:22:68"
                  },
                  "scope": 22113,
                  "src": "12871:274:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21872,
                    "nodeType": "Block",
                    "src": "13249:180:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21863,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21857,
                            "name": "newTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21855,
                            "src": "13259:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21862,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21858,
                              "name": "timestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21850,
                              "src": "13274:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21861,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21859,
                                "name": "_hours",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21852,
                                "src": "13286:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 21860,
                                "name": "SECONDS_PER_HOUR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20596,
                                "src": "13295:16:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13286:25:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13274:37:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13259:52:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21864,
                        "nodeType": "ExpressionStatement",
                        "src": "13259:52:68"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21868,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21866,
                                "name": "newTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21855,
                                "src": "13329:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 21867,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21850,
                                "src": "13345:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13329:25:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e65772074696d657374616d702073686f756c64206265206c61746572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 21869,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13356:65:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              },
                              "value": "New timestamp should be later or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              }
                            ],
                            "id": 21865,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13321:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13321:101:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21871,
                        "nodeType": "ExpressionStatement",
                        "src": "13321:101:68"
                      }
                    ]
                  },
                  "id": 21873,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "subHours",
                  "nameLocation": "13160:8:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21853,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21850,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "13177:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21873,
                        "src": "13169:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21849,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13169:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21852,
                        "mutability": "mutable",
                        "name": "_hours",
                        "nameLocation": "13196:6:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21873,
                        "src": "13188:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21851,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13188:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13168:35:68"
                  },
                  "returnParameters": {
                    "id": 21856,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21855,
                        "mutability": "mutable",
                        "name": "newTimestamp",
                        "nameLocation": "13235:12:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21873,
                        "src": "13227:20:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21854,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13227:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13226:22:68"
                  },
                  "scope": 22113,
                  "src": "13151:278:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21897,
                    "nodeType": "Block",
                    "src": "13537:184:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21882,
                            "name": "newTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21880,
                            "src": "13547:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21883,
                              "name": "timestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21875,
                              "src": "13562:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21884,
                                "name": "_minutes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21877,
                                "src": "13574:8:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 21885,
                                "name": "SECONDS_PER_MINUTE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20599,
                                "src": "13585:18:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13574:29:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13562:41:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13547:56:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21889,
                        "nodeType": "ExpressionStatement",
                        "src": "13547:56:68"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21891,
                                "name": "newTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21880,
                                "src": "13621:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 21892,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21875,
                                "src": "13637:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13621:25:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e65772074696d657374616d702073686f756c64206265206c61746572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 21894,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13648:65:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              },
                              "value": "New timestamp should be later or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              }
                            ],
                            "id": 21890,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13613:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13613:101:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21896,
                        "nodeType": "ExpressionStatement",
                        "src": "13613:101:68"
                      }
                    ]
                  },
                  "id": 21898,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "subMinutes",
                  "nameLocation": "13444:10:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21878,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21875,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "13463:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21898,
                        "src": "13455:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21874,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13455:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21877,
                        "mutability": "mutable",
                        "name": "_minutes",
                        "nameLocation": "13482:8:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21898,
                        "src": "13474:16:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21876,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13474:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13454:37:68"
                  },
                  "returnParameters": {
                    "id": 21881,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21880,
                        "mutability": "mutable",
                        "name": "newTimestamp",
                        "nameLocation": "13523:12:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21898,
                        "src": "13515:20:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21879,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13515:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13514:22:68"
                  },
                  "scope": 22113,
                  "src": "13435:286:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21920,
                    "nodeType": "Block",
                    "src": "13829:163:68",
                    "statements": [
                      {
                        "expression": {
                          "id": 21911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21907,
                            "name": "newTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21905,
                            "src": "13839:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21910,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21908,
                              "name": "timestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21900,
                              "src": "13854:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 21909,
                              "name": "_seconds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21902,
                              "src": "13866:8:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13854:20:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13839:35:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21912,
                        "nodeType": "ExpressionStatement",
                        "src": "13839:35:68"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21916,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21914,
                                "name": "newTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21905,
                                "src": "13892:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 21915,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21900,
                                "src": "13908:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13892:25:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e65772074696d657374616d702073686f756c64206265206c61746572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 21917,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13919:65:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              },
                              "value": "New timestamp should be later or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              }
                            ],
                            "id": 21913,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13884:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13884:101:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21919,
                        "nodeType": "ExpressionStatement",
                        "src": "13884:101:68"
                      }
                    ]
                  },
                  "id": 21921,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "subSeconds",
                  "nameLocation": "13736:10:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21903,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21900,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "13755:9:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21921,
                        "src": "13747:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21899,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13747:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21902,
                        "mutability": "mutable",
                        "name": "_seconds",
                        "nameLocation": "13774:8:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21921,
                        "src": "13766:16:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21901,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13766:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13746:37:68"
                  },
                  "returnParameters": {
                    "id": 21906,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21905,
                        "mutability": "mutable",
                        "name": "newTimestamp",
                        "nameLocation": "13815:12:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21921,
                        "src": "13807:20:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21904,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13807:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13806:22:68"
                  },
                  "scope": 22113,
                  "src": "13727:265:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21959,
                    "nodeType": "Block",
                    "src": "14100:307:68",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21933,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21931,
                                "name": "fromTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21923,
                                "src": "14118:13:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 21932,
                                "name": "toTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21925,
                                "src": "14135:11:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14118:28:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e65772074696d657374616d702073686f756c64206265206c61746572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 21934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14148:65:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              },
                              "value": "New timestamp should be later or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              }
                            ],
                            "id": 21930,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14110:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14110:104:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21936,
                        "nodeType": "ExpressionStatement",
                        "src": "14110:104:68"
                      },
                      {
                        "assignments": [
                          21938,
                          null,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21938,
                            "mutability": "mutable",
                            "name": "fromYear",
                            "nameLocation": "14233:8:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21959,
                            "src": "14225:16:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21937,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14225:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          null,
                          null
                        ],
                        "id": 21944,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21942,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21940,
                                "name": "fromTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21923,
                                "src": "14259:13:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "id": 21941,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "14275:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14259:31:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21939,
                            "name": "_daysToDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20891,
                            "src": "14247:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 21943,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14247:44:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14224:67:68"
                      },
                      {
                        "assignments": [
                          21946,
                          null,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21946,
                            "mutability": "mutable",
                            "name": "toYear",
                            "nameLocation": "14310:6:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 21959,
                            "src": "14302:14:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21945,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14302:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          null,
                          null
                        ],
                        "id": 21952,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21950,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21948,
                                "name": "toTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21925,
                                "src": "14334:11:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "id": 21949,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "14348:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14334:29:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21947,
                            "name": "_daysToDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20891,
                            "src": "14322:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 21951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14322:42:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14301:63:68"
                      },
                      {
                        "expression": {
                          "id": 21957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21953,
                            "name": "_years",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21928,
                            "src": "14374:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21956,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21954,
                              "name": "toYear",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21946,
                              "src": "14383:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 21955,
                              "name": "fromYear",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21938,
                              "src": "14392:8:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14383:17:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14374:26:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21958,
                        "nodeType": "ExpressionStatement",
                        "src": "14374:26:68"
                      }
                    ]
                  },
                  "id": 21960,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "diffYears",
                  "nameLocation": "14007:9:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21926,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21923,
                        "mutability": "mutable",
                        "name": "fromTimestamp",
                        "nameLocation": "14025:13:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21960,
                        "src": "14017:21:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21922,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14017:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21925,
                        "mutability": "mutable",
                        "name": "toTimestamp",
                        "nameLocation": "14048:11:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21960,
                        "src": "14040:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21924,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14040:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14016:44:68"
                  },
                  "returnParameters": {
                    "id": 21929,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21928,
                        "mutability": "mutable",
                        "name": "_years",
                        "nameLocation": "14092:6:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 21960,
                        "src": "14084:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21927,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14084:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14083:16:68"
                  },
                  "scope": 22113,
                  "src": "13998:409:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22010,
                    "nodeType": "Block",
                    "src": "14517:374:68",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21972,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21970,
                                "name": "fromTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21962,
                                "src": "14535:13:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 21971,
                                "name": "toTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21964,
                                "src": "14552:11:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14535:28:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e65772074696d657374616d702073686f756c64206265206c61746572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 21973,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14565:65:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              },
                              "value": "New timestamp should be later or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              }
                            ],
                            "id": 21969,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14527:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14527:104:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21975,
                        "nodeType": "ExpressionStatement",
                        "src": "14527:104:68"
                      },
                      {
                        "assignments": [
                          21977,
                          21979,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21977,
                            "mutability": "mutable",
                            "name": "fromYear",
                            "nameLocation": "14650:8:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 22010,
                            "src": "14642:16:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21976,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14642:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21979,
                            "mutability": "mutable",
                            "name": "fromMonth",
                            "nameLocation": "14668:9:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 22010,
                            "src": "14660:17:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21978,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14660:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 21985,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21983,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21981,
                                "name": "fromTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21962,
                                "src": "14694:13:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "id": 21982,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "14710:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14694:31:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21980,
                            "name": "_daysToDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20891,
                            "src": "14682:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 21984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14682:44:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14641:85:68"
                      },
                      {
                        "assignments": [
                          21987,
                          21989,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21987,
                            "mutability": "mutable",
                            "name": "toYear",
                            "nameLocation": "14745:6:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 22010,
                            "src": "14737:14:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21986,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14737:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21989,
                            "mutability": "mutable",
                            "name": "toMonth",
                            "nameLocation": "14761:7:68",
                            "nodeType": "VariableDeclaration",
                            "scope": 22010,
                            "src": "14753:15:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21988,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14753:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 21995,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21991,
                                "name": "toTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21964,
                                "src": "14785:11:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "id": 21992,
                                "name": "SECONDS_PER_DAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20591,
                                "src": "14799:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14785:29:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21990,
                            "name": "_daysToDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20891,
                            "src": "14773:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 21994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14773:42:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14736:79:68"
                      },
                      {
                        "expression": {
                          "id": 22008,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21996,
                            "name": "_months",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21967,
                            "src": "14825:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 22007,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22005,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22001,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21999,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21997,
                                    "name": "toYear",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21987,
                                    "src": "14835:6:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "hexValue": "3132",
                                    "id": 21998,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14844:2:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_12_by_1",
                                      "typeString": "int_const 12"
                                    },
                                    "value": "12"
                                  },
                                  "src": "14835:11:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 22000,
                                  "name": "toMonth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21989,
                                  "src": "14849:7:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14835:21:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22004,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22002,
                                  "name": "fromYear",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21977,
                                  "src": "14859:8:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "hexValue": "3132",
                                  "id": 22003,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14870:2:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_12_by_1",
                                    "typeString": "int_const 12"
                                  },
                                  "value": "12"
                                },
                                "src": "14859:13:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14835:37:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 22006,
                              "name": "fromMonth",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21979,
                              "src": "14875:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14835:49:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14825:59:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22009,
                        "nodeType": "ExpressionStatement",
                        "src": "14825:59:68"
                      }
                    ]
                  },
                  "id": 22011,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "diffMonths",
                  "nameLocation": "14422:10:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21965,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21962,
                        "mutability": "mutable",
                        "name": "fromTimestamp",
                        "nameLocation": "14441:13:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 22011,
                        "src": "14433:21:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21961,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14433:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21964,
                        "mutability": "mutable",
                        "name": "toTimestamp",
                        "nameLocation": "14464:11:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 22011,
                        "src": "14456:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21963,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14456:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14432:44:68"
                  },
                  "returnParameters": {
                    "id": 21968,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21967,
                        "mutability": "mutable",
                        "name": "_months",
                        "nameLocation": "14508:7:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 22011,
                        "src": "14500:15:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21966,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14500:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14499:17:68"
                  },
                  "scope": 22113,
                  "src": "14413:478:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22036,
                    "nodeType": "Block",
                    "src": "14997:186:68",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22023,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 22021,
                                "name": "fromTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22013,
                                "src": "15015:13:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 22022,
                                "name": "toTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22015,
                                "src": "15032:11:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15015:28:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e65772074696d657374616d702073686f756c64206265206c61746572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 22024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15045:65:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              },
                              "value": "New timestamp should be later or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              }
                            ],
                            "id": 22020,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15007:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15007:104:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22026,
                        "nodeType": "ExpressionStatement",
                        "src": "15007:104:68"
                      },
                      {
                        "expression": {
                          "id": 22034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22027,
                            "name": "_days",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22018,
                            "src": "15121:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 22033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 22030,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 22028,
                                    "name": "toTimestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22015,
                                    "src": "15130:11:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 22029,
                                    "name": "fromTimestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22013,
                                    "src": "15144:13:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "15130:27:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 22031,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "15129:29:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 22032,
                              "name": "SECONDS_PER_DAY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20591,
                              "src": "15161:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15129:47:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15121:55:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22035,
                        "nodeType": "ExpressionStatement",
                        "src": "15121:55:68"
                      }
                    ]
                  },
                  "id": 22037,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "diffDays",
                  "nameLocation": "14906:8:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22016,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22013,
                        "mutability": "mutable",
                        "name": "fromTimestamp",
                        "nameLocation": "14923:13:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 22037,
                        "src": "14915:21:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22012,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14915:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22015,
                        "mutability": "mutable",
                        "name": "toTimestamp",
                        "nameLocation": "14946:11:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 22037,
                        "src": "14938:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22014,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14938:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14914:44:68"
                  },
                  "returnParameters": {
                    "id": 22019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22018,
                        "mutability": "mutable",
                        "name": "_days",
                        "nameLocation": "14990:5:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 22037,
                        "src": "14982:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22017,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14982:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14981:15:68"
                  },
                  "scope": 22113,
                  "src": "14897:286:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22062,
                    "nodeType": "Block",
                    "src": "15291:188:68",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22049,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 22047,
                                "name": "fromTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22039,
                                "src": "15309:13:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 22048,
                                "name": "toTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22041,
                                "src": "15326:11:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15309:28:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e65772074696d657374616d702073686f756c64206265206c61746572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 22050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15339:65:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              },
                              "value": "New timestamp should be later or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              }
                            ],
                            "id": 22046,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15301:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15301:104:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22052,
                        "nodeType": "ExpressionStatement",
                        "src": "15301:104:68"
                      },
                      {
                        "expression": {
                          "id": 22060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22053,
                            "name": "_hours",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22044,
                            "src": "15415:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 22059,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 22056,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 22054,
                                    "name": "toTimestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22041,
                                    "src": "15425:11:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 22055,
                                    "name": "fromTimestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22039,
                                    "src": "15439:13:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "15425:27:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 22057,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "15424:29:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 22058,
                              "name": "SECONDS_PER_HOUR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20596,
                              "src": "15456:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15424:48:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15415:57:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22061,
                        "nodeType": "ExpressionStatement",
                        "src": "15415:57:68"
                      }
                    ]
                  },
                  "id": 22063,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "diffHours",
                  "nameLocation": "15198:9:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22042,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22039,
                        "mutability": "mutable",
                        "name": "fromTimestamp",
                        "nameLocation": "15216:13:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 22063,
                        "src": "15208:21:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22038,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15208:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22041,
                        "mutability": "mutable",
                        "name": "toTimestamp",
                        "nameLocation": "15239:11:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 22063,
                        "src": "15231:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22040,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15231:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15207:44:68"
                  },
                  "returnParameters": {
                    "id": 22045,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22044,
                        "mutability": "mutable",
                        "name": "_hours",
                        "nameLocation": "15283:6:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 22063,
                        "src": "15275:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22043,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15275:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15274:16:68"
                  },
                  "scope": 22113,
                  "src": "15189:290:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22088,
                    "nodeType": "Block",
                    "src": "15591:192:68",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22075,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 22073,
                                "name": "fromTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22065,
                                "src": "15609:13:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 22074,
                                "name": "toTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22067,
                                "src": "15626:11:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15609:28:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e65772074696d657374616d702073686f756c64206265206c61746572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 22076,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15639:65:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              },
                              "value": "New timestamp should be later or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              }
                            ],
                            "id": 22072,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15601:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15601:104:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22078,
                        "nodeType": "ExpressionStatement",
                        "src": "15601:104:68"
                      },
                      {
                        "expression": {
                          "id": 22086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22079,
                            "name": "_minutes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22070,
                            "src": "15715:8:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 22085,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 22082,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 22080,
                                    "name": "toTimestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22067,
                                    "src": "15727:11:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 22081,
                                    "name": "fromTimestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22065,
                                    "src": "15741:13:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "15727:27:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 22083,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "15726:29:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 22084,
                              "name": "SECONDS_PER_MINUTE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20599,
                              "src": "15758:18:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15726:50:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15715:61:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22087,
                        "nodeType": "ExpressionStatement",
                        "src": "15715:61:68"
                      }
                    ]
                  },
                  "id": 22089,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "diffMinutes",
                  "nameLocation": "15494:11:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22068,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22065,
                        "mutability": "mutable",
                        "name": "fromTimestamp",
                        "nameLocation": "15514:13:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 22089,
                        "src": "15506:21:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22064,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15506:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22067,
                        "mutability": "mutable",
                        "name": "toTimestamp",
                        "nameLocation": "15537:11:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 22089,
                        "src": "15529:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22066,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15529:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15505:44:68"
                  },
                  "returnParameters": {
                    "id": 22071,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22070,
                        "mutability": "mutable",
                        "name": "_minutes",
                        "nameLocation": "15581:8:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 22089,
                        "src": "15573:16:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22069,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15573:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15572:18:68"
                  },
                  "scope": 22113,
                  "src": "15485:298:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22111,
                    "nodeType": "Block",
                    "src": "15895:169:68",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22101,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 22099,
                                "name": "fromTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22091,
                                "src": "15913:13:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 22100,
                                "name": "toTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22093,
                                "src": "15930:11:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15913:28:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e65772074696d657374616d702073686f756c64206265206c61746572206f7220657175616c20746f207468652063757272656e742074696d657374616d70",
                              "id": 22102,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15943:65:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              },
                              "value": "New timestamp should be later or equal to the current timestamp"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_403b234b1fbdc6b94ffe8724c843136a3c5fe671866904ba500761b1b8083e69",
                                "typeString": "literal_string \"New timestamp should be later or equal to the current timestamp\""
                              }
                            ],
                            "id": 22098,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15905:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15905:104:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22104,
                        "nodeType": "ExpressionStatement",
                        "src": "15905:104:68"
                      },
                      {
                        "expression": {
                          "id": 22109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22105,
                            "name": "_seconds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22096,
                            "src": "16019:8:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 22108,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 22106,
                              "name": "toTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22093,
                              "src": "16030:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 22107,
                              "name": "fromTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22091,
                              "src": "16044:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "16030:27:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16019:38:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22110,
                        "nodeType": "ExpressionStatement",
                        "src": "16019:38:68"
                      }
                    ]
                  },
                  "id": 22112,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "diffSeconds",
                  "nameLocation": "15798:11:68",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22094,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22091,
                        "mutability": "mutable",
                        "name": "fromTimestamp",
                        "nameLocation": "15818:13:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 22112,
                        "src": "15810:21:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22090,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15810:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22093,
                        "mutability": "mutable",
                        "name": "toTimestamp",
                        "nameLocation": "15841:11:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 22112,
                        "src": "15833:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22092,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15833:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15809:44:68"
                  },
                  "returnParameters": {
                    "id": 22097,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22096,
                        "mutability": "mutable",
                        "name": "_seconds",
                        "nameLocation": "15885:8:68",
                        "nodeType": "VariableDeclaration",
                        "scope": 22112,
                        "src": "15877:16:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22095,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15877:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15876:18:68"
                  },
                  "scope": 22113,
                  "src": "15789:275:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 22114,
              "src": "959:15107:68",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "40:16027:68"
        },
        "id": 68
      },
      "contracts/libraries/LibDiamond.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/LibDiamond.sol",
          "exportedSymbols": {
            "CannotAddFunctionToDiamondThatAlreadyExists": [
              22150
            ],
            "CannotAddSelectorsToZeroAddress": [
              22136
            ],
            "CannotRemoveFunctionThatDoesNotExist": [
              22175
            ],
            "CannotRemoveImmutableFunction": [
              22179
            ],
            "CannotReplaceFunctionThatDoesNotExists": [
              22167
            ],
            "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet": [
              22163
            ],
            "CannotReplaceFunctionsFromFacetWithZeroAddress": [
              22155
            ],
            "CannotReplaceImmutableFunction": [
              22159
            ],
            "IDiamond": [
              20498
            ],
            "IDiamondCut": [
              20517
            ],
            "IncorrectFacetCutAction": [
              22146
            ],
            "InitializationFunctionReverted": [
              22185
            ],
            "LibDiamond": [
              22819
            ],
            "NoBytecodeAtAddress": [
              22142
            ],
            "NoSelectorsGivenToAdd": [
              22121
            ],
            "NoSelectorsProvidedForFacetForCut": [
              22131
            ],
            "NotContractOwner": [
              22127
            ],
            "RemoveFacetAddressMustBeZeroAddress": [
              22171
            ]
          },
          "id": 22820,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 22115,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:69"
            },
            {
              "absolutePath": "contracts/interfaces/IDiamond.sol",
              "file": "../interfaces/IDiamond.sol",
              "id": 22117,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 22820,
              "sourceUnit": 20499,
              "src": "376:54:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 22116,
                    "name": "IDiamond",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20498,
                    "src": "385:8:69",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IDiamondCut.sol",
              "file": "../interfaces/IDiamondCut.sol",
              "id": 22119,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 22820,
              "sourceUnit": 20518,
              "src": "431:60:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 22118,
                    "name": "IDiamondCut",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20517,
                    "src": "440:11:69",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "errorSelector": "eb6ba048",
              "id": 22121,
              "name": "NoSelectorsGivenToAdd",
              "nameLocation": "647:21:69",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22120,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "668:2:69"
              },
              "src": "641:30:69"
            },
            {
              "errorSelector": "ff4127cb",
              "id": 22127,
              "name": "NotContractOwner",
              "nameLocation": "678:16:69",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22126,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 22123,
                    "mutability": "mutable",
                    "name": "_user",
                    "nameLocation": "703:5:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22127,
                    "src": "695:13:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 22122,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "695:7:69",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 22125,
                    "mutability": "mutable",
                    "name": "_contractOwner",
                    "nameLocation": "718:14:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22127,
                    "src": "710:22:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 22124,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "710:7:69",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "694:39:69"
              },
              "src": "672:62:69"
            },
            {
              "errorSelector": "e767f91f",
              "id": 22131,
              "name": "NoSelectorsProvidedForFacetForCut",
              "nameLocation": "741:33:69",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22130,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 22129,
                    "mutability": "mutable",
                    "name": "_facetAddress",
                    "nameLocation": "783:13:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22131,
                    "src": "775:21:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 22128,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "775:7:69",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "774:23:69"
              },
              "src": "735:63:69"
            },
            {
              "errorSelector": "0ae3681c",
              "id": 22136,
              "name": "CannotAddSelectorsToZeroAddress",
              "nameLocation": "805:31:69",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22135,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 22134,
                    "mutability": "mutable",
                    "name": "_selectors",
                    "nameLocation": "846:10:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22136,
                    "src": "837:19:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                      "typeString": "bytes4[]"
                    },
                    "typeName": {
                      "baseType": {
                        "id": 22132,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "837:6:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "id": 22133,
                      "nodeType": "ArrayTypeName",
                      "src": "837:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                        "typeString": "bytes4[]"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "836:21:69"
              },
              "src": "799:59:69"
            },
            {
              "errorSelector": "919834b9",
              "id": 22142,
              "name": "NoBytecodeAtAddress",
              "nameLocation": "865:19:69",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22141,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 22138,
                    "mutability": "mutable",
                    "name": "_contractAddress",
                    "nameLocation": "893:16:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22142,
                    "src": "885:24:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 22137,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "885:7:69",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 22140,
                    "mutability": "mutable",
                    "name": "_message",
                    "nameLocation": "918:8:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22142,
                    "src": "911:15:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string"
                    },
                    "typeName": {
                      "id": 22139,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "911:6:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "884:43:69"
              },
              "src": "859:69:69"
            },
            {
              "errorSelector": "7fe9a41e",
              "id": 22146,
              "name": "IncorrectFacetCutAction",
              "nameLocation": "935:23:69",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22145,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 22144,
                    "mutability": "mutable",
                    "name": "_action",
                    "nameLocation": "965:7:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22146,
                    "src": "959:13:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "typeName": {
                      "id": 22143,
                      "name": "uint8",
                      "nodeType": "ElementaryTypeName",
                      "src": "959:5:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "958:15:69"
              },
              "src": "929:45:69"
            },
            {
              "errorSelector": "ebbf5d07",
              "id": 22150,
              "name": "CannotAddFunctionToDiamondThatAlreadyExists",
              "nameLocation": "981:43:69",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22149,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 22148,
                    "mutability": "mutable",
                    "name": "_selector",
                    "nameLocation": "1032:9:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22150,
                    "src": "1025:16:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    },
                    "typeName": {
                      "id": 22147,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "1025:6:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1024:18:69"
              },
              "src": "975:68:69"
            },
            {
              "errorSelector": "cd98a96f",
              "id": 22155,
              "name": "CannotReplaceFunctionsFromFacetWithZeroAddress",
              "nameLocation": "1050:46:69",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22154,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 22153,
                    "mutability": "mutable",
                    "name": "_selectors",
                    "nameLocation": "1106:10:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22155,
                    "src": "1097:19:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                      "typeString": "bytes4[]"
                    },
                    "typeName": {
                      "baseType": {
                        "id": 22151,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "1097:6:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "id": 22152,
                      "nodeType": "ArrayTypeName",
                      "src": "1097:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                        "typeString": "bytes4[]"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1096:21:69"
              },
              "src": "1044:74:69"
            },
            {
              "errorSelector": "520300da",
              "id": 22159,
              "name": "CannotReplaceImmutableFunction",
              "nameLocation": "1125:30:69",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22158,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 22157,
                    "mutability": "mutable",
                    "name": "_selector",
                    "nameLocation": "1163:9:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22159,
                    "src": "1156:16:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    },
                    "typeName": {
                      "id": 22156,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "1156:6:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1155:18:69"
              },
              "src": "1119:55:69"
            },
            {
              "errorSelector": "358d9d1a",
              "id": 22163,
              "name": "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet",
              "nameLocation": "1181:56:69",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22162,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 22161,
                    "mutability": "mutable",
                    "name": "_selector",
                    "nameLocation": "1245:9:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22163,
                    "src": "1238:16:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    },
                    "typeName": {
                      "id": 22160,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "1238:6:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1237:18:69"
              },
              "src": "1175:81:69"
            },
            {
              "errorSelector": "7479f939",
              "id": 22167,
              "name": "CannotReplaceFunctionThatDoesNotExists",
              "nameLocation": "1263:38:69",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22166,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 22165,
                    "mutability": "mutable",
                    "name": "_selector",
                    "nameLocation": "1309:9:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22167,
                    "src": "1302:16:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    },
                    "typeName": {
                      "id": 22164,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "1302:6:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1301:18:69"
              },
              "src": "1257:63:69"
            },
            {
              "errorSelector": "d091bc81",
              "id": 22171,
              "name": "RemoveFacetAddressMustBeZeroAddress",
              "nameLocation": "1327:35:69",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22170,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 22169,
                    "mutability": "mutable",
                    "name": "_facetAddress",
                    "nameLocation": "1371:13:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22171,
                    "src": "1363:21:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 22168,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1363:7:69",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1362:23:69"
              },
              "src": "1321:65:69"
            },
            {
              "errorSelector": "7a08a22d",
              "id": 22175,
              "name": "CannotRemoveFunctionThatDoesNotExist",
              "nameLocation": "1393:36:69",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22174,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 22173,
                    "mutability": "mutable",
                    "name": "_selector",
                    "nameLocation": "1437:9:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22175,
                    "src": "1430:16:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    },
                    "typeName": {
                      "id": 22172,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "1430:6:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1429:18:69"
              },
              "src": "1387:61:69"
            },
            {
              "errorSelector": "6fafeb08",
              "id": 22179,
              "name": "CannotRemoveImmutableFunction",
              "nameLocation": "1455:29:69",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22178,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 22177,
                    "mutability": "mutable",
                    "name": "_selector",
                    "nameLocation": "1492:9:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22179,
                    "src": "1485:16:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    },
                    "typeName": {
                      "id": 22176,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "1485:6:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1484:18:69"
              },
              "src": "1449:54:69"
            },
            {
              "errorSelector": "192105d7",
              "id": 22185,
              "name": "InitializationFunctionReverted",
              "nameLocation": "1510:30:69",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 22184,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 22181,
                    "mutability": "mutable",
                    "name": "_initializationContractAddress",
                    "nameLocation": "1549:30:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22185,
                    "src": "1541:38:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 22180,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1541:7:69",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 22183,
                    "mutability": "mutable",
                    "name": "_calldata",
                    "nameLocation": "1587:9:69",
                    "nodeType": "VariableDeclaration",
                    "scope": 22185,
                    "src": "1581:15:69",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 22182,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "1581:5:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1540:57:69"
              },
              "src": "1504:94:69"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "LibDiamond",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 22819,
              "linearizedBaseContracts": [
                22819
              ],
              "name": "LibDiamond",
              "nameLocation": "1608:10:69",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 22190,
                  "mutability": "constant",
                  "name": "DIAMOND_STORAGE_POSITION",
                  "nameLocation": "1642:24:69",
                  "nodeType": "VariableDeclaration",
                  "scope": 22819,
                  "src": "1625:89:69",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 22186,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1625:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "6469616d6f6e642e7374616e646172642e6469616d6f6e642e73746f72616765",
                        "id": 22188,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1679:34:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c",
                          "typeString": "literal_string \"diamond.standard.diamond.storage\""
                        },
                        "value": "diamond.standard.diamond.storage"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c",
                          "typeString": "literal_string \"diamond.standard.diamond.storage\""
                        }
                      ],
                      "id": 22187,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1669:9:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 22189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1669:45:69",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "canonicalName": "LibDiamond.FacetAddressAndSelectorPosition",
                  "id": 22195,
                  "members": [
                    {
                      "constant": false,
                      "id": 22192,
                      "mutability": "mutable",
                      "name": "facetAddress",
                      "nameLocation": "1778:12:69",
                      "nodeType": "VariableDeclaration",
                      "scope": 22195,
                      "src": "1770:20:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 22191,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1770:7:69",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22194,
                      "mutability": "mutable",
                      "name": "selectorPosition",
                      "nameLocation": "1807:16:69",
                      "nodeType": "VariableDeclaration",
                      "scope": 22195,
                      "src": "1800:23:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 22193,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "1800:6:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "FacetAddressAndSelectorPosition",
                  "nameLocation": "1728:31:69",
                  "nodeType": "StructDefinition",
                  "scope": 22819,
                  "src": "1721:109:69",
                  "visibility": "public"
                },
                {
                  "canonicalName": "LibDiamond.DiamondStorage",
                  "id": 22210,
                  "members": [
                    {
                      "constant": false,
                      "id": 22200,
                      "mutability": "mutable",
                      "name": "facetAddressAndSelectorPosition",
                      "nameLocation": "2006:31:69",
                      "nodeType": "VariableDeclaration",
                      "scope": 22210,
                      "src": "1955:82:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndSelectorPosition_$22195_storage_$",
                        "typeString": "mapping(bytes4 => struct LibDiamond.FacetAddressAndSelectorPosition)"
                      },
                      "typeName": {
                        "id": 22199,
                        "keyName": "",
                        "keyNameLocation": "-1:-1:-1",
                        "keyType": {
                          "id": 22196,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1963:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "1955:50:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndSelectorPosition_$22195_storage_$",
                          "typeString": "mapping(bytes4 => struct LibDiamond.FacetAddressAndSelectorPosition)"
                        },
                        "valueName": "",
                        "valueNameLocation": "-1:-1:-1",
                        "valueType": {
                          "id": 22198,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 22197,
                            "name": "FacetAddressAndSelectorPosition",
                            "nameLocations": [
                              "1973:31:69"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 22195,
                            "src": "1973:31:69"
                          },
                          "referencedDeclaration": 22195,
                          "src": "1973:31:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_storage_ptr",
                            "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition"
                          }
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22203,
                      "mutability": "mutable",
                      "name": "selectors",
                      "nameLocation": "2056:9:69",
                      "nodeType": "VariableDeclaration",
                      "scope": 22210,
                      "src": "2047:18:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                        "typeString": "bytes4[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 22201,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2047:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 22202,
                        "nodeType": "ArrayTypeName",
                        "src": "2047:8:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                          "typeString": "bytes4[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22207,
                      "mutability": "mutable",
                      "name": "supportedInterfaces",
                      "nameLocation": "2099:19:69",
                      "nodeType": "VariableDeclaration",
                      "scope": 22210,
                      "src": "2075:43:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$",
                        "typeString": "mapping(bytes4 => bool)"
                      },
                      "typeName": {
                        "id": 22206,
                        "keyName": "",
                        "keyNameLocation": "-1:-1:-1",
                        "keyType": {
                          "id": 22204,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2083:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "2075:23:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$",
                          "typeString": "mapping(bytes4 => bool)"
                        },
                        "valueName": "",
                        "valueNameLocation": "-1:-1:-1",
                        "valueType": {
                          "id": 22205,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2093:4:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22209,
                      "mutability": "mutable",
                      "name": "contractOwner",
                      "nameLocation": "2169:13:69",
                      "nodeType": "VariableDeclaration",
                      "scope": 22210,
                      "src": "2161:21:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 22208,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2161:7:69",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "DiamondStorage",
                  "nameLocation": "1843:14:69",
                  "nodeType": "StructDefinition",
                  "scope": 22819,
                  "src": "1836:353:69",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22221,
                    "nodeType": "Block",
                    "src": "2271:121:69",
                    "statements": [
                      {
                        "assignments": [
                          22217
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22217,
                            "mutability": "mutable",
                            "name": "position",
                            "nameLocation": "2289:8:69",
                            "nodeType": "VariableDeclaration",
                            "scope": 22221,
                            "src": "2281:16:69",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 22216,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2281:7:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22219,
                        "initialValue": {
                          "id": 22218,
                          "name": "DIAMOND_STORAGE_POSITION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22190,
                          "src": "2300:24:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2281:43:69"
                      },
                      {
                        "AST": {
                          "nativeSrc": "2343:43:69",
                          "nodeType": "YulBlock",
                          "src": "2343:43:69",
                          "statements": [
                            {
                              "nativeSrc": "2357:19:69",
                              "nodeType": "YulAssignment",
                              "src": "2357:19:69",
                              "value": {
                                "name": "position",
                                "nativeSrc": "2368:8:69",
                                "nodeType": "YulIdentifier",
                                "src": "2368:8:69"
                              },
                              "variableNames": [
                                {
                                  "name": "ds.slot",
                                  "nativeSrc": "2357:7:69",
                                  "nodeType": "YulIdentifier",
                                  "src": "2357:7:69"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 22214,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "2357:7:69",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 22217,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2368:8:69",
                            "valueSize": 1
                          }
                        ],
                        "id": 22220,
                        "nodeType": "InlineAssembly",
                        "src": "2334:52:69"
                      }
                    ]
                  },
                  "id": 22222,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "diamondStorage",
                  "nameLocation": "2204:14:69",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22211,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2218:2:69"
                  },
                  "returnParameters": {
                    "id": 22215,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22214,
                        "mutability": "mutable",
                        "name": "ds",
                        "nameLocation": "2267:2:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22222,
                        "src": "2244:25:69",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                          "typeString": "struct LibDiamond.DiamondStorage"
                        },
                        "typeName": {
                          "id": 22213,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 22212,
                            "name": "DiamondStorage",
                            "nameLocations": [
                              "2244:14:69"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 22210,
                            "src": "2244:14:69"
                          },
                          "referencedDeclaration": 22210,
                          "src": "2244:14:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                            "typeString": "struct LibDiamond.DiamondStorage"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2243:27:69"
                  },
                  "scope": 22819,
                  "src": "2195:197:69",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
                  "id": 22228,
                  "name": "OwnershipTransferred",
                  "nameLocation": "2404:20:69",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 22227,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22224,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nameLocation": "2441:13:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22228,
                        "src": "2425:29:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22223,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2425:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22226,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "2472:8:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22228,
                        "src": "2456:24:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22225,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2456:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2424:57:69"
                  },
                  "src": "2398:84:69"
                },
                {
                  "body": {
                    "id": 22255,
                    "nodeType": "Block",
                    "src": "2542:210:69",
                    "statements": [
                      {
                        "assignments": [
                          22235
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22235,
                            "mutability": "mutable",
                            "name": "ds",
                            "nameLocation": "2575:2:69",
                            "nodeType": "VariableDeclaration",
                            "scope": 22255,
                            "src": "2552:25:69",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                              "typeString": "struct LibDiamond.DiamondStorage"
                            },
                            "typeName": {
                              "id": 22234,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 22233,
                                "name": "DiamondStorage",
                                "nameLocations": [
                                  "2552:14:69"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 22210,
                                "src": "2552:14:69"
                              },
                              "referencedDeclaration": 22210,
                              "src": "2552:14:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22238,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 22236,
                            "name": "diamondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22222,
                            "src": "2580:14:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_DiamondStorage_$22210_storage_ptr_$",
                              "typeString": "function () pure returns (struct LibDiamond.DiamondStorage storage pointer)"
                            }
                          },
                          "id": 22237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2580:16:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                            "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2552:44:69"
                      },
                      {
                        "assignments": [
                          22240
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22240,
                            "mutability": "mutable",
                            "name": "previousOwner",
                            "nameLocation": "2614:13:69",
                            "nodeType": "VariableDeclaration",
                            "scope": 22255,
                            "src": "2606:21:69",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 22239,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2606:7:69",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22243,
                        "initialValue": {
                          "expression": {
                            "id": 22241,
                            "name": "ds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22235,
                            "src": "2630:2:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                              "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                            }
                          },
                          "id": 22242,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "2633:13:69",
                          "memberName": "contractOwner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22209,
                          "src": "2630:16:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2606:40:69"
                      },
                      {
                        "expression": {
                          "id": 22248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 22244,
                              "name": "ds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22235,
                              "src": "2656:2:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                              }
                            },
                            "id": 22246,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "2659:13:69",
                            "memberName": "contractOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22209,
                            "src": "2656:16:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 22247,
                            "name": "_newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22230,
                            "src": "2675:9:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2656:28:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 22249,
                        "nodeType": "ExpressionStatement",
                        "src": "2656:28:69"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 22251,
                              "name": "previousOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22240,
                              "src": "2720:13:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22252,
                              "name": "_newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22230,
                              "src": "2735:9:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 22250,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22228,
                            "src": "2699:20:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 22253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2699:46:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22254,
                        "nodeType": "EmitStatement",
                        "src": "2694:51:69"
                      }
                    ]
                  },
                  "id": 22256,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setContractOwner",
                  "nameLocation": "2497:16:69",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22231,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22230,
                        "mutability": "mutable",
                        "name": "_newOwner",
                        "nameLocation": "2522:9:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22256,
                        "src": "2514:17:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22229,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2514:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2513:19:69"
                  },
                  "returnParameters": {
                    "id": 22232,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2542:0:69"
                  },
                  "scope": 22819,
                  "src": "2488:264:69",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22267,
                    "nodeType": "Block",
                    "src": "2830:64:69",
                    "statements": [
                      {
                        "expression": {
                          "id": 22265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22261,
                            "name": "contractOwner_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22259,
                            "src": "2840:14:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 22262,
                                "name": "diamondStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22222,
                                "src": "2857:14:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_DiamondStorage_$22210_storage_ptr_$",
                                  "typeString": "function () pure returns (struct LibDiamond.DiamondStorage storage pointer)"
                                }
                              },
                              "id": 22263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2857:16:69",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                              }
                            },
                            "id": 22264,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2874:13:69",
                            "memberName": "contractOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22209,
                            "src": "2857:30:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2840:47:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 22266,
                        "nodeType": "ExpressionStatement",
                        "src": "2840:47:69"
                      }
                    ]
                  },
                  "id": 22268,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "contractOwner",
                  "nameLocation": "2767:13:69",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22257,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2780:2:69"
                  },
                  "returnParameters": {
                    "id": 22260,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22259,
                        "mutability": "mutable",
                        "name": "contractOwner_",
                        "nameLocation": "2814:14:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22268,
                        "src": "2806:22:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22258,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2806:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2805:24:69"
                  },
                  "scope": 22819,
                  "src": "2758:136:69",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22287,
                    "nodeType": "Block",
                    "src": "2948:158:69",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 22276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 22271,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2962:3:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 22272,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2966:6:69",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "2962:10:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 22273,
                                "name": "diamondStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22222,
                                "src": "2976:14:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_DiamondStorage_$22210_storage_ptr_$",
                                  "typeString": "function () pure returns (struct LibDiamond.DiamondStorage storage pointer)"
                                }
                              },
                              "id": 22274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2976:16:69",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                              }
                            },
                            "id": 22275,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2993:13:69",
                            "memberName": "contractOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22209,
                            "src": "2976:30:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2962:44:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22286,
                        "nodeType": "IfStatement",
                        "src": "2958:142:69",
                        "trueBody": {
                          "id": 22285,
                          "nodeType": "Block",
                          "src": "3008:92:69",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 22278,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "3046:3:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 22279,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3050:6:69",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "3046:10:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 22280,
                                        "name": "diamondStorage",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22222,
                                        "src": "3058:14:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_DiamondStorage_$22210_storage_ptr_$",
                                          "typeString": "function () pure returns (struct LibDiamond.DiamondStorage storage pointer)"
                                        }
                                      },
                                      "id": 22281,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3058:16:69",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                        "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                      }
                                    },
                                    "id": 22282,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3075:13:69",
                                    "memberName": "contractOwner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22209,
                                    "src": "3058:30:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 22277,
                                  "name": "NotContractOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22127,
                                  "src": "3029:16:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$returns$_t_error_$",
                                    "typeString": "function (address,address) pure returns (error)"
                                  }
                                },
                                "id": 22283,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3029:60:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 22284,
                              "nodeType": "RevertStatement",
                              "src": "3022:67:69"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 22288,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "enforceIsContractOwner",
                  "nameLocation": "2909:22:69",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22269,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2931:2:69"
                  },
                  "returnParameters": {
                    "id": 22270,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2948:0:69"
                  },
                  "scope": 22819,
                  "src": "2900:206:69",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "eventSelector": "8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673",
                  "id": 22298,
                  "name": "DiamondCut",
                  "nameLocation": "3118:10:69",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 22297,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22292,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_diamondCut",
                        "nameLocation": "3152:11:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22298,
                        "src": "3129:34:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IDiamond.FacetCut[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 22290,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 22289,
                              "name": "IDiamondCut.FacetCut",
                              "nameLocations": [
                                "3129:11:69",
                                "3141:8:69"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 20487,
                              "src": "3129:20:69"
                            },
                            "referencedDeclaration": 20487,
                            "src": "3129:20:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_FacetCut_$20487_storage_ptr",
                              "typeString": "struct IDiamond.FacetCut"
                            }
                          },
                          "id": 22291,
                          "nodeType": "ArrayTypeName",
                          "src": "3129:22:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_storage_$dyn_storage_ptr",
                            "typeString": "struct IDiamond.FacetCut[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22294,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_init",
                        "nameLocation": "3173:5:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22298,
                        "src": "3165:13:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22293,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3165:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22296,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_calldata",
                        "nameLocation": "3186:9:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22298,
                        "src": "3180:15:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 22295,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3180:5:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3128:68:69"
                  },
                  "src": "3112:85:69"
                },
                {
                  "body": {
                    "id": 22413,
                    "nodeType": "Block",
                    "src": "3361:1068:69",
                    "statements": [
                      {
                        "body": {
                          "id": 22400,
                          "nodeType": "Block",
                          "src": "3443:876:69",
                          "statements": [
                            {
                              "assignments": [
                                22323
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22323,
                                  "mutability": "mutable",
                                  "name": "functionSelectors",
                                  "nameLocation": "3473:17:69",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22400,
                                  "src": "3457:33:69",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                    "typeString": "bytes4[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 22321,
                                      "name": "bytes4",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3457:6:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "id": 22322,
                                    "nodeType": "ArrayTypeName",
                                    "src": "3457:8:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                      "typeString": "bytes4[]"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22328,
                              "initialValue": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 22324,
                                    "name": "_diamondCut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22302,
                                    "src": "3493:11:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct IDiamond.FacetCut memory[] memory"
                                    }
                                  },
                                  "id": 22326,
                                  "indexExpression": {
                                    "id": 22325,
                                    "name": "facetIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22310,
                                    "src": "3505:10:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3493:23:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FacetCut_$20487_memory_ptr",
                                    "typeString": "struct IDiamond.FacetCut memory"
                                  }
                                },
                                "id": 22327,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3517:17:69",
                                "memberName": "functionSelectors",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20486,
                                "src": "3493:41:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                  "typeString": "bytes4[] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3457:77:69"
                            },
                            {
                              "assignments": [
                                22330
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22330,
                                  "mutability": "mutable",
                                  "name": "facetAddress",
                                  "nameLocation": "3556:12:69",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22400,
                                  "src": "3548:20:69",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 22329,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3548:7:69",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22335,
                              "initialValue": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 22331,
                                    "name": "_diamondCut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22302,
                                    "src": "3571:11:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct IDiamond.FacetCut memory[] memory"
                                    }
                                  },
                                  "id": 22333,
                                  "indexExpression": {
                                    "id": 22332,
                                    "name": "facetIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22310,
                                    "src": "3583:10:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3571:23:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FacetCut_$20487_memory_ptr",
                                    "typeString": "struct IDiamond.FacetCut memory"
                                  }
                                },
                                "id": 22334,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3595:12:69",
                                "memberName": "facetAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20480,
                                "src": "3571:36:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3548:59:69"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 22336,
                                    "name": "functionSelectors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22323,
                                    "src": "3625:17:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                      "typeString": "bytes4[] memory"
                                    }
                                  },
                                  "id": 22337,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3643:6:69",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "3625:24:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 22338,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3653:1:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3625:29:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 22345,
                              "nodeType": "IfStatement",
                              "src": "3621:122:69",
                              "trueBody": {
                                "id": 22344,
                                "nodeType": "Block",
                                "src": "3656:87:69",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 22341,
                                          "name": "facetAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22330,
                                          "src": "3715:12:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 22340,
                                        "name": "NoSelectorsProvidedForFacetForCut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22131,
                                        "src": "3681:33:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                          "typeString": "function (address) pure returns (error)"
                                        }
                                      },
                                      "id": 22342,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3681:47:69",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 22343,
                                    "nodeType": "RevertStatement",
                                    "src": "3674:54:69"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                22350
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22350,
                                  "mutability": "mutable",
                                  "name": "action",
                                  "nameLocation": "3783:6:69",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22400,
                                  "src": "3756:33:69",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                                    "typeString": "enum IDiamond.FacetCutAction"
                                  },
                                  "typeName": {
                                    "id": 22349,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 22348,
                                      "name": "IDiamondCut.FacetCutAction",
                                      "nameLocations": [
                                        "3756:11:69",
                                        "3768:14:69"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 20478,
                                      "src": "3756:26:69"
                                    },
                                    "referencedDeclaration": 20478,
                                    "src": "3756:26:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                                      "typeString": "enum IDiamond.FacetCutAction"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22355,
                              "initialValue": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 22351,
                                    "name": "_diamondCut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22302,
                                    "src": "3792:11:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct IDiamond.FacetCut memory[] memory"
                                    }
                                  },
                                  "id": 22353,
                                  "indexExpression": {
                                    "id": 22352,
                                    "name": "facetIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22310,
                                    "src": "3804:10:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3792:23:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FacetCut_$20487_memory_ptr",
                                    "typeString": "struct IDiamond.FacetCut memory"
                                  }
                                },
                                "id": 22354,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3816:6:69",
                                "memberName": "action",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20483,
                                "src": "3792:30:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                                  "typeString": "enum IDiamond.FacetCutAction"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3756:66:69"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                                  "typeString": "enum IDiamond.FacetCutAction"
                                },
                                "id": 22360,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22356,
                                  "name": "action",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22350,
                                  "src": "3840:6:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                                    "typeString": "enum IDiamond.FacetCutAction"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "expression": {
                                      "id": 22357,
                                      "name": "IDiamond",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20498,
                                      "src": "3850:8:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IDiamond_$20498_$",
                                        "typeString": "type(contract IDiamond)"
                                      }
                                    },
                                    "id": 22358,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3859:14:69",
                                    "memberName": "FacetCutAction",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20478,
                                    "src": "3850:23:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_FacetCutAction_$20478_$",
                                      "typeString": "type(enum IDiamond.FacetCutAction)"
                                    }
                                  },
                                  "id": 22359,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "3874:3:69",
                                  "memberName": "Add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20475,
                                  "src": "3850:27:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                                    "typeString": "enum IDiamond.FacetCutAction"
                                  }
                                },
                                "src": "3840:37:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                                    "typeString": "enum IDiamond.FacetCutAction"
                                  },
                                  "id": 22371,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 22367,
                                    "name": "action",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22350,
                                    "src": "3967:6:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                                      "typeString": "enum IDiamond.FacetCutAction"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "expression": {
                                        "id": 22368,
                                        "name": "IDiamond",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20498,
                                        "src": "3977:8:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IDiamond_$20498_$",
                                          "typeString": "type(contract IDiamond)"
                                        }
                                      },
                                      "id": 22369,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "3986:14:69",
                                      "memberName": "FacetCutAction",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20478,
                                      "src": "3977:23:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_FacetCutAction_$20478_$",
                                        "typeString": "type(enum IDiamond.FacetCutAction)"
                                      }
                                    },
                                    "id": 22370,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "4001:7:69",
                                    "memberName": "Replace",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20476,
                                    "src": "3977:31:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                                      "typeString": "enum IDiamond.FacetCutAction"
                                    }
                                  },
                                  "src": "3967:41:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                                      "typeString": "enum IDiamond.FacetCutAction"
                                    },
                                    "id": 22382,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 22378,
                                      "name": "action",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22350,
                                      "src": "4102:6:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                                        "typeString": "enum IDiamond.FacetCutAction"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "expression": {
                                          "id": 22379,
                                          "name": "IDiamond",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20498,
                                          "src": "4112:8:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IDiamond_$20498_$",
                                            "typeString": "type(contract IDiamond)"
                                          }
                                        },
                                        "id": 22380,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "4121:14:69",
                                        "memberName": "FacetCutAction",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20478,
                                        "src": "4112:23:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_FacetCutAction_$20478_$",
                                          "typeString": "type(enum IDiamond.FacetCutAction)"
                                        }
                                      },
                                      "id": 22381,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "4136:6:69",
                                      "memberName": "Remove",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20477,
                                      "src": "4112:30:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                                        "typeString": "enum IDiamond.FacetCutAction"
                                      }
                                    },
                                    "src": "4102:40:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 22396,
                                    "nodeType": "Block",
                                    "src": "4231:78:69",
                                    "statements": [
                                      {
                                        "errorCall": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "id": 22392,
                                                  "name": "action",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 22350,
                                                  "src": "4286:6:69",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                                                    "typeString": "enum IDiamond.FacetCutAction"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_enum$_FacetCutAction_$20478",
                                                    "typeString": "enum IDiamond.FacetCutAction"
                                                  }
                                                ],
                                                "id": 22391,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "4280:5:69",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_uint8_$",
                                                  "typeString": "type(uint8)"
                                                },
                                                "typeName": {
                                                  "id": 22390,
                                                  "name": "uint8",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "4280:5:69",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 22393,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "4280:13:69",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            ],
                                            "id": 22389,
                                            "name": "IncorrectFacetCutAction",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22146,
                                            "src": "4256:23:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_error_pure$_t_uint8_$returns$_t_error_$",
                                              "typeString": "function (uint8) pure returns (error)"
                                            }
                                          },
                                          "id": 22394,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4256:38:69",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_error",
                                            "typeString": "error"
                                          }
                                        },
                                        "id": 22395,
                                        "nodeType": "RevertStatement",
                                        "src": "4249:45:69"
                                      }
                                    ]
                                  },
                                  "id": 22397,
                                  "nodeType": "IfStatement",
                                  "src": "4098:211:69",
                                  "trueBody": {
                                    "id": 22388,
                                    "nodeType": "Block",
                                    "src": "4144:81:69",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 22384,
                                              "name": "facetAddress",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22330,
                                              "src": "4178:12:69",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "id": 22385,
                                              "name": "functionSelectors",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22323,
                                              "src": "4192:17:69",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                                "typeString": "bytes4[] memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                                "typeString": "bytes4[] memory"
                                              }
                                            ],
                                            "id": 22383,
                                            "name": "removeFunctions",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22748,
                                            "src": "4162:15:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_bytes4_$dyn_memory_ptr_$returns$__$",
                                              "typeString": "function (address,bytes4[] memory)"
                                            }
                                          },
                                          "id": 22386,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4162:48:69",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 22387,
                                        "nodeType": "ExpressionStatement",
                                        "src": "4162:48:69"
                                      }
                                    ]
                                  }
                                },
                                "id": 22398,
                                "nodeType": "IfStatement",
                                "src": "3963:346:69",
                                "trueBody": {
                                  "id": 22377,
                                  "nodeType": "Block",
                                  "src": "4010:82:69",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 22373,
                                            "name": "facetAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22330,
                                            "src": "4045:12:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 22374,
                                            "name": "functionSelectors",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22323,
                                            "src": "4059:17:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                              "typeString": "bytes4[] memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                              "typeString": "bytes4[] memory"
                                            }
                                          ],
                                          "id": 22372,
                                          "name": "replaceFunctions",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22615,
                                          "src": "4028:16:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_bytes4_$dyn_memory_ptr_$returns$__$",
                                            "typeString": "function (address,bytes4[] memory)"
                                          }
                                        },
                                        "id": 22375,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4028:49:69",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 22376,
                                      "nodeType": "ExpressionStatement",
                                      "src": "4028:49:69"
                                    }
                                  ]
                                }
                              },
                              "id": 22399,
                              "nodeType": "IfStatement",
                              "src": "3836:473:69",
                              "trueBody": {
                                "id": 22366,
                                "nodeType": "Block",
                                "src": "3879:78:69",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 22362,
                                          "name": "facetAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22330,
                                          "src": "3910:12:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 22363,
                                          "name": "functionSelectors",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22323,
                                          "src": "3924:17:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                            "typeString": "bytes4[] memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                            "typeString": "bytes4[] memory"
                                          }
                                        ],
                                        "id": 22361,
                                        "name": "addFunctions",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22515,
                                        "src": "3897:12:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_bytes4_$dyn_memory_ptr_$returns$__$",
                                          "typeString": "function (address,bytes4[] memory)"
                                        }
                                      },
                                      "id": 22364,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3897:45:69",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 22365,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3897:45:69"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22312,
                            "name": "facetIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22310,
                            "src": "3396:10:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 22313,
                              "name": "_diamondCut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22302,
                              "src": "3409:11:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IDiamond.FacetCut memory[] memory"
                              }
                            },
                            "id": 22314,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3421:6:69",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "3409:18:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3396:31:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22401,
                        "initializationExpression": {
                          "assignments": [
                            22310
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 22310,
                              "mutability": "mutable",
                              "name": "facetIndex",
                              "nameLocation": "3384:10:69",
                              "nodeType": "VariableDeclaration",
                              "scope": 22401,
                              "src": "3376:18:69",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 22309,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3376:7:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 22311,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3376:18:69"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 22317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3429:12:69",
                            "subExpression": {
                              "id": 22316,
                              "name": "facetIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22310,
                              "src": "3429:10:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 22318,
                          "nodeType": "ExpressionStatement",
                          "src": "3429:12:69"
                        },
                        "nodeType": "ForStatement",
                        "src": "3371:948:69"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 22403,
                              "name": "_diamondCut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22302,
                              "src": "4344:11:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IDiamond.FacetCut memory[] memory"
                              }
                            },
                            {
                              "id": 22404,
                              "name": "_init",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22304,
                              "src": "4357:5:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22405,
                              "name": "_calldata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22306,
                              "src": "4364:9:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IDiamond.FacetCut memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 22402,
                            "name": "DiamondCut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22298,
                            "src": "4333:10:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (struct IDiamond.FacetCut memory[] memory,address,bytes memory)"
                            }
                          },
                          "id": 22406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4333:41:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22407,
                        "nodeType": "EmitStatement",
                        "src": "4328:46:69"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 22409,
                              "name": "_init",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22304,
                              "src": "4405:5:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22410,
                              "name": "_calldata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22306,
                              "src": "4412:9:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 22408,
                            "name": "initializeDiamondCut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22796,
                            "src": "4384:20:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,bytes memory)"
                            }
                          },
                          "id": 22411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4384:38:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22412,
                        "nodeType": "ExpressionStatement",
                        "src": "4384:38:69"
                      }
                    ]
                  },
                  "id": 22414,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "diamondCut",
                  "nameLocation": "3259:10:69",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22302,
                        "mutability": "mutable",
                        "name": "_diamondCut",
                        "nameLocation": "3300:11:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22414,
                        "src": "3270:41:69",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IDiamond.FacetCut[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 22300,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 22299,
                              "name": "IDiamondCut.FacetCut",
                              "nameLocations": [
                                "3270:11:69",
                                "3282:8:69"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 20487,
                              "src": "3270:20:69"
                            },
                            "referencedDeclaration": 20487,
                            "src": "3270:20:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_FacetCut_$20487_storage_ptr",
                              "typeString": "struct IDiamond.FacetCut"
                            }
                          },
                          "id": 22301,
                          "nodeType": "ArrayTypeName",
                          "src": "3270:22:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_FacetCut_$20487_storage_$dyn_storage_ptr",
                            "typeString": "struct IDiamond.FacetCut[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22304,
                        "mutability": "mutable",
                        "name": "_init",
                        "nameLocation": "3321:5:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22414,
                        "src": "3313:13:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22303,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3313:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22306,
                        "mutability": "mutable",
                        "name": "_calldata",
                        "nameLocation": "3341:9:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22414,
                        "src": "3328:22:69",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 22305,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3328:5:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3269:82:69"
                  },
                  "returnParameters": {
                    "id": 22308,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3361:0:69"
                  },
                  "scope": 22819,
                  "src": "3250:1179:69",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22514,
                    "nodeType": "Block",
                    "src": "4525:936:69",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 22427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22422,
                            "name": "_facetAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22416,
                            "src": "4539:13:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 22425,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4564:1:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 22424,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4556:7:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 22423,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4556:7:69",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 22426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4556:10:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4539:27:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22433,
                        "nodeType": "IfStatement",
                        "src": "4535:116:69",
                        "trueBody": {
                          "id": 22432,
                          "nodeType": "Block",
                          "src": "4568:83:69",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 22429,
                                    "name": "_functionSelectors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22419,
                                    "src": "4621:18:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                      "typeString": "bytes4[] memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                      "typeString": "bytes4[] memory"
                                    }
                                  ],
                                  "id": 22428,
                                  "name": "CannotAddSelectorsToZeroAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22136,
                                  "src": "4589:31:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_array$_t_bytes4_$dyn_memory_ptr_$returns$_t_error_$",
                                    "typeString": "function (bytes4[] memory) pure returns (error)"
                                  }
                                },
                                "id": 22430,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4589:51:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 22431,
                              "nodeType": "RevertStatement",
                              "src": "4582:58:69"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          22436
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22436,
                            "mutability": "mutable",
                            "name": "ds",
                            "nameLocation": "4683:2:69",
                            "nodeType": "VariableDeclaration",
                            "scope": 22514,
                            "src": "4660:25:69",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                              "typeString": "struct LibDiamond.DiamondStorage"
                            },
                            "typeName": {
                              "id": 22435,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 22434,
                                "name": "DiamondStorage",
                                "nameLocations": [
                                  "4660:14:69"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 22210,
                                "src": "4660:14:69"
                              },
                              "referencedDeclaration": 22210,
                              "src": "4660:14:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22439,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 22437,
                            "name": "diamondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22222,
                            "src": "4688:14:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_DiamondStorage_$22210_storage_ptr_$",
                              "typeString": "function () pure returns (struct LibDiamond.DiamondStorage storage pointer)"
                            }
                          },
                          "id": 22438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4688:16:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                            "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4660:44:69"
                      },
                      {
                        "assignments": [
                          22441
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22441,
                            "mutability": "mutable",
                            "name": "selectorCount",
                            "nameLocation": "4721:13:69",
                            "nodeType": "VariableDeclaration",
                            "scope": 22514,
                            "src": "4714:20:69",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "typeName": {
                              "id": 22440,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "4714:6:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22448,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "expression": {
                                  "id": 22444,
                                  "name": "ds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22436,
                                  "src": "4744:2:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                    "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                  }
                                },
                                "id": 22445,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4747:9:69",
                                "memberName": "selectors",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22203,
                                "src": "4744:12:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                                  "typeString": "bytes4[] storage ref"
                                }
                              },
                              "id": 22446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4757:6:69",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4744:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4737:6:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint16_$",
                              "typeString": "type(uint16)"
                            },
                            "typeName": {
                              "id": 22442,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "4737:6:69",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 22447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4737:27:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4714:50:69"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 22450,
                              "name": "_facetAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22416,
                              "src": "4797:13:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "4c69624469616d6f6e644375743a2041646420666163657420686173206e6f20636f6465",
                              "id": 22451,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4812:38:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_343e33adc9ef80d2a3b19196e3a71ee2d793419943c19ad2b2a6875f7dd42e8d",
                                "typeString": "literal_string \"LibDiamondCut: Add facet has no code\""
                              },
                              "value": "LibDiamondCut: Add facet has no code"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_343e33adc9ef80d2a3b19196e3a71ee2d793419943c19ad2b2a6875f7dd42e8d",
                                "typeString": "literal_string \"LibDiamondCut: Add facet has no code\""
                              }
                            ],
                            "id": 22449,
                            "name": "enforceHasContractCode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22818,
                            "src": "4774:22:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (address,string memory) view"
                            }
                          },
                          "id": 22452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4774:77:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22453,
                        "nodeType": "ExpressionStatement",
                        "src": "4774:77:69"
                      },
                      {
                        "body": {
                          "id": 22512,
                          "nodeType": "Block",
                          "src": "4949:506:69",
                          "statements": [
                            {
                              "assignments": [
                                22465
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22465,
                                  "mutability": "mutable",
                                  "name": "selector",
                                  "nameLocation": "4970:8:69",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22512,
                                  "src": "4963:15:69",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 22464,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4963:6:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22469,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 22466,
                                  "name": "_functionSelectors",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22419,
                                  "src": "4981:18:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                    "typeString": "bytes4[] memory"
                                  }
                                },
                                "id": 22468,
                                "indexExpression": {
                                  "id": 22467,
                                  "name": "selectorIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22455,
                                  "src": "5000:13:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4981:33:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4963:51:69"
                            },
                            {
                              "assignments": [
                                22471
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22471,
                                  "mutability": "mutable",
                                  "name": "oldFacetAddress",
                                  "nameLocation": "5036:15:69",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22512,
                                  "src": "5028:23:69",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 22470,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5028:7:69",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22477,
                              "initialValue": {
                                "expression": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 22472,
                                      "name": "ds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22436,
                                      "src": "5054:2:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                        "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                      }
                                    },
                                    "id": 22473,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5057:31:69",
                                    "memberName": "facetAddressAndSelectorPosition",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22200,
                                    "src": "5054:34:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndSelectorPosition_$22195_storage_$",
                                      "typeString": "mapping(bytes4 => struct LibDiamond.FacetAddressAndSelectorPosition storage ref)"
                                    }
                                  },
                                  "id": 22475,
                                  "indexExpression": {
                                    "id": 22474,
                                    "name": "selector",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22465,
                                    "src": "5089:8:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5054:44:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_storage",
                                    "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition storage ref"
                                  }
                                },
                                "id": 22476,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5099:12:69",
                                "memberName": "facetAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22192,
                                "src": "5054:57:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5028:83:69"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 22483,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22478,
                                  "name": "oldFacetAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22471,
                                  "src": "5129:15:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 22481,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5156:1:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 22480,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5148:7:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 22479,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5148:7:69",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 22482,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5148:10:69",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5129:29:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 22489,
                              "nodeType": "IfStatement",
                              "src": "5125:128:69",
                              "trueBody": {
                                "id": 22488,
                                "nodeType": "Block",
                                "src": "5160:93:69",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 22485,
                                          "name": "selector",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22465,
                                          "src": "5229:8:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        ],
                                        "id": 22484,
                                        "name": "CannotAddFunctionToDiamondThatAlreadyExists",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22150,
                                        "src": "5185:43:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes4_$returns$_t_error_$",
                                          "typeString": "function (bytes4) pure returns (error)"
                                        }
                                      },
                                      "id": 22486,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5185:53:69",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 22487,
                                    "nodeType": "RevertStatement",
                                    "src": "5178:60:69"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 22499,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 22490,
                                      "name": "ds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22436,
                                      "src": "5266:2:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                        "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                      }
                                    },
                                    "id": 22493,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5269:31:69",
                                    "memberName": "facetAddressAndSelectorPosition",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22200,
                                    "src": "5266:34:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndSelectorPosition_$22195_storage_$",
                                      "typeString": "mapping(bytes4 => struct LibDiamond.FacetAddressAndSelectorPosition storage ref)"
                                    }
                                  },
                                  "id": 22494,
                                  "indexExpression": {
                                    "id": 22492,
                                    "name": "selector",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22465,
                                    "src": "5301:8:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5266:44:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_storage",
                                    "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 22496,
                                      "name": "_facetAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22416,
                                      "src": "5345:13:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 22497,
                                      "name": "selectorCount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22441,
                                      "src": "5360:13:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    ],
                                    "id": 22495,
                                    "name": "FacetAddressAndSelectorPosition",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22195,
                                    "src": "5313:31:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_FacetAddressAndSelectorPosition_$22195_storage_ptr_$",
                                      "typeString": "type(struct LibDiamond.FacetAddressAndSelectorPosition storage pointer)"
                                    }
                                  },
                                  "id": 22498,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5313:61:69",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_memory_ptr",
                                    "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition memory"
                                  }
                                },
                                "src": "5266:108:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_storage",
                                  "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition storage ref"
                                }
                              },
                              "id": 22500,
                              "nodeType": "ExpressionStatement",
                              "src": "5266:108:69"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 22506,
                                    "name": "selector",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22465,
                                    "src": "5406:8:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  ],
                                  "expression": {
                                    "expression": {
                                      "id": 22501,
                                      "name": "ds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22436,
                                      "src": "5388:2:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                        "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                      }
                                    },
                                    "id": 22504,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5391:9:69",
                                    "memberName": "selectors",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22203,
                                    "src": "5388:12:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                                      "typeString": "bytes4[] storage ref"
                                    }
                                  },
                                  "id": 22505,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5401:4:69",
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "src": "5388:17:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes4_$dyn_storage_ptr_$_t_bytes4_$returns$__$attached_to$_t_array$_t_bytes4_$dyn_storage_ptr_$",
                                    "typeString": "function (bytes4[] storage pointer,bytes4)"
                                  }
                                },
                                "id": 22507,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5388:27:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22508,
                              "nodeType": "ExpressionStatement",
                              "src": "5388:27:69"
                            },
                            {
                              "expression": {
                                "id": 22510,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "5429:15:69",
                                "subExpression": {
                                  "id": 22509,
                                  "name": "selectorCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22441,
                                  "src": "5429:13:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 22511,
                              "nodeType": "ExpressionStatement",
                              "src": "5429:15:69"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22457,
                            "name": "selectorIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22455,
                            "src": "4889:13:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 22458,
                              "name": "_functionSelectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22419,
                              "src": "4905:18:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 22459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4924:6:69",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "4905:25:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4889:41:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22513,
                        "initializationExpression": {
                          "assignments": [
                            22455
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 22455,
                              "mutability": "mutable",
                              "name": "selectorIndex",
                              "nameLocation": "4874:13:69",
                              "nodeType": "VariableDeclaration",
                              "scope": 22513,
                              "src": "4866:21:69",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 22454,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4866:7:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 22456,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4866:21:69"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 22462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4932:15:69",
                            "subExpression": {
                              "id": 22461,
                              "name": "selectorIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22455,
                              "src": "4932:13:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 22463,
                          "nodeType": "ExpressionStatement",
                          "src": "4932:15:69"
                        },
                        "nodeType": "ForStatement",
                        "src": "4861:594:69"
                      }
                    ]
                  },
                  "id": 22515,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addFunctions",
                  "nameLocation": "4444:12:69",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22420,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22416,
                        "mutability": "mutable",
                        "name": "_facetAddress",
                        "nameLocation": "4465:13:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22515,
                        "src": "4457:21:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22415,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4457:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22419,
                        "mutability": "mutable",
                        "name": "_functionSelectors",
                        "nameLocation": "4496:18:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22515,
                        "src": "4480:34:69",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 22417,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "4480:6:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 22418,
                          "nodeType": "ArrayTypeName",
                          "src": "4480:8:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4456:59:69"
                  },
                  "returnParameters": {
                    "id": 22421,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4525:0:69"
                  },
                  "scope": 22819,
                  "src": "4435:1026:69",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22614,
                    "nodeType": "Block",
                    "src": "5561:1221:69",
                    "statements": [
                      {
                        "assignments": [
                          22525
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22525,
                            "mutability": "mutable",
                            "name": "ds",
                            "nameLocation": "5594:2:69",
                            "nodeType": "VariableDeclaration",
                            "scope": 22614,
                            "src": "5571:25:69",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                              "typeString": "struct LibDiamond.DiamondStorage"
                            },
                            "typeName": {
                              "id": 22524,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 22523,
                                "name": "DiamondStorage",
                                "nameLocations": [
                                  "5571:14:69"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 22210,
                                "src": "5571:14:69"
                              },
                              "referencedDeclaration": 22210,
                              "src": "5571:14:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22528,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 22526,
                            "name": "diamondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22222,
                            "src": "5599:14:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_DiamondStorage_$22210_storage_ptr_$",
                              "typeString": "function () pure returns (struct LibDiamond.DiamondStorage storage pointer)"
                            }
                          },
                          "id": 22527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5599:16:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                            "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5571:44:69"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 22534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22529,
                            "name": "_facetAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22517,
                            "src": "5629:13:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 22532,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5654:1:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 22531,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5646:7:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 22530,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5646:7:69",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 22533,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5646:10:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5629:27:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22540,
                        "nodeType": "IfStatement",
                        "src": "5625:131:69",
                        "trueBody": {
                          "id": 22539,
                          "nodeType": "Block",
                          "src": "5658:98:69",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 22536,
                                    "name": "_functionSelectors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22520,
                                    "src": "5726:18:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                      "typeString": "bytes4[] memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                      "typeString": "bytes4[] memory"
                                    }
                                  ],
                                  "id": 22535,
                                  "name": "CannotReplaceFunctionsFromFacetWithZeroAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22155,
                                  "src": "5679:46:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_array$_t_bytes4_$dyn_memory_ptr_$returns$_t_error_$",
                                    "typeString": "function (bytes4[] memory) pure returns (error)"
                                  }
                                },
                                "id": 22537,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5679:66:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 22538,
                              "nodeType": "RevertStatement",
                              "src": "5672:73:69"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 22542,
                              "name": "_facetAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22517,
                              "src": "5788:13:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "4c69624469616d6f6e644375743a205265706c61636520666163657420686173206e6f20636f6465",
                              "id": 22543,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5803:42:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_de246aa8052f872d61bcd9cfb620b8012f8bc6e512400178c0e967944dadacfe",
                                "typeString": "literal_string \"LibDiamondCut: Replace facet has no code\""
                              },
                              "value": "LibDiamondCut: Replace facet has no code"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_de246aa8052f872d61bcd9cfb620b8012f8bc6e512400178c0e967944dadacfe",
                                "typeString": "literal_string \"LibDiamondCut: Replace facet has no code\""
                              }
                            ],
                            "id": 22541,
                            "name": "enforceHasContractCode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22818,
                            "src": "5765:22:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (address,string memory) view"
                            }
                          },
                          "id": 22544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5765:81:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22545,
                        "nodeType": "ExpressionStatement",
                        "src": "5765:81:69"
                      },
                      {
                        "body": {
                          "id": 22612,
                          "nodeType": "Block",
                          "src": "5944:832:69",
                          "statements": [
                            {
                              "assignments": [
                                22557
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22557,
                                  "mutability": "mutable",
                                  "name": "selector",
                                  "nameLocation": "5965:8:69",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22612,
                                  "src": "5958:15:69",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 22556,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5958:6:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22561,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 22558,
                                  "name": "_functionSelectors",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22520,
                                  "src": "5976:18:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                    "typeString": "bytes4[] memory"
                                  }
                                },
                                "id": 22560,
                                "indexExpression": {
                                  "id": 22559,
                                  "name": "selectorIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22547,
                                  "src": "5995:13:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5976:33:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5958:51:69"
                            },
                            {
                              "assignments": [
                                22563
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22563,
                                  "mutability": "mutable",
                                  "name": "oldFacetAddress",
                                  "nameLocation": "6031:15:69",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22612,
                                  "src": "6023:23:69",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 22562,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6023:7:69",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22569,
                              "initialValue": {
                                "expression": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 22564,
                                      "name": "ds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22525,
                                      "src": "6049:2:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                        "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                      }
                                    },
                                    "id": 22565,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "6052:31:69",
                                    "memberName": "facetAddressAndSelectorPosition",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22200,
                                    "src": "6049:34:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndSelectorPosition_$22195_storage_$",
                                      "typeString": "mapping(bytes4 => struct LibDiamond.FacetAddressAndSelectorPosition storage ref)"
                                    }
                                  },
                                  "id": 22567,
                                  "indexExpression": {
                                    "id": 22566,
                                    "name": "selector",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22557,
                                    "src": "6084:8:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6049:44:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_storage",
                                    "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition storage ref"
                                  }
                                },
                                "id": 22568,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6094:12:69",
                                "memberName": "facetAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22192,
                                "src": "6049:57:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6023:83:69"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 22575,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22570,
                                  "name": "oldFacetAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22563,
                                  "src": "6231:15:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 22573,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "6258:4:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_LibDiamond_$22819",
                                        "typeString": "library LibDiamond"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_LibDiamond_$22819",
                                        "typeString": "library LibDiamond"
                                      }
                                    ],
                                    "id": 22572,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6250:7:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 22571,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6250:7:69",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 22574,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6250:13:69",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "6231:32:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 22581,
                              "nodeType": "IfStatement",
                              "src": "6227:118:69",
                              "trueBody": {
                                "id": 22580,
                                "nodeType": "Block",
                                "src": "6265:80:69",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 22577,
                                          "name": "selector",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22557,
                                          "src": "6321:8:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        ],
                                        "id": 22576,
                                        "name": "CannotReplaceImmutableFunction",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22159,
                                        "src": "6290:30:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes4_$returns$_t_error_$",
                                          "typeString": "function (bytes4) pure returns (error)"
                                        }
                                      },
                                      "id": 22578,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6290:40:69",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 22579,
                                    "nodeType": "RevertStatement",
                                    "src": "6283:47:69"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 22584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22582,
                                  "name": "oldFacetAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22563,
                                  "src": "6362:15:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 22583,
                                  "name": "_facetAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22517,
                                  "src": "6381:13:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "6362:32:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 22590,
                              "nodeType": "IfStatement",
                              "src": "6358:144:69",
                              "trueBody": {
                                "id": 22589,
                                "nodeType": "Block",
                                "src": "6396:106:69",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 22586,
                                          "name": "selector",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22557,
                                          "src": "6478:8:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        ],
                                        "id": 22585,
                                        "name": "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22163,
                                        "src": "6421:56:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes4_$returns$_t_error_$",
                                          "typeString": "function (bytes4) pure returns (error)"
                                        }
                                      },
                                      "id": 22587,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6421:66:69",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 22588,
                                    "nodeType": "RevertStatement",
                                    "src": "6414:73:69"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 22596,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22591,
                                  "name": "oldFacetAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22563,
                                  "src": "6519:15:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 22594,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6546:1:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 22593,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6538:7:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 22592,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6538:7:69",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 22595,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6538:10:69",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "6519:29:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 22602,
                              "nodeType": "IfStatement",
                              "src": "6515:123:69",
                              "trueBody": {
                                "id": 22601,
                                "nodeType": "Block",
                                "src": "6550:88:69",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 22598,
                                          "name": "selector",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22557,
                                          "src": "6614:8:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        ],
                                        "id": 22597,
                                        "name": "CannotReplaceFunctionThatDoesNotExists",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22167,
                                        "src": "6575:38:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes4_$returns$_t_error_$",
                                          "typeString": "function (bytes4) pure returns (error)"
                                        }
                                      },
                                      "id": 22599,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6575:48:69",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 22600,
                                    "nodeType": "RevertStatement",
                                    "src": "6568:55:69"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 22610,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "expression": {
                                        "id": 22603,
                                        "name": "ds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22525,
                                        "src": "6692:2:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                          "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                        }
                                      },
                                      "id": 22606,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "6695:31:69",
                                      "memberName": "facetAddressAndSelectorPosition",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22200,
                                      "src": "6692:34:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndSelectorPosition_$22195_storage_$",
                                        "typeString": "mapping(bytes4 => struct LibDiamond.FacetAddressAndSelectorPosition storage ref)"
                                      }
                                    },
                                    "id": 22607,
                                    "indexExpression": {
                                      "id": 22605,
                                      "name": "selector",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22557,
                                      "src": "6727:8:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6692:44:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_storage",
                                      "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition storage ref"
                                    }
                                  },
                                  "id": 22608,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "6737:12:69",
                                  "memberName": "facetAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22192,
                                  "src": "6692:57:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 22609,
                                  "name": "_facetAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22517,
                                  "src": "6752:13:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "6692:73:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 22611,
                              "nodeType": "ExpressionStatement",
                              "src": "6692:73:69"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22549,
                            "name": "selectorIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22547,
                            "src": "5884:13:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 22550,
                              "name": "_functionSelectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22520,
                              "src": "5900:18:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 22551,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5919:6:69",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "5900:25:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5884:41:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22613,
                        "initializationExpression": {
                          "assignments": [
                            22547
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 22547,
                              "mutability": "mutable",
                              "name": "selectorIndex",
                              "nameLocation": "5869:13:69",
                              "nodeType": "VariableDeclaration",
                              "scope": 22613,
                              "src": "5861:21:69",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 22546,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5861:7:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 22548,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5861:21:69"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 22554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "5927:15:69",
                            "subExpression": {
                              "id": 22553,
                              "name": "selectorIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22547,
                              "src": "5927:13:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 22555,
                          "nodeType": "ExpressionStatement",
                          "src": "5927:15:69"
                        },
                        "nodeType": "ForStatement",
                        "src": "5856:920:69"
                      }
                    ]
                  },
                  "id": 22615,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "replaceFunctions",
                  "nameLocation": "5476:16:69",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22521,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22517,
                        "mutability": "mutable",
                        "name": "_facetAddress",
                        "nameLocation": "5501:13:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22615,
                        "src": "5493:21:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22516,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5493:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22520,
                        "mutability": "mutable",
                        "name": "_functionSelectors",
                        "nameLocation": "5532:18:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22615,
                        "src": "5516:34:69",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 22518,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "5516:6:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 22519,
                          "nodeType": "ArrayTypeName",
                          "src": "5516:8:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5492:59:69"
                  },
                  "returnParameters": {
                    "id": 22522,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5561:0:69"
                  },
                  "scope": 22819,
                  "src": "5467:1315:69",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22747,
                    "nodeType": "Block",
                    "src": "6881:1620:69",
                    "statements": [
                      {
                        "assignments": [
                          22625
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22625,
                            "mutability": "mutable",
                            "name": "ds",
                            "nameLocation": "6914:2:69",
                            "nodeType": "VariableDeclaration",
                            "scope": 22747,
                            "src": "6891:25:69",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                              "typeString": "struct LibDiamond.DiamondStorage"
                            },
                            "typeName": {
                              "id": 22624,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 22623,
                                "name": "DiamondStorage",
                                "nameLocations": [
                                  "6891:14:69"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 22210,
                                "src": "6891:14:69"
                              },
                              "referencedDeclaration": 22210,
                              "src": "6891:14:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22628,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 22626,
                            "name": "diamondStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22222,
                            "src": "6919:14:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_DiamondStorage_$22210_storage_ptr_$",
                              "typeString": "function () pure returns (struct LibDiamond.DiamondStorage storage pointer)"
                            }
                          },
                          "id": 22627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6919:16:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                            "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6891:44:69"
                      },
                      {
                        "assignments": [
                          22630
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22630,
                            "mutability": "mutable",
                            "name": "selectorCount",
                            "nameLocation": "6953:13:69",
                            "nodeType": "VariableDeclaration",
                            "scope": 22747,
                            "src": "6945:21:69",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22629,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6945:7:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22634,
                        "initialValue": {
                          "expression": {
                            "expression": {
                              "id": 22631,
                              "name": "ds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22625,
                              "src": "6969:2:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                              }
                            },
                            "id": 22632,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6972:9:69",
                            "memberName": "selectors",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22203,
                            "src": "6969:12:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                              "typeString": "bytes4[] storage ref"
                            }
                          },
                          "id": 22633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6982:6:69",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "6969:19:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6945:43:69"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 22640,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22635,
                            "name": "_facetAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22617,
                            "src": "7002:13:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 22638,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7027:1:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 22637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7019:7:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 22636,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7019:7:69",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 22639,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7019:10:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7002:27:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22646,
                        "nodeType": "IfStatement",
                        "src": "6998:115:69",
                        "trueBody": {
                          "id": 22645,
                          "nodeType": "Block",
                          "src": "7031:82:69",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 22642,
                                    "name": "_facetAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22617,
                                    "src": "7088:13:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 22641,
                                  "name": "RemoveFacetAddressMustBeZeroAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22171,
                                  "src": "7052:35:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                    "typeString": "function (address) pure returns (error)"
                                  }
                                },
                                "id": 22643,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7052:50:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 22644,
                              "nodeType": "RevertStatement",
                              "src": "7045:57:69"
                            }
                          ]
                        }
                      },
                      {
                        "body": {
                          "id": 22745,
                          "nodeType": "Block",
                          "src": "7210:1285:69",
                          "statements": [
                            {
                              "assignments": [
                                22658
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22658,
                                  "mutability": "mutable",
                                  "name": "selector",
                                  "nameLocation": "7231:8:69",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22745,
                                  "src": "7224:15:69",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 22657,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7224:6:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22662,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 22659,
                                  "name": "_functionSelectors",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22620,
                                  "src": "7242:18:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                    "typeString": "bytes4[] memory"
                                  }
                                },
                                "id": 22661,
                                "indexExpression": {
                                  "id": 22660,
                                  "name": "selectorIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22648,
                                  "src": "7261:13:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7242:33:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7224:51:69"
                            },
                            {
                              "assignments": [
                                22665
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22665,
                                  "mutability": "mutable",
                                  "name": "oldFacetAddressAndSelectorPosition",
                                  "nameLocation": "7328:34:69",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22745,
                                  "src": "7289:73:69",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_memory_ptr",
                                    "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition"
                                  },
                                  "typeName": {
                                    "id": 22664,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 22663,
                                      "name": "FacetAddressAndSelectorPosition",
                                      "nameLocations": [
                                        "7289:31:69"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 22195,
                                      "src": "7289:31:69"
                                    },
                                    "referencedDeclaration": 22195,
                                    "src": "7289:31:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_storage_ptr",
                                      "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22670,
                              "initialValue": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 22666,
                                    "name": "ds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22625,
                                    "src": "7381:2:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                      "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                    }
                                  },
                                  "id": 22667,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "7384:31:69",
                                  "memberName": "facetAddressAndSelectorPosition",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22200,
                                  "src": "7381:34:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndSelectorPosition_$22195_storage_$",
                                    "typeString": "mapping(bytes4 => struct LibDiamond.FacetAddressAndSelectorPosition storage ref)"
                                  }
                                },
                                "id": 22669,
                                "indexExpression": {
                                  "id": 22668,
                                  "name": "selector",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22658,
                                  "src": "7416:8:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7381:44:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_storage",
                                  "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7289:136:69"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 22677,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 22671,
                                    "name": "oldFacetAddressAndSelectorPosition",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22665,
                                    "src": "7443:34:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_memory_ptr",
                                      "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition memory"
                                    }
                                  },
                                  "id": 22672,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "7478:12:69",
                                  "memberName": "facetAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22192,
                                  "src": "7443:47:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 22675,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7502:1:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 22674,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7494:7:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 22673,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7494:7:69",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 22676,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7494:10:69",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "7443:61:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 22683,
                              "nodeType": "IfStatement",
                              "src": "7439:153:69",
                              "trueBody": {
                                "id": 22682,
                                "nodeType": "Block",
                                "src": "7506:86:69",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 22679,
                                          "name": "selector",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22658,
                                          "src": "7568:8:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        ],
                                        "id": 22678,
                                        "name": "CannotRemoveFunctionThatDoesNotExist",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22175,
                                        "src": "7531:36:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes4_$returns$_t_error_$",
                                          "typeString": "function (bytes4) pure returns (error)"
                                        }
                                      },
                                      "id": 22680,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7531:46:69",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 22681,
                                    "nodeType": "RevertStatement",
                                    "src": "7524:53:69"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 22690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 22684,
                                    "name": "oldFacetAddressAndSelectorPosition",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22665,
                                    "src": "7703:34:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_memory_ptr",
                                      "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition memory"
                                    }
                                  },
                                  "id": 22685,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "7738:12:69",
                                  "memberName": "facetAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22192,
                                  "src": "7703:47:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 22688,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "7762:4:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_LibDiamond_$22819",
                                        "typeString": "library LibDiamond"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_LibDiamond_$22819",
                                        "typeString": "library LibDiamond"
                                      }
                                    ],
                                    "id": 22687,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7754:7:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 22686,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7754:7:69",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 22689,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7754:13:69",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "7703:64:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 22696,
                              "nodeType": "IfStatement",
                              "src": "7699:149:69",
                              "trueBody": {
                                "id": 22695,
                                "nodeType": "Block",
                                "src": "7769:79:69",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 22692,
                                          "name": "selector",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22658,
                                          "src": "7824:8:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        ],
                                        "id": 22691,
                                        "name": "CannotRemoveImmutableFunction",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22179,
                                        "src": "7794:29:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes4_$returns$_t_error_$",
                                          "typeString": "function (bytes4) pure returns (error)"
                                        }
                                      },
                                      "id": 22693,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7794:39:69",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 22694,
                                    "nodeType": "RevertStatement",
                                    "src": "7787:46:69"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 22698,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "7912:15:69",
                                "subExpression": {
                                  "id": 22697,
                                  "name": "selectorCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22630,
                                  "src": "7912:13:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 22699,
                              "nodeType": "ExpressionStatement",
                              "src": "7912:15:69"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22703,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 22700,
                                    "name": "oldFacetAddressAndSelectorPosition",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22665,
                                    "src": "7945:34:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_memory_ptr",
                                      "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition memory"
                                    }
                                  },
                                  "id": 22701,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "7980:16:69",
                                  "memberName": "selectorPosition",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22194,
                                  "src": "7945:51:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 22702,
                                  "name": "selectorCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22630,
                                  "src": "8000:13:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7945:68:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 22731,
                              "nodeType": "IfStatement",
                              "src": "7941:411:69",
                              "trueBody": {
                                "id": 22730,
                                "nodeType": "Block",
                                "src": "8015:337:69",
                                "statements": [
                                  {
                                    "assignments": [
                                      22705
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 22705,
                                        "mutability": "mutable",
                                        "name": "lastSelector",
                                        "nameLocation": "8040:12:69",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 22730,
                                        "src": "8033:19:69",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        "typeName": {
                                          "id": 22704,
                                          "name": "bytes4",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8033:6:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 22710,
                                    "initialValue": {
                                      "baseExpression": {
                                        "expression": {
                                          "id": 22706,
                                          "name": "ds",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22625,
                                          "src": "8055:2:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                            "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                          }
                                        },
                                        "id": 22707,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "8058:9:69",
                                        "memberName": "selectors",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22203,
                                        "src": "8055:12:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                                          "typeString": "bytes4[] storage ref"
                                        }
                                      },
                                      "id": 22709,
                                      "indexExpression": {
                                        "id": 22708,
                                        "name": "selectorCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22630,
                                        "src": "8068:13:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8055:27:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8033:49:69"
                                  },
                                  {
                                    "expression": {
                                      "id": 22718,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "expression": {
                                            "id": 22711,
                                            "name": "ds",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22625,
                                            "src": "8100:2:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                              "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                            }
                                          },
                                          "id": 22715,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "8103:9:69",
                                          "memberName": "selectors",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22203,
                                          "src": "8100:12:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                                            "typeString": "bytes4[] storage ref"
                                          }
                                        },
                                        "id": 22716,
                                        "indexExpression": {
                                          "expression": {
                                            "id": 22713,
                                            "name": "oldFacetAddressAndSelectorPosition",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22665,
                                            "src": "8113:34:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_memory_ptr",
                                              "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition memory"
                                            }
                                          },
                                          "id": 22714,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "8148:16:69",
                                          "memberName": "selectorPosition",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22194,
                                          "src": "8113:51:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "8100:65:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 22717,
                                        "name": "lastSelector",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22705,
                                        "src": "8168:12:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      },
                                      "src": "8100:80:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "id": 22719,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8100:80:69"
                                  },
                                  {
                                    "expression": {
                                      "id": 22728,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "expression": {
                                          "baseExpression": {
                                            "expression": {
                                              "id": 22720,
                                              "name": "ds",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22625,
                                              "src": "8198:2:69",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                                "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                              }
                                            },
                                            "id": 22723,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "8201:31:69",
                                            "memberName": "facetAddressAndSelectorPosition",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22200,
                                            "src": "8198:34:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndSelectorPosition_$22195_storage_$",
                                              "typeString": "mapping(bytes4 => struct LibDiamond.FacetAddressAndSelectorPosition storage ref)"
                                            }
                                          },
                                          "id": 22724,
                                          "indexExpression": {
                                            "id": 22722,
                                            "name": "lastSelector",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22705,
                                            "src": "8233:12:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "8198:48:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_storage",
                                            "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition storage ref"
                                          }
                                        },
                                        "id": 22725,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberLocation": "8247:16:69",
                                        "memberName": "selectorPosition",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22194,
                                        "src": "8198:65:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "expression": {
                                          "id": 22726,
                                          "name": "oldFacetAddressAndSelectorPosition",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22665,
                                          "src": "8286:34:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_memory_ptr",
                                            "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition memory"
                                          }
                                        },
                                        "id": 22727,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "8321:16:69",
                                        "memberName": "selectorPosition",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22194,
                                        "src": "8286:51:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "src": "8198:139:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "id": 22729,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8198:139:69"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "expression": {
                                      "id": 22732,
                                      "name": "ds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22625,
                                      "src": "8401:2:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                        "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                      }
                                    },
                                    "id": 22735,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "8404:9:69",
                                    "memberName": "selectors",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22203,
                                    "src": "8401:12:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                                      "typeString": "bytes4[] storage ref"
                                    }
                                  },
                                  "id": 22736,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "8414:3:69",
                                  "memberName": "pop",
                                  "nodeType": "MemberAccess",
                                  "src": "8401:16:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_bytes4_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_bytes4_$dyn_storage_ptr_$",
                                    "typeString": "function (bytes4[] storage pointer)"
                                  }
                                },
                                "id": 22737,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8401:18:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22738,
                              "nodeType": "ExpressionStatement",
                              "src": "8401:18:69"
                            },
                            {
                              "expression": {
                                "id": 22743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "8433:51:69",
                                "subExpression": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 22739,
                                      "name": "ds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22625,
                                      "src": "8440:2:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                        "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                      }
                                    },
                                    "id": 22740,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "8443:31:69",
                                    "memberName": "facetAddressAndSelectorPosition",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22200,
                                    "src": "8440:34:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndSelectorPosition_$22195_storage_$",
                                      "typeString": "mapping(bytes4 => struct LibDiamond.FacetAddressAndSelectorPosition storage ref)"
                                    }
                                  },
                                  "id": 22742,
                                  "indexExpression": {
                                    "id": 22741,
                                    "name": "selector",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22658,
                                    "src": "8475:8:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8440:44:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FacetAddressAndSelectorPosition_$22195_storage",
                                    "typeString": "struct LibDiamond.FacetAddressAndSelectorPosition storage ref"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22744,
                              "nodeType": "ExpressionStatement",
                              "src": "8433:51:69"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22650,
                            "name": "selectorIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22648,
                            "src": "7150:13:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 22651,
                              "name": "_functionSelectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22620,
                              "src": "7166:18:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 22652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7185:6:69",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "7166:25:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7150:41:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22746,
                        "initializationExpression": {
                          "assignments": [
                            22648
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 22648,
                              "mutability": "mutable",
                              "name": "selectorIndex",
                              "nameLocation": "7135:13:69",
                              "nodeType": "VariableDeclaration",
                              "scope": 22746,
                              "src": "7127:21:69",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 22647,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7127:7:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 22649,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7127:21:69"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 22655,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "7193:15:69",
                            "subExpression": {
                              "id": 22654,
                              "name": "selectorIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22648,
                              "src": "7193:13:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 22656,
                          "nodeType": "ExpressionStatement",
                          "src": "7193:15:69"
                        },
                        "nodeType": "ForStatement",
                        "src": "7122:1373:69"
                      }
                    ]
                  },
                  "id": 22748,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "removeFunctions",
                  "nameLocation": "6797:15:69",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22621,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22617,
                        "mutability": "mutable",
                        "name": "_facetAddress",
                        "nameLocation": "6821:13:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22748,
                        "src": "6813:21:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22616,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6813:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22620,
                        "mutability": "mutable",
                        "name": "_functionSelectors",
                        "nameLocation": "6852:18:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22748,
                        "src": "6836:34:69",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 22618,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "6836:6:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 22619,
                          "nodeType": "ArrayTypeName",
                          "src": "6836:8:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6812:59:69"
                  },
                  "returnParameters": {
                    "id": 22622,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6881:0:69"
                  },
                  "scope": 22819,
                  "src": "6788:1713:69",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22795,
                    "nodeType": "Block",
                    "src": "8585:656:69",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 22760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22755,
                            "name": "_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22750,
                            "src": "8599:5:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 22758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8616:1:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 22757,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8608:7:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 22756,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8608:7:69",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 22759,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8608:10:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "8599:19:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22763,
                        "nodeType": "IfStatement",
                        "src": "8595:56:69",
                        "trueBody": {
                          "id": 22762,
                          "nodeType": "Block",
                          "src": "8620:31:69",
                          "statements": [
                            {
                              "functionReturnParameters": 22754,
                              "id": 22761,
                              "nodeType": "Return",
                              "src": "8634:7:69"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 22765,
                              "name": "_init",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22750,
                              "src": "8683:5:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f6465",
                              "id": 22766,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8690:42:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_460f8f0920c649146ef02741816b1cf9ce4f02ea288ceb73adf027cefe9069a0",
                                "typeString": "literal_string \"LibDiamondCut: _init address has no code\""
                              },
                              "value": "LibDiamondCut: _init address has no code"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_460f8f0920c649146ef02741816b1cf9ce4f02ea288ceb73adf027cefe9069a0",
                                "typeString": "literal_string \"LibDiamondCut: _init address has no code\""
                              }
                            ],
                            "id": 22764,
                            "name": "enforceHasContractCode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22818,
                            "src": "8660:22:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (address,string memory) view"
                            }
                          },
                          "id": 22767,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8660:73:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22768,
                        "nodeType": "ExpressionStatement",
                        "src": "8660:73:69"
                      },
                      {
                        "assignments": [
                          22770,
                          22772
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22770,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "8749:7:69",
                            "nodeType": "VariableDeclaration",
                            "scope": 22795,
                            "src": "8744:12:69",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 22769,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "8744:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22772,
                            "mutability": "mutable",
                            "name": "error",
                            "nameLocation": "8771:5:69",
                            "nodeType": "VariableDeclaration",
                            "scope": 22795,
                            "src": "8758:18:69",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 22771,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "8758:5:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22777,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 22775,
                              "name": "_calldata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22752,
                              "src": "8799:9:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 22773,
                              "name": "_init",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22750,
                              "src": "8780:5:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 22774,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8786:12:69",
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "src": "8780:18:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) returns (bool,bytes memory)"
                            }
                          },
                          "id": 22776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8780:29:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8743:66:69"
                      },
                      {
                        "condition": {
                          "id": 22779,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "8823:8:69",
                          "subExpression": {
                            "id": 22778,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22770,
                            "src": "8824:7:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22794,
                        "nodeType": "IfStatement",
                        "src": "8819:416:69",
                        "trueBody": {
                          "id": 22793,
                          "nodeType": "Block",
                          "src": "8833:402:69",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 22780,
                                    "name": "error",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22772,
                                    "src": "8851:5:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 22781,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "8857:6:69",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "8851:12:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 22782,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8866:1:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8851:16:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 22791,
                                "nodeType": "Block",
                                "src": "9137:88:69",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 22787,
                                          "name": "_init",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22750,
                                          "src": "9193:5:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 22788,
                                          "name": "_calldata",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22752,
                                          "src": "9200:9:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 22786,
                                        "name": "InitializationFunctionReverted",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22185,
                                        "src": "9162:30:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_error_$",
                                          "typeString": "function (address,bytes memory) pure returns (error)"
                                        }
                                      },
                                      "id": 22789,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9162:48:69",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 22790,
                                    "nodeType": "RevertStatement",
                                    "src": "9155:55:69"
                                  }
                                ]
                              },
                              "id": 22792,
                              "nodeType": "IfStatement",
                              "src": "8847:378:69",
                              "trueBody": {
                                "id": 22785,
                                "nodeType": "Block",
                                "src": "8869:262:69",
                                "statements": [
                                  {
                                    "AST": {
                                      "nativeSrc": "8982:135:69",
                                      "nodeType": "YulBlock",
                                      "src": "8982:135:69",
                                      "statements": [
                                        {
                                          "nativeSrc": "9004:35:69",
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "9004:35:69",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "error",
                                                "nativeSrc": "9033:5:69",
                                                "nodeType": "YulIdentifier",
                                                "src": "9033:5:69"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mload",
                                              "nativeSrc": "9027:5:69",
                                              "nodeType": "YulIdentifier",
                                              "src": "9027:5:69"
                                            },
                                            "nativeSrc": "9027:12:69",
                                            "nodeType": "YulFunctionCall",
                                            "src": "9027:12:69"
                                          },
                                          "variables": [
                                            {
                                              "name": "returndata_size",
                                              "nativeSrc": "9008:15:69",
                                              "nodeType": "YulTypedName",
                                              "src": "9008:15:69",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nativeSrc": "9071:2:69",
                                                    "nodeType": "YulLiteral",
                                                    "src": "9071:2:69",
                                                    "type": "",
                                                    "value": "32"
                                                  },
                                                  {
                                                    "name": "error",
                                                    "nativeSrc": "9075:5:69",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9075:5:69"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nativeSrc": "9067:3:69",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9067:3:69"
                                                },
                                                "nativeSrc": "9067:14:69",
                                                "nodeType": "YulFunctionCall",
                                                "src": "9067:14:69"
                                              },
                                              {
                                                "name": "returndata_size",
                                                "nativeSrc": "9083:15:69",
                                                "nodeType": "YulIdentifier",
                                                "src": "9083:15:69"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nativeSrc": "9060:6:69",
                                              "nodeType": "YulIdentifier",
                                              "src": "9060:6:69"
                                            },
                                            "nativeSrc": "9060:39:69",
                                            "nodeType": "YulFunctionCall",
                                            "src": "9060:39:69"
                                          },
                                          "nativeSrc": "9060:39:69",
                                          "nodeType": "YulExpressionStatement",
                                          "src": "9060:39:69"
                                        }
                                      ]
                                    },
                                    "documentation": "@solidity memory-safe-assembly",
                                    "evmVersion": "paris",
                                    "externalReferences": [
                                      {
                                        "declaration": 22772,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "9033:5:69",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 22772,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "9075:5:69",
                                        "valueSize": 1
                                      }
                                    ],
                                    "id": 22784,
                                    "nodeType": "InlineAssembly",
                                    "src": "8973:144:69"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 22796,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "initializeDiamondCut",
                  "nameLocation": "8516:20:69",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22753,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22750,
                        "mutability": "mutable",
                        "name": "_init",
                        "nameLocation": "8545:5:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22796,
                        "src": "8537:13:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22749,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8537:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22752,
                        "mutability": "mutable",
                        "name": "_calldata",
                        "nameLocation": "8565:9:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22796,
                        "src": "8552:22:69",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 22751,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8552:5:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8536:39:69"
                  },
                  "returnParameters": {
                    "id": 22754,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8585:0:69"
                  },
                  "scope": 22819,
                  "src": "8507:734:69",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22817,
                    "nodeType": "Block",
                    "src": "9341:226:69",
                    "statements": [
                      {
                        "assignments": [
                          22804
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22804,
                            "mutability": "mutable",
                            "name": "contractSize",
                            "nameLocation": "9359:12:69",
                            "nodeType": "VariableDeclaration",
                            "scope": 22817,
                            "src": "9351:20:69",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22803,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9351:7:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22805,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9351:20:69"
                      },
                      {
                        "AST": {
                          "nativeSrc": "9390:62:69",
                          "nodeType": "YulBlock",
                          "src": "9390:62:69",
                          "statements": [
                            {
                              "nativeSrc": "9404:38:69",
                              "nodeType": "YulAssignment",
                              "src": "9404:38:69",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_contract",
                                    "nativeSrc": "9432:9:69",
                                    "nodeType": "YulIdentifier",
                                    "src": "9432:9:69"
                                  }
                                ],
                                "functionName": {
                                  "name": "extcodesize",
                                  "nativeSrc": "9420:11:69",
                                  "nodeType": "YulIdentifier",
                                  "src": "9420:11:69"
                                },
                                "nativeSrc": "9420:22:69",
                                "nodeType": "YulFunctionCall",
                                "src": "9420:22:69"
                              },
                              "variableNames": [
                                {
                                  "name": "contractSize",
                                  "nativeSrc": "9404:12:69",
                                  "nodeType": "YulIdentifier",
                                  "src": "9404:12:69"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 22798,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9432:9:69",
                            "valueSize": 1
                          },
                          {
                            "declaration": 22804,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9404:12:69",
                            "valueSize": 1
                          }
                        ],
                        "id": 22806,
                        "nodeType": "InlineAssembly",
                        "src": "9381:71:69"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22807,
                            "name": "contractSize",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22804,
                            "src": "9465:12:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 22808,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9481:1:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9465:17:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22816,
                        "nodeType": "IfStatement",
                        "src": "9461:100:69",
                        "trueBody": {
                          "id": 22815,
                          "nodeType": "Block",
                          "src": "9484:77:69",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 22811,
                                    "name": "_contract",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22798,
                                    "src": "9525:9:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 22812,
                                    "name": "_errorMessage",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22800,
                                    "src": "9536:13:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 22810,
                                  "name": "NoBytecodeAtAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22142,
                                  "src": "9505:19:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$_t_string_memory_ptr_$returns$_t_error_$",
                                    "typeString": "function (address,string memory) pure returns (error)"
                                  }
                                },
                                "id": 22813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9505:45:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 22814,
                              "nodeType": "RevertStatement",
                              "src": "9498:52:69"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 22818,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "enforceHasContractCode",
                  "nameLocation": "9256:22:69",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22801,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22798,
                        "mutability": "mutable",
                        "name": "_contract",
                        "nameLocation": "9287:9:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22818,
                        "src": "9279:17:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22797,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9279:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22800,
                        "mutability": "mutable",
                        "name": "_errorMessage",
                        "nameLocation": "9312:13:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 22818,
                        "src": "9298:27:69",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 22799,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "9298:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9278:48:69"
                  },
                  "returnParameters": {
                    "id": 22802,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9341:0:69"
                  },
                  "scope": 22819,
                  "src": "9247:320:69",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 22820,
              "src": "1600:7969:69",
              "usedErrors": [],
              "usedEvents": [
                22228,
                22298
              ]
            }
          ],
          "src": "40:9530:69"
        },
        "id": 69
      },
      "contracts/libraries/StructBondInit.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/StructBondInit.sol",
          "exportedSymbols": {
            "BondInitParams": [
              22863
            ]
          },
          "id": 22864,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 22821,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:70"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "BondInitParams",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 22863,
              "linearizedBaseContracts": [
                22863
              ],
              "name": "BondInitParams",
              "nameLocation": "74:14:70",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "BondInitParams.BondInit",
                  "id": 22862,
                  "members": [
                    {
                      "constant": false,
                      "id": 22823,
                      "mutability": "mutable",
                      "name": "__bondId",
                      "nameLocation": "129:8:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "121:16:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22822,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "121:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22825,
                      "mutability": "mutable",
                      "name": "__campaignMinAmount",
                      "nameLocation": "155:19:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "147:27:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22824,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "147:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22827,
                      "mutability": "mutable",
                      "name": "__campaignMaxAmount",
                      "nameLocation": "192:19:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "184:27:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22826,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "184:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22829,
                      "mutability": "mutable",
                      "name": "__campaignStartDate",
                      "nameLocation": "229:19:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "221:27:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22828,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "221:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22831,
                      "mutability": "mutable",
                      "name": "__expectedIssueDate",
                      "nameLocation": "266:19:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "258:27:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22830,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "258:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22833,
                      "mutability": "mutable",
                      "name": "__coupure",
                      "nameLocation": "303:9:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "295:17:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22832,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "295:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22835,
                      "mutability": "mutable",
                      "name": "__interestNum",
                      "nameLocation": "330:13:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "322:21:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22834,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "322:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22837,
                      "mutability": "mutable",
                      "name": "__interestDen",
                      "nameLocation": "361:13:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "353:21:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22836,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "353:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22839,
                      "mutability": "mutable",
                      "name": "__withholdingTaxNum",
                      "nameLocation": "392:19:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "384:27:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22838,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "384:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22841,
                      "mutability": "mutable",
                      "name": "__withholdingTaxDen",
                      "nameLocation": "429:19:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "421:27:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22840,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "421:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22843,
                      "mutability": "mutable",
                      "name": "__balloonRateNum",
                      "nameLocation": "466:16:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "458:24:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22842,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "458:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22845,
                      "mutability": "mutable",
                      "name": "__balloonRateDen",
                      "nameLocation": "500:16:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "492:24:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22844,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "492:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22847,
                      "mutability": "mutable",
                      "name": "__duration",
                      "nameLocation": "534:10:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "526:18:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22846,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "526:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22849,
                      "mutability": "mutable",
                      "name": "__capitalAmortizationDuration",
                      "nameLocation": "562:29:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "554:37:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22848,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "554:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22851,
                      "mutability": "mutable",
                      "name": "__gracePeriodDuration",
                      "nameLocation": "609:21:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "601:29:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22850,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "601:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22853,
                      "mutability": "mutable",
                      "name": "__maxAmountPerInvestor",
                      "nameLocation": "648:22:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "640:30:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22852,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "640:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22855,
                      "mutability": "mutable",
                      "name": "__periodicity",
                      "nameLocation": "688:13:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "680:21:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22854,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "680:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22857,
                      "mutability": "mutable",
                      "name": "__formOfFinancing",
                      "nameLocation": "719:17:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "711:25:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22856,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "711:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22859,
                      "mutability": "mutable",
                      "name": "__methodOfRepayment",
                      "nameLocation": "754:19:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "746:27:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22858,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "746:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22861,
                      "mutability": "mutable",
                      "name": "__issuer",
                      "nameLocation": "791:8:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 22862,
                      "src": "783:16:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 22860,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "783:7:70",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "BondInit",
                  "nameLocation": "102:8:70",
                  "nodeType": "StructDefinition",
                  "scope": 22863,
                  "src": "95:711:70",
                  "visibility": "public"
                }
              ],
              "scope": 22864,
              "src": "66:742:70",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "40:769:70"
        },
        "id": 70
      },
      "contracts/libraries/structClaim.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/structClaim.sol",
          "exportedSymbols": {
            "ClaimParams": [
              22879
            ]
          },
          "id": 22880,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 22865,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:71"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ClaimParams",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 22879,
              "linearizedBaseContracts": [
                22879
              ],
              "name": "ClaimParams",
              "nameLocation": "74:11:71",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "ClaimParams.Claim",
                  "id": 22878,
                  "members": [
                    {
                      "constant": false,
                      "id": 22867,
                      "mutability": "mutable",
                      "name": "claimId",
                      "nameLocation": "122:7:71",
                      "nodeType": "VariableDeclaration",
                      "scope": 22878,
                      "src": "115:14:71",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 22866,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "115:6:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22869,
                      "mutability": "mutable",
                      "name": "bondId",
                      "nameLocation": "147:6:71",
                      "nodeType": "VariableDeclaration",
                      "scope": 22878,
                      "src": "139:14:71",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22868,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "139:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22871,
                      "mutability": "mutable",
                      "name": "amount",
                      "nameLocation": "171:6:71",
                      "nodeType": "VariableDeclaration",
                      "scope": 22878,
                      "src": "163:14:71",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22870,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "163:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22873,
                      "mutability": "mutable",
                      "name": "hashLockWithdrawPayment",
                      "nameLocation": "195:23:71",
                      "nodeType": "VariableDeclaration",
                      "scope": 22878,
                      "src": "187:31:71",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 22872,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "187:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22875,
                      "mutability": "mutable",
                      "name": "withdrawPaymentTimestampEnd",
                      "nameLocation": "236:27:71",
                      "nodeType": "VariableDeclaration",
                      "scope": 22878,
                      "src": "228:35:71",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22874,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "228:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22877,
                      "mutability": "mutable",
                      "name": "beneficiary",
                      "nameLocation": "281:11:71",
                      "nodeType": "VariableDeclaration",
                      "scope": 22878,
                      "src": "273:19:71",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 22876,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "273:7:71",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Claim",
                  "nameLocation": "99:5:71",
                  "nodeType": "StructDefinition",
                  "scope": 22879,
                  "src": "92:207:71",
                  "visibility": "public"
                }
              ],
              "scope": 22880,
              "src": "66:235:71",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "40:262:71"
        },
        "id": 71
      },
      "contracts/upgradeInitializers/DiamondInit.sol": {
        "ast": {
          "absolutePath": "contracts/upgradeInitializers/DiamondInit.sol",
          "exportedSymbols": {
            "DiamondInit": [
              22949
            ],
            "IDiamondCut": [
              20517
            ],
            "IDiamondLoupe": [
              20559
            ],
            "IERC165": [
              3062
            ],
            "IERC173": [
              20582
            ],
            "LibDiamond": [
              22819
            ]
          },
          "id": 22950,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 22881,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:72"
            },
            {
              "absolutePath": "contracts/libraries/LibDiamond.sol",
              "file": "../libraries/LibDiamond.sol",
              "id": 22883,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 22950,
              "sourceUnit": 22820,
              "src": "340:57:72",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 22882,
                    "name": "LibDiamond",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22819,
                    "src": "349:10:72",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IDiamondLoupe.sol",
              "file": "../interfaces/IDiamondLoupe.sol",
              "id": 22885,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 22950,
              "sourceUnit": 20560,
              "src": "398:64:72",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 22884,
                    "name": "IDiamondLoupe",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20559,
                    "src": "407:13:72",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IDiamondCut.sol",
              "file": "../interfaces/IDiamondCut.sol",
              "id": 22887,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 22950,
              "sourceUnit": 20518,
              "src": "463:60:72",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 22886,
                    "name": "IDiamondCut",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20517,
                    "src": "472:11:72",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC173.sol",
              "file": "../interfaces/IERC173.sol",
              "id": 22889,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 22950,
              "sourceUnit": 20583,
              "src": "524:52:72",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 22888,
                    "name": "IERC173",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20582,
                    "src": "533:7:72",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/interfaces/IERC165.sol",
              "file": "@openzeppelin/contracts/interfaces/IERC165.sol",
              "id": 22891,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 22950,
              "sourceUnit": 152,
              "src": "632:73:72",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 22890,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3062,
                    "src": "641:7:72",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "DiamondInit",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 22949,
              "linearizedBaseContracts": [
                22949
              ],
              "name": "DiamondInit",
              "nameLocation": "966:11:72",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 22947,
                    "nodeType": "Block",
                    "src": "1120:836:72",
                    "statements": [
                      {
                        "assignments": [
                          22898
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22898,
                            "mutability": "mutable",
                            "name": "ds",
                            "nameLocation": "1194:2:72",
                            "nodeType": "VariableDeclaration",
                            "scope": 22947,
                            "src": "1160:36:72",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                              "typeString": "struct LibDiamond.DiamondStorage"
                            },
                            "typeName": {
                              "id": 22897,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 22896,
                                "name": "LibDiamond.DiamondStorage",
                                "nameLocations": [
                                  "1160:10:72",
                                  "1171:14:72"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 22210,
                                "src": "1160:25:72"
                              },
                              "referencedDeclaration": 22210,
                              "src": "1160:25:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                "typeString": "struct LibDiamond.DiamondStorage"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22902,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 22899,
                              "name": "LibDiamond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22819,
                              "src": "1199:10:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LibDiamond_$22819_$",
                                "typeString": "type(library LibDiamond)"
                              }
                            },
                            "id": 22900,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1210:14:72",
                            "memberName": "diamondStorage",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22222,
                            "src": "1199:25:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_DiamondStorage_$22210_storage_ptr_$",
                              "typeString": "function () pure returns (struct LibDiamond.DiamondStorage storage pointer)"
                            }
                          },
                          "id": 22901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1199:27:72",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                            "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1160:66:72"
                      },
                      {
                        "expression": {
                          "id": 22912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 22903,
                                "name": "ds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22898,
                                "src": "1236:2:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                  "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                }
                              },
                              "id": 22909,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1239:19:72",
                              "memberName": "supportedInterfaces",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22207,
                              "src": "1236:22:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$",
                                "typeString": "mapping(bytes4 => bool)"
                              }
                            },
                            "id": 22910,
                            "indexExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 22906,
                                    "name": "IERC165",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3062,
                                    "src": "1264:7:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$3062_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$3062_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  ],
                                  "id": 22905,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1259:4:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 22907,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1259:13:72",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$3062",
                                  "typeString": "type(contract IERC165)"
                                }
                              },
                              "id": 22908,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1273:11:72",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1259:25:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1236:49:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 22911,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1288:4:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1236:56:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22913,
                        "nodeType": "ExpressionStatement",
                        "src": "1236:56:72"
                      },
                      {
                        "expression": {
                          "id": 22923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 22914,
                                "name": "ds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22898,
                                "src": "1302:2:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                  "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                }
                              },
                              "id": 22920,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1305:19:72",
                              "memberName": "supportedInterfaces",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22207,
                              "src": "1302:22:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$",
                                "typeString": "mapping(bytes4 => bool)"
                              }
                            },
                            "id": 22921,
                            "indexExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 22917,
                                    "name": "IDiamondCut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20517,
                                    "src": "1330:11:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IDiamondCut_$20517_$",
                                      "typeString": "type(contract IDiamondCut)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IDiamondCut_$20517_$",
                                      "typeString": "type(contract IDiamondCut)"
                                    }
                                  ],
                                  "id": 22916,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1325:4:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 22918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1325:17:72",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IDiamondCut_$20517",
                                  "typeString": "type(contract IDiamondCut)"
                                }
                              },
                              "id": 22919,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1343:11:72",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1325:29:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1302:53:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 22922,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1358:4:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1302:60:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22924,
                        "nodeType": "ExpressionStatement",
                        "src": "1302:60:72"
                      },
                      {
                        "expression": {
                          "id": 22934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 22925,
                                "name": "ds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22898,
                                "src": "1372:2:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                  "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                }
                              },
                              "id": 22931,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1375:19:72",
                              "memberName": "supportedInterfaces",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22207,
                              "src": "1372:22:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$",
                                "typeString": "mapping(bytes4 => bool)"
                              }
                            },
                            "id": 22932,
                            "indexExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 22928,
                                    "name": "IDiamondLoupe",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20559,
                                    "src": "1400:13:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IDiamondLoupe_$20559_$",
                                      "typeString": "type(contract IDiamondLoupe)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IDiamondLoupe_$20559_$",
                                      "typeString": "type(contract IDiamondLoupe)"
                                    }
                                  ],
                                  "id": 22927,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1395:4:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 22929,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1395:19:72",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IDiamondLoupe_$20559",
                                  "typeString": "type(contract IDiamondLoupe)"
                                }
                              },
                              "id": 22930,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1415:11:72",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1395:31:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1372:55:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 22933,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1430:4:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1372:62:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22935,
                        "nodeType": "ExpressionStatement",
                        "src": "1372:62:72"
                      },
                      {
                        "expression": {
                          "id": 22945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 22936,
                                "name": "ds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22898,
                                "src": "1444:2:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DiamondStorage_$22210_storage_ptr",
                                  "typeString": "struct LibDiamond.DiamondStorage storage pointer"
                                }
                              },
                              "id": 22942,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1447:19:72",
                              "memberName": "supportedInterfaces",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22207,
                              "src": "1444:22:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$",
                                "typeString": "mapping(bytes4 => bool)"
                              }
                            },
                            "id": 22943,
                            "indexExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 22939,
                                    "name": "IERC173",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20582,
                                    "src": "1472:7:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC173_$20582_$",
                                      "typeString": "type(contract IERC173)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC173_$20582_$",
                                      "typeString": "type(contract IERC173)"
                                    }
                                  ],
                                  "id": 22938,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1467:4:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 22940,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1467:13:72",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC173_$20582",
                                  "typeString": "type(contract IERC173)"
                                }
                              },
                              "id": 22941,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1481:11:72",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1467:25:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1444:49:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 22944,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1496:4:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1444:56:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22946,
                        "nodeType": "ExpressionStatement",
                        "src": "1444:56:72"
                      }
                    ]
                  },
                  "functionSelector": "e1c7392a",
                  "id": 22948,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "init",
                  "nameLocation": "1104:4:72",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22892,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1108:2:72"
                  },
                  "returnParameters": {
                    "id": 22893,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1120:0:72"
                  },
                  "scope": 22949,
                  "src": "1095:861:72",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 22950,
              "src": "957:1001:72",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "40:1919:72"
        },
        "id": 72
      }
    },
    "contracts": {
      "@openzeppelin/contracts/access/Ownable.sol": {
        "Ownable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "OwnableInvalidOwner",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "OwnableUnauthorizedAccount",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"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. The initial owner is set to the address provided by the deployer. 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.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
        "IERC1155Errors": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ERC1155InsufficientBalance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "approver",
                  "type": "address"
                }
              ],
              "name": "ERC1155InvalidApprover",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "idsLength",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "valuesLength",
                  "type": "uint256"
                }
              ],
              "name": "ERC1155InvalidArrayLength",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "ERC1155InvalidOperator",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "ERC1155InvalidReceiver",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "ERC1155InvalidSender",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "ERC1155MissingApprovalForAll",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]}},\"version\":1}"
        },
        "IERC20Errors": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "allowance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientAllowance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientBalance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "approver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidApprover",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidReceiver",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSender",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSpender",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]}},\"version\":1}"
        },
        "IERC721Errors": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "ERC721IncorrectOwner",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ERC721InsufficientApproval",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "approver",
                  "type": "address"
                }
              ],
              "name": "ERC721InvalidApprover",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "ERC721InvalidOperator",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "ERC721InvalidOwner",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "ERC721InvalidReceiver",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "ERC721InvalidSender",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ERC721NonexistentToken",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155.sol": {
        "IERC1155": {
          "abi": [
            {
              "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": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "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": "value",
                  "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": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "isApprovedForAll(address,address)": "e985e9c5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"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\":\"value\",\"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\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC-1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[ERC].\",\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"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}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the value of tokens of token type `id` owned by `account`.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. WARNING: This function can potentially allow a reentrancy attack when transferring tokens to an untrusted contract, when invoking {IERC1155Receiver-onERC1155BatchReceived} on the receiver. Ensure to follow the checks-effects-interactions pattern and consider employing reentrancy guards when interacting with untrusted contracts. Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments. Requirements: - `ids` and `values` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers a `value` amount of tokens of type `id` from `from` to `to`. WARNING: This function can potentially allow a reentrancy attack when transferring tokens to an untrusted contract, when invoking {IERC1155Receiver-onERC1155Received} on the receiver. Ensure to follow the checks-effects-interactions pattern and consider employing reentrancy guards when interacting with untrusted contracts. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `value` amount. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the zero address.\"},\"supportsInterface(bytes4)\":{\"details\":\"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[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":\"IERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0xf189f9b417fe1931e1ab706838aff1128528694a9fcdb5ff7665197f2ca57d09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ff0143c836c8c9f85d13708733c09e21251395847fccfb518bf3b556726a840\",\"dweb:/ipfs/QmP69sjjrQrhYAsvCSSB69Bx66SiUPdQUqdzMYnf4wANHm\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol": {
        "IERC1155Receiver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface that must be implemented by smart contracts in order to receive ERC-1155 token transfers.\",\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC-1155 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).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC-1155 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).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}},\"supportsInterface(bytes4)\":{\"details\":\"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[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":\"IERC1155Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8\",\"dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
        "ERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "allowance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientAllowance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientBalance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "approver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidApprover",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidReceiver",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSender",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSpender",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "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": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "IERC20": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "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": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol": {
        "ERC20Burnable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "allowance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientAllowance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientBalance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "approver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidApprover",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidReceiver",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSender",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSpender",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "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": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "burn(uint256)": "42966c68",
              "burnFrom(address,uint256)": "79cc6790",
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {ERC20} that allows token holders to destroy both their own tokens and those that they have an allowance for, in a way that can be recognized off-chain (via event analysis).\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"burn(uint256)\":{\"details\":\"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol\":\"ERC20Burnable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol\":{\"keccak256\":\"0x2659248df25e34000ed214b3dc8da2160bc39874c992b477d9e2b1b3283dc073\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c345af1b0e7ea28d1216d6a04ab28f5534a5229b9edf9ca3cd0e84950ae58d26\",\"dweb:/ipfs/QmY63jtSrYpLRe8Gj1ep2vMDCKxGNNG3hnNVKBVnrs2nmA\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol": {
        "ERC20Pausable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "allowance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientAllowance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientBalance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "approver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidApprover",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidReceiver",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSender",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSpender",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "EnforcedPause",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ExpectedPause",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "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": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Unpaused",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "paused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "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": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "paused()": "5c975abb",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"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\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC-20 token with pausable token transfers, minting and burning. Useful for scenarios such as preventing trades until the end of an evaluation period, or having an emergency switch for freezing all token transfers in the event of a large bug. IMPORTANT: This contract does not include public pause and unpause functions. In addition to inheriting this contract, you must define both functions, invoking the {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate access control, e.g. using {AccessControl} or {Ownable}. Not doing so will make the contract pause mechanism of the contract unreachable, and thus unusable.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol\":\"ERC20Pausable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol\":{\"keccak256\":\"0x756aee61d83960d324973de3a64920a02b480efe662b611fb05ea506d844aa55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dfb71ab2f5fcc530226a25bba4d808f4d22a7f383cae4a3be3629ec057b276c\",\"dweb:/ipfs/QmRzyetUjbr9Gx1pcXYSsE5rz4XypfEbZgmBvZKUNUJQLR\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdb484371dfbb848cb6f5d70464e9ac9b2900e4164ead76bbce4fef0b44bcc68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9d6f6f6600a2bec622f699081b58350873b5e63ce05464d17d674a290bb8a7c\",\"dweb:/ipfs/QmQKVzSQY1PM3Bid4QhgVVZyx6B4Jx7XgaQzLKHj38vJz8\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
        "IERC20Metadata": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "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": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/Address.sol": {
        "Address": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                }
              ],
              "name": "AddressEmptyCode",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212201f98aa213073847cfdf46f4886b29bb00675a97cd9e16da77d60c69caa9ae7fe64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1F SWAP9 0xAA 0x21 ADDRESS PUSH20 0x847CFDF46F4886B29BB00675A97CD9E16DA77D60 0xC6 SWAP13 0xAA SWAP11 0xE7 INVALID PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "233:5762:10:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "600080fdfea26469706673582212201f98aa213073847cfdf46f4886b29bb00675a97cd9e16da77d60c69caa9ae7fe64736f6c634300081b0033",
              "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1F SWAP9 0xAA 0x21 ADDRESS PUSH20 0x847CFDF46F4886B29BB00675A97CD9E16DA77D60 0xC6 SWAP13 0xAA SWAP11 0xE7 INVALID PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "233:5762:10:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "Context": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"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.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/Errors.sol": {
        "Errors": {
          "abi": [
            {
              "inputs": [],
              "name": "FailedCall",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "FailedDeployment",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "InsufficientBalance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "MissingPrecompile",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212206563c7e9308ca6c3ee5386549883347e477d0c27e5dce2b23d1a78f812104d0564736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH6 0x63C7E9308CA6 0xC3 0xEE MSTORE8 DUP7 SLOAD SWAP9 DUP4 CALLVALUE PUSH31 0x477D0C27E5DCE2B23D1A78F812104D0564736F6C634300081B003300000000 ",
              "sourceMap": "411:484:12:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "600080fdfea26469706673582212206563c7e9308ca6c3ee5386549883347e477d0c27e5dce2b23d1a78f812104d0564736f6c634300081b0033",
              "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH6 0x63C7E9308CA6 0xC3 0xEE MSTORE8 DUP7 SLOAD SWAP9 DUP4 CALLVALUE PUSH31 0x477D0C27E5DCE2B23D1A78F812104D0564736F6C634300081B003300000000 ",
              "sourceMap": "411:484:12:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"MissingPrecompile\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of common custom errors used in multiple contracts IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. It is recommended to avoid relying on the error API for critical functionality. _Available since v5.1._\",\"errors\":{\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"MissingPrecompile(address)\":[{\"details\":\"A necessary precompile is missing.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Errors.sol\":\"Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/Panic.sol": {
        "Panic": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212207b4b8bb00a1f9e1d9c1a4133dec39ef7bc5a29cd8583596d9b0aee0f06634c4764736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH28 0x4B8BB00A1F9E1D9C1A4133DEC39EF7BC5A29CD8583596D9B0AEE0F06 PUSH4 0x4C476473 PUSH16 0x6C634300081B00330000000000000000 ",
              "sourceMap": "657:1315:13:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "600080fdfea26469706673582212207b4b8bb00a1f9e1d9c1a4133dec39ef7bc5a29cd8583596d9b0aee0f06634c4764736f6c634300081b0033",
              "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH28 0x4B8BB00A1F9E1D9C1A4133DEC39EF7BC5A29CD8583596D9B0AEE0F06 PUSH4 0x4C476473 PUSH16 0x6C634300081B00330000000000000000 ",
              "sourceMap": "657:1315:13:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Helper library for emitting standardized panic codes. ```solidity contract Example {      using Panic for uint256;      // Use any of the declared internal constants      function foo() { Panic.GENERIC.panic(); }      // Alternatively      function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ARRAY_OUT_OF_BOUNDS\":{\"details\":\"array out of bounds access\"},\"ASSERT\":{\"details\":\"used by the assert() builtin\"},\"DIVISION_BY_ZERO\":{\"details\":\"division or modulo by zero\"},\"EMPTY_ARRAY_POP\":{\"details\":\"empty array pop\"},\"ENUM_CONVERSION_ERROR\":{\"details\":\"enum conversion error\"},\"GENERIC\":{\"details\":\"generic / unspecified error\"},\"INVALID_INTERNAL_FUNCTION\":{\"details\":\"calling invalid internal function\"},\"RESOURCE_ERROR\":{\"details\":\"resource error (too large allocation or too large array)\"},\"STORAGE_ENCODING_ERROR\":{\"details\":\"invalid encoding in storage\"},\"UNDER_OVERFLOW\":{\"details\":\"arithmetic underflow or overflow\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Panic.sol\":\"Panic\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/Pausable.sol": {
        "Pausable": {
          "abi": [
            {
              "inputs": [],
              "name": "EnforcedPause",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ExpectedPause",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Paused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Unpaused",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "paused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "paused()": "5c975abb"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"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.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}]},\"events\":{\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Pausable.sol\":\"Pausable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdb484371dfbb848cb6f5d70464e9ac9b2900e4164ead76bbce4fef0b44bcc68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9d6f6f6600a2bec622f699081b58350873b5e63ce05464d17d674a290bb8a7c\",\"dweb:/ipfs/QmQKVzSQY1PM3Bid4QhgVVZyx6B4Jx7XgaQzLKHj38vJz8\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/Strings.sol": {
        "Strings": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "length",
                  "type": "uint256"
                }
              ],
              "name": "StringsInsufficientHexLength",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "StringsInvalidAddressFormat",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "StringsInvalidChar",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122005673aa6f15470a2159b2ef99c870bd4df7d4bd8672e5446f2543043f282802d64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SDIV PUSH8 0x3AA6F15470A2159B 0x2E 0xF9 SWAP13 DUP8 SIGNEXTEND 0xD4 0xDF PUSH30 0x4BD8672E5446F2543043F282802D64736F6C634300081B00330000000000 ",
              "sourceMap": "297:18982:15:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "600080fdfea264697066735822122005673aa6f15470a2159b2ef99c870bd4df7d4bd8672e5446f2543043f282802d64736f6c634300081b0033",
              "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SDIV PUSH8 0x3AA6F15470A2159B 0x2E 0xF9 SWAP13 DUP8 SIGNEXTEND 0xD4 0xDF PUSH30 0x4BD8672E5446F2543043F282802D64736F6C634300081B00330000000000 ",
              "sourceMap": "297:18982:15:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StringsInvalidAddressFormat\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StringsInvalidChar\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}],\"StringsInvalidAddressFormat()\":[{\"details\":\"The string being parsed is not a properly formatted address.\"}],\"StringsInvalidChar()\":[{\"details\":\"The string being parsed contains characters that are not in scope of the given base.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/introspection/ERC165.sol": {
        "ERC165": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 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); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"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[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/introspection/IERC165.sol": {
        "IERC165": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"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[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/math/Math.sol": {
        "Math": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212204f5783d820c73db42cae29f343fe21c2520c76c3d136ed329c65542ae0a2d6d864736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4F JUMPI DUP4 0xD8 KECCAK256 0xC7 RETURNDATASIZE 0xB4 0x2C 0xAE 0x29 RETURN NUMBER INVALID 0x21 0xC2 MSTORE 0xC PUSH23 0xC3D136ED329C65542AE0A2D6D864736F6C634300081B00 CALLER ",
              "sourceMap": "281:31863:18:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "600080fdfea26469706673582212204f5783d820c73db42cae29f343fe21c2520c76c3d136ed329c65542ae0a2d6d864736f6c634300081b0033",
              "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4F JUMPI DUP4 0xD8 KECCAK256 0xC7 RETURNDATASIZE 0xB4 0x2C 0xAE 0x29 RETURN NUMBER INVALID 0x21 0xC2 MSTORE 0xC PUSH23 0xC3D136ED329C65542AE0A2D6D864736F6C634300081B00 CALLER ",
              "sourceMap": "281:31863:18:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/math/SafeCast.sol": {
        "SafeCast": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "bits",
                  "type": "uint8"
                },
                {
                  "internalType": "int256",
                  "name": "value",
                  "type": "int256"
                }
              ],
              "name": "SafeCastOverflowedIntDowncast",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "int256",
                  "name": "value",
                  "type": "int256"
                }
              ],
              "name": "SafeCastOverflowedIntToUint",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "bits",
                  "type": "uint8"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "SafeCastOverflowedUintDowncast",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "SafeCastOverflowedUintToInt",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220309fd72e56408bb418e8136ede050df67818feb36adae86e415e897eaf959e7a64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDRESS SWAP16 0xD7 0x2E JUMP BLOCKHASH DUP12 0xB4 XOR 0xE8 SGT PUSH15 0xDE050DF67818FEB36ADAE86E415E89 PUSH31 0xAF959E7A64736F6C634300081B003300000000000000000000000000000000 ",
              "sourceMap": "769:34173:19:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "600080fdfea2646970667358221220309fd72e56408bb418e8136ede050df67818feb36adae86e415e897eaf959e7a64736f6c634300081b0033",
              "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDRESS SWAP16 0xD7 0x2E JUMP BLOCKHASH DUP12 0xB4 XOR 0xE8 SGT PUSH15 0xDE050DF67818FEB36ADAE86E415E89 PUSH31 0xAF959E7A64736F6C634300081B003300000000000000000000000000000000 ",
              "sourceMap": "769:34173:19:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"errors\":{\"SafeCastOverflowedIntDowncast(uint8,int256)\":[{\"details\":\"Value doesn't fit in an int of `bits` size.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/math/SignedMath.sol": {
        "SignedMath": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220882216d4899c6b949cbd5240512d4c90c2bede7fa7fc3aa3867ed7e6eb7a2cfb64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP9 0x22 AND 0xD4 DUP10 SWAP13 PUSH12 0x949CBD5240512D4C90C2BEDE PUSH32 0xA7FC3AA3867ED7E6EB7A2CFB64736F6C634300081B0033000000000000000000 ",
              "sourceMap": "258:2354:20:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "600080fdfea2646970667358221220882216d4899c6b949cbd5240512d4c90c2bede7fa7fc3aa3867ed7e6eb7a2cfb64736f6c634300081b0033",
              "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP9 0x22 AND 0xD4 DUP10 SWAP13 PUSH12 0x949CBD5240512D4C90C2BEDE PUSH32 0xA7FC3AA3867ED7E6EB7A2CFB64736F6C634300081B0033000000000000000000 ",
              "sourceMap": "258:2354:20:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}"
        }
      },
      "contracts/Diamond.sol": {
        "Diamond": {
          "abi": [
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "facetAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "enum IDiamond.FacetCutAction",
                      "name": "action",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes4[]",
                      "name": "functionSelectors",
                      "type": "bytes4[]"
                    }
                  ],
                  "internalType": "struct IDiamond.FacetCut[]",
                  "name": "_diamondCut",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "owner",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "init",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "initCalldata",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct DiamondArgs",
                  "name": "_args",
                  "type": "tuple"
                }
              ],
              "stateMutability": "payable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_selector",
                  "type": "bytes4"
                }
              ],
              "name": "CannotAddFunctionToDiamondThatAlreadyExists",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4[]",
                  "name": "_selectors",
                  "type": "bytes4[]"
                }
              ],
              "name": "CannotAddSelectorsToZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_selector",
                  "type": "bytes4"
                }
              ],
              "name": "CannotRemoveFunctionThatDoesNotExist",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_selector",
                  "type": "bytes4"
                }
              ],
              "name": "CannotRemoveImmutableFunction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_selector",
                  "type": "bytes4"
                }
              ],
              "name": "CannotReplaceFunctionThatDoesNotExists",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_selector",
                  "type": "bytes4"
                }
              ],
              "name": "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4[]",
                  "name": "_selectors",
                  "type": "bytes4[]"
                }
              ],
              "name": "CannotReplaceFunctionsFromFacetWithZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_selector",
                  "type": "bytes4"
                }
              ],
              "name": "CannotReplaceImmutableFunction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_functionSelector",
                  "type": "bytes4"
                }
              ],
              "name": "FunctionNotFound",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "_action",
                  "type": "uint8"
                }
              ],
              "name": "IncorrectFacetCutAction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_initializationContractAddress",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_calldata",
                  "type": "bytes"
                }
              ],
              "name": "InitializationFunctionReverted",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_contractAddress",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "_message",
                  "type": "string"
                }
              ],
              "name": "NoBytecodeAtAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_facetAddress",
                  "type": "address"
                }
              ],
              "name": "NoSelectorsProvidedForFacetForCut",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_facetAddress",
                  "type": "address"
                }
              ],
              "name": "RemoveFacetAddressMustBeZeroAddress",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "facetAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "enum IDiamond.FacetCutAction",
                      "name": "action",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes4[]",
                      "name": "functionSelectors",
                      "type": "bytes4[]"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct IDiamond.FacetCut[]",
                  "name": "_diamondCut",
                  "type": "tuple[]"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "_init",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "_calldata",
                  "type": "bytes"
                }
              ],
              "name": "DiamondCut",
              "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"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "facetAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "enum IDiamond.FacetCutAction",
                      "name": "action",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes4[]",
                      "name": "functionSelectors",
                      "type": "bytes4[]"
                    }
                  ],
                  "internalType": "struct IDiamond.FacetCut[]",
                  "name": "_diamondCut",
                  "type": "tuple[]"
                },
                {
                  "internalType": "address",
                  "name": "_init",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_calldata",
                  "type": "bytes"
                }
              ],
              "name": "diamondCut",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "abi_decode_address_fromMemory": {
                  "entryPoint": 2524,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_array_bytes4_dyn": {
                  "entryPoint": 2648,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_bytes": {
                  "entryPoint": 2710,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 2464,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_memory_8002": {
                  "entryPoint": 2402,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "allocate_memory_8005": {
                  "entryPoint": 2433,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "array_allocation_size_array_struct_FacetCut_dyn": {
                  "entryPoint": 2501,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_bytes": {
                  "entryPoint": 2544,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "copy_memory_to_memory_with_cleanup": {
                  "entryPoint": 2571,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "fun_enforceHasContractCode": {
                  "entryPoint": 3060,
                  "id": 22818,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_initializeDiamondCut": {
                  "entryPoint": 2838,
                  "id": 22796,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "memory_array_index_access_struct_FacetCut_dyn": {
                  "entryPoint": 2606,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "storage_array_index_access_bytes4_dyn": {
                  "entryPoint": 2747,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 2
                },
                "update_storage_value_bytes4_to_bytes4": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "update_storage_value_offsett_uint16_to_uint16": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405261230480380380610014816109a0565b9283398101906040818303126108875780516001600160401b0381116108875781019180601f8401121561088757825191610056610051846109c5565b6109a0565b93602085858152016020819560051b830101918483116108875760208101915b83831061088c57505050506020810151906001600160401b0382116108875701606081830312610887576100a8610962565b6100b1826109dc565b81526100bf602083016109dc565b60208201908152604083015190926001600160401b038211610887570183601f820112156108875780516100f5610051826109f0565b94818652602082840101116108875761011691602080879897019101610a0b565b60408101849052517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f80546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3516001600160a01b0316926000925b81518410156107a45760406101a88584610a2e565b510151916001600160a01b036101be8683610a2e565b5151169383511561078f5760206101d58784610a2e565b5101516003811015610779576000816103f757505084156103d15761ffff6000805160206122e483398151915254169261024f61021260606109a0565b602481527f4c69624469616d6f6e644375743a2041646420666163657420686173206e6f20602082015263636f646560e01b604082015287610bf4565b6000935b85518510156103b9576001600160e01b031961026f8688610a2e565b511660008181526000805160206122c483398151915260205260409020546001600160a01b03166103a5576103056102a5610981565b89815261ffff93909316602080850182815260008581526000805160206122c483398151915290925260409091209451855491516001600160b01b03199092166001600160a01b03919091161760a09190911b61ffff60a01b1617909355565b6000805160206122e483398151915254906801000000000000000082101561038f5761034782600161036494016000805160206122e483398151915255610abb565b90919063ffffffff83549160031b9260e01c831b921b1916179055565b61ffff81146103795760019485019401610253565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b63ebbf5d0760e01b60005260045260246000fd5b5094509490959250600191505b019291939093610193565b6040516302b8da0760e21b815260206004820152806103f36024820187610a58565b0390fd5b5094969460018103610563575086156105415791939161045b61041a60606109a0565b602881527f4c69624469616d6f6e644375743a205265706c61636520666163657420686173602082015267206e6f20636f646560c01b604082015288610bf4565b6001600160a01b0387169460005b8551811015610530576001600160e01b03196104858288610a2e565b511660008181526000805160206122c483398151915260205260409020546001600160a01b031630811461051b578a811461050657156104f25760009081526000805160206122c48339815191526020526040902080546001600160a01b03191688179055600101610469565b637479f93960e01b60005260045260246000fd5b50631ac6ce8d60e11b60005260045260246000fd5b50632901806d60e11b60005260045260246000fd5b5094509490955060019192506103c6565b60405163cd98a96f60e01b815260206004820152806103f36024820187610a58565b9394939192909160006002820361075f5750506000805160206122e483398151915254968061074b575060005b855181101561073d576001600160e01b03196105ac8288610a2e565b511690816000526000805160206122c48339815191526020526040600020986105d3610981565b99549960018060a01b038b1680825261ffff602083019c60a01c168c521561072857516001600160a01b031630146107135780156103795760001901988961ffff8251160361069d575b506000805160206122e483398151915254918215610687576001926000190161064581610abb565b63ffffffff82549160031b1b191690556000805160206122e4833981519152556000526000805160206122c48339815191526020526000604081205501610590565b634e487b7160e01b600052603160045260246000fd5b61070d9061ffff6106ad8c610abb565b90549060031b1c60e01b916106c88361034784845116610abb565b516001600160e01b031990921660009081526000805160206122c483398151915260205260409020805461ffff60a01b19169190921660a01b61ffff60a01b16179055565b3861061d565b82630df5fd6160e31b60005260045260246000fd5b83637a08a22d60e01b60005260045260246000fd5b5093509360019195506103c6565b63d091bc8160e01b60005260045260246000fd5b60ff925050633ff4d20f60e11b6000521660045260246000fd5b634e487b7160e01b600052602160045260246000fd5b8463e767f91f60e01b60005260045260246000fd5b848360405193606085019060608652518091526080850160808260051b870101929160005b8181106108275761081887877f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738b806108108b856020840152828103604084015286610a96565b0390a1610b16565b6040516116909081610c348239f35b878503607f19018352835180516001600160a01b0316865260208101519495939492939192919060038310156107795761087b82606060406020959460019787809701520151918160408201520190610a58565b960194019291016107c9565b600080fd5b82516001600160401b0381116108875782016060818803601f190112610887576108b4610962565b906108c1602082016109dc565b82526040810151600381101561088757602083015260608101516001600160401b03811161088757602091010187601f82011215610887578051610907610051826109c5565b9160208084848152019260051b820101908a821161088757602001915b818310610941575050506040820152815260209283019201610076565b82516001600160e01b03198116810361088757815260209283019201610924565b60405190606082016001600160401b0381118382101761038f57604052565b60408051919082016001600160401b0381118382101761038f57604052565b6040519190601f01601f191682016001600160401b0381118382101761038f57604052565b6001600160401b03811161038f5760051b60200190565b51906001600160a01b038216820361088757565b6001600160401b03811161038f57601f01601f191660200190565b60005b838110610a1e5750506000910152565b8181015183820152602001610a0e565b8051821015610a425760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b906020808351928381520192019060005b818110610a765750505090565b82516001600160e01b031916845260209384019390920191600101610a69565b90602091610aaf81518092818552858086019101610a0b565b601f01601f1916010190565b906000805160206122e483398151915254821015610a42576000805160206122e4833981519152600052600382901c7fc0d727610ea16241eff4447d08bb1b4595f7d2ec4515282437a13b7d0df4b922019160021b601c1690565b6001600160a01b03811691908215610bef5760008091610b7a610b3960606109a0565b602881527f4c69624469616d6f6e644375743a205f696e6974206164647265737320686173602082015267206e6f20636f646560c01b604082015282610bf4565b83519060208501905af4913d15610be7573d92610b99610051856109f0565b9384523d6000602086013e5b15610baf57505050565b825115610bbe57825160208401fd5b6103f360405192839263192105d760e01b84526004840152604060248401526044830190610a96565b606092610ba5565b505050565b803b15610bff575050565b6040805163919834b960e01b81526001600160a01b03909216600483015260248201529081906103f3906044830190610a9656fe60806040526004361015610015575b3661038157005b60003560e01c631f931c1c0361000e57346100e35760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e35760043567ffffffffffffffff81116100e357366023820112156100e3578060040135610087610082826102ae565b61026a565b916024602084848152019260051b820101903682116100e35760248101925b8284106100e857846100b66102c6565b906044359167ffffffffffffffff83116100e3576100db6100e1933690600401610344565b9161066d565b005b600080fd5b833567ffffffffffffffff81116100e357820160607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82360301126100e35761012f610225565b9061013c602482016102e9565b8252604481013560038110156100e3576020830152606481013567ffffffffffffffff81116100e357602491010136601f820112156100e3578035610183610082826102ae565b9160208084848152019260051b820101903682116100e357602001915b8183106101bd5750505060408201528152602093840193016100a6565b82357fffffffff00000000000000000000000000000000000000000000000000000000811681036100e3578152602092830192016101a0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051906060820182811067ffffffffffffffff82111761024557604052565b6101f6565b604051906040820182811067ffffffffffffffff82111761024557604052565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761024557604052565b67ffffffffffffffff81116102455760051b60200190565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100e357565b359073ffffffffffffffffffffffffffffffffffffffff821682036100e357565b67ffffffffffffffff811161024557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f820112156100e35780359061035e6100828361030a565b92828452602083830101116100e357816000926020809301838601378301015290565b7fffffffff0000000000000000000000000000000000000000000000000000000060003516806000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205273ffffffffffffffffffffffffffffffffffffffff604060002054169081156104125760008083368280378136915af43d6000803e1561040d573d6000f35b3d6000fd5b7f5416eb980000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156104825760209160051b010190565b61043f565b6003111561049157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b5160038110156104915790565b919082519283825260005b8481106105175750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b806020809284010151828286010152016104d8565b9392909193606081016060825283518091526080820190602060808260051b8501019501916000905b82821061059757505050506105876105949495602083019073ffffffffffffffffffffffffffffffffffffffff169052565b60408184039101526104cd565b90565b909192957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808582030182528651606082019073ffffffffffffffffffffffffffffffffffffffff8151168352602081015190600382101561049157604060809160209384870152015193606060408201528451809452019201906000905b80821061063357505050602080600192980192019201909291610555565b9091926020806001927fffffffff000000000000000000000000000000000000000000000000000000008751168152019401920190610615565b92909160005b84518110156107b8576040610688828761046e565b5101516106b3610698838861046e565b515173ffffffffffffffffffffffffffffffffffffffff1690565b815115610775576106d060206106c9858a61046e565b51016104c0565b6106d981610487565b806106f25750600192916106ec916112c1565b01610673565b6106fb81610487565b6001810361071657506001929161071191610e7a565b6106ec565b61071f81610487565b6002810361073557506001929161071191610a06565b8061074261077192610487565b7f7fe9a41e0000000000000000000000000000000000000000000000000000000060005260ff16600452602490565b6000fd5b7fe767f91f0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b509092917f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673816107fa946107f2856040519384938461052c565b0390a161150c565b565b9061ffff61080861024a565b925473ffffffffffffffffffffffffffffffffffffffff8116845260a01c166020830152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8015610888577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b61082e565b907fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d54821015610482577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d600052600382901c7fc0d727610ea16241eff4447d08bb1b4595f7d2ec4515282437a13b7d0df4b922019160021b601c1690565b919091805483101561048257600052601c60206000208360031c019260021b1690565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d5480156109d7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016109a3817fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d61090c565b63ffffffff82549160031b1b191690557fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d55565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b91907fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d549273ffffffffffffffffffffffffffffffffffffffff8116610d7e575060005b8151811015610d7857610a86610a60828461046e565b517fffffffff000000000000000000000000000000000000000000000000000000001690565b610ae3610ade827fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b6107fc565b94610b1e610b05875173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b15610d285730610b45610b05885173ffffffffffffffffffffffffffffffffffffffff1690565b14610cd857610bd1600193926020610b5e60009461085d565b98018861ffff610b70835161ffff1690565b1603610bd8575b50610b8061092f565b7fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b5501610a4a565b610cd290610c8b610c39610bfb610bee8d61088d565b90549060031b1c60e01b90565b92610c3184610c14610c0f845161ffff1690565b61088d565b90919063ffffffff83549160031b9260e01c831b921b1916179055565b5161ffff1690565b917fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b907fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff000000000000000000000000000000000000000083549260a01b169116179055565b38610b77565b7f6fafeb08000000000000000000000000000000000000000000000000000000006000527fffffffff00000000000000000000000000000000000000000000000000000000821660045260246000fd5b7f7a08a22d000000000000000000000000000000000000000000000000000000006000527fffffffff00000000000000000000000000000000000000000000000000000000821660045260246000fd5b50509050565b7fd091bc810000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b602060408183019282815284518094520192019060005b818110610de55750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101610dd8565b610e27606061026a565b90602882527f206e6f20636f64650000000000000000000000000000000000000000000000006040837f4c69624469616d6f6e644375743a205265706c6163652066616365742068617360208201520152565b73ffffffffffffffffffffffffffffffffffffffff8116929183156110e357610eaa610ea4610e1d565b836115f4565b60005b81518110156110dc57610ec3610a60828461046e565b610f38610b05610f1e837fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b30811461108c5786811461103c5715610fed5790610fe784610fa76001947fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b01610ead565b7f7479f939000000000000000000000000000000000000000000000000000000006000527fffffffff000000000000000000000000000000000000000000000000000000001660045260246000fd5b7f358d9d1a000000000000000000000000000000000000000000000000000000006000527fffffffff00000000000000000000000000000000000000000000000000000000821660045260246000fd5b7f520300da000000000000000000000000000000000000000000000000000000006000527fffffffff00000000000000000000000000000000000000000000000000000000821660045260246000fd5b5050509050565b611119906040519182917fcd98a96f00000000000000000000000000000000000000000000000000000000835260048301610dc1565b0390fd5b611127606061026a565b90602482527f636f6465000000000000000000000000000000000000000000000000000000006040837f4c69624469616d6f6e644375743a2041646420666163657420686173206e6f2060208201520152565b61ffff60206107fa936111df73ffffffffffffffffffffffffffffffffffffffff825116859073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b015182547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff16911660a01b75ffff000000000000000000000000000000000000000016179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d54906801000000000000000082101561024557610c148260016107fa94017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d557fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d61090c565b61ffff1661ffff81146108885760010190565b919073ffffffffffffffffffffffffffffffffffffffff831615611483577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d5461ffff169061131761131161111d565b856115f4565b6000915b81518310156110dc57611331610a60848461046e565b61138c610b05610f1e837fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b6114345760019161142761142c926114226113a561024a565b73ffffffffffffffffffffffffffffffffffffffff8b16815261ffff8516602082015261141d837fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b61117a565b611227565b6112ae565b92019161131b565b7febbf5d07000000000000000000000000000000000000000000000000000000006000527fffffffff000000000000000000000000000000000000000000000000000000001660045260246000fd5b611119906040519182917f0ae3681c00000000000000000000000000000000000000000000000000000000835260048301610dc1565b3d156114da573d906114cd6100828361030a565b9182523d6000602084013e565b606090565b60409073ffffffffffffffffffffffffffffffffffffffff610594949316815281602082015201906104cd565b9073ffffffffffffffffffffffffffffffffffffffff8216156115f05761158c611536606061026a565b602881527f4c69624469616d6f6e644375743a205f696e697420616464726573732068617360208201527f206e6f20636f64650000000000000000000000000000000000000000000000006040820152836115f4565b600080825160208401855af4916115a16114b9565b92156115ac57505050565b8251156115bb57825160208401fd5b6111196040519283927f192105d7000000000000000000000000000000000000000000000000000000008452600484016114df565b5050565b90813b15611600575050565b9061111973ffffffffffffffffffffffffffffffffffffffff926040519384937f919834b90000000000000000000000000000000000000000000000000000000085521660048401526040602484015260448301906104cd56fea26469706673582212208378868e4c428a8cabe8bd5cd37d0a44eb04e7393b1aeb0f03c4f93dd6dc171464736f6c634300081b0033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131cc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0x2304 DUP1 CODESIZE SUB DUP1 PUSH2 0x14 DUP2 PUSH2 0x9A0 JUMP JUMPDEST SWAP3 DUP4 CODECOPY DUP2 ADD SWAP1 PUSH1 0x40 DUP2 DUP4 SUB SLT PUSH2 0x887 JUMPI DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x887 JUMPI DUP2 ADD SWAP2 DUP1 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x887 JUMPI DUP3 MLOAD SWAP2 PUSH2 0x56 PUSH2 0x51 DUP5 PUSH2 0x9C5 JUMP JUMPDEST PUSH2 0x9A0 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP6 DUP6 DUP2 MSTORE ADD PUSH1 0x20 DUP2 SWAP6 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 DUP5 DUP4 GT PUSH2 0x887 JUMPI PUSH1 0x20 DUP2 ADD SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x88C JUMPI POP POP POP POP PUSH1 0x20 DUP2 ADD MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x887 JUMPI ADD PUSH1 0x60 DUP2 DUP4 SUB SLT PUSH2 0x887 JUMPI PUSH2 0xA8 PUSH2 0x962 JUMP JUMPDEST PUSH2 0xB1 DUP3 PUSH2 0x9DC JUMP JUMPDEST DUP2 MSTORE PUSH2 0xBF PUSH1 0x20 DUP4 ADD PUSH2 0x9DC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x40 DUP4 ADD MLOAD SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x887 JUMPI ADD DUP4 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x887 JUMPI DUP1 MLOAD PUSH2 0xF5 PUSH2 0x51 DUP3 PUSH2 0x9F0 JUMP JUMPDEST SWAP5 DUP2 DUP7 MSTORE PUSH1 0x20 DUP3 DUP5 ADD ADD GT PUSH2 0x887 JUMPI PUSH2 0x116 SWAP2 PUSH1 0x20 DUP1 DUP8 SWAP9 SWAP8 ADD SWAP2 ADD PUSH2 0xA0B JUMP JUMPDEST PUSH1 0x40 DUP2 ADD DUP5 SWAP1 MSTORE MLOAD PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131F DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE SWAP1 SWAP2 AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x0 DUP1 LOG3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 PUSH1 0x0 SWAP3 JUMPDEST DUP2 MLOAD DUP5 LT ISZERO PUSH2 0x7A4 JUMPI PUSH1 0x40 PUSH2 0x1A8 DUP6 DUP5 PUSH2 0xA2E JUMP JUMPDEST MLOAD ADD MLOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1BE DUP7 DUP4 PUSH2 0xA2E JUMP JUMPDEST MLOAD MLOAD AND SWAP4 DUP4 MLOAD ISZERO PUSH2 0x78F JUMPI PUSH1 0x20 PUSH2 0x1D5 DUP8 DUP5 PUSH2 0xA2E JUMP JUMPDEST MLOAD ADD MLOAD PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x779 JUMPI PUSH1 0x0 DUP2 PUSH2 0x3F7 JUMPI POP POP DUP5 ISZERO PUSH2 0x3D1 JUMPI PUSH2 0xFFFF PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x22E4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD AND SWAP3 PUSH2 0x24F PUSH2 0x212 PUSH1 0x60 PUSH2 0x9A0 JUMP JUMPDEST PUSH1 0x24 DUP2 MSTORE PUSH32 0x4C69624469616D6F6E644375743A2041646420666163657420686173206E6F20 PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x636F6465 PUSH1 0xE0 SHL PUSH1 0x40 DUP3 ADD MSTORE DUP8 PUSH2 0xBF4 JUMP JUMPDEST PUSH1 0x0 SWAP4 JUMPDEST DUP6 MLOAD DUP6 LT ISZERO PUSH2 0x3B9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH2 0x26F DUP7 DUP9 PUSH2 0xA2E JUMP JUMPDEST MLOAD AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x22C4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3A5 JUMPI PUSH2 0x305 PUSH2 0x2A5 PUSH2 0x981 JUMP JUMPDEST DUP10 DUP2 MSTORE PUSH2 0xFFFF SWAP4 SWAP1 SWAP4 AND PUSH1 0x20 DUP1 DUP6 ADD DUP3 DUP2 MSTORE PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x22C4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SWAP5 MLOAD DUP6 SLOAD SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND OR PUSH1 0xA0 SWAP2 SWAP1 SWAP2 SHL PUSH2 0xFFFF PUSH1 0xA0 SHL AND OR SWAP1 SWAP4 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x22E4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD SWAP1 PUSH9 0x10000000000000000 DUP3 LT ISZERO PUSH2 0x38F JUMPI PUSH2 0x347 DUP3 PUSH1 0x1 PUSH2 0x364 SWAP5 ADD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x22E4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0xABB JUMP JUMPDEST SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF DUP4 SLOAD SWAP2 PUSH1 0x3 SHL SWAP3 PUSH1 0xE0 SHR DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xFFFF DUP2 EQ PUSH2 0x379 JUMPI PUSH1 0x1 SWAP5 DUP6 ADD SWAP5 ADD PUSH2 0x253 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0xEBBF5D07 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP5 POP SWAP5 SWAP1 SWAP6 SWAP3 POP PUSH1 0x1 SWAP2 POP JUMPDEST ADD SWAP3 SWAP2 SWAP4 SWAP1 SWAP4 PUSH2 0x193 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2B8DA07 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE DUP1 PUSH2 0x3F3 PUSH1 0x24 DUP3 ADD DUP8 PUSH2 0xA58 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP SWAP5 SWAP7 SWAP5 PUSH1 0x1 DUP2 SUB PUSH2 0x563 JUMPI POP DUP7 ISZERO PUSH2 0x541 JUMPI SWAP2 SWAP4 SWAP2 PUSH2 0x45B PUSH2 0x41A PUSH1 0x60 PUSH2 0x9A0 JUMP JUMPDEST PUSH1 0x28 DUP2 MSTORE PUSH32 0x4C69624469616D6F6E644375743A205265706C61636520666163657420686173 PUSH1 0x20 DUP3 ADD MSTORE PUSH8 0x206E6F20636F6465 PUSH1 0xC0 SHL PUSH1 0x40 DUP3 ADD MSTORE DUP9 PUSH2 0xBF4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP5 PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x530 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH2 0x485 DUP3 DUP9 PUSH2 0xA2E JUMP JUMPDEST MLOAD AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x22C4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS DUP2 EQ PUSH2 0x51B JUMPI DUP11 DUP2 EQ PUSH2 0x506 JUMPI ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x22C4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP9 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH2 0x469 JUMP JUMPDEST PUSH4 0x7479F939 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH4 0x1AC6CE8D PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH4 0x2901806D PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP5 POP SWAP5 SWAP1 SWAP6 POP PUSH1 0x1 SWAP2 SWAP3 POP PUSH2 0x3C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCD98A96F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE DUP1 PUSH2 0x3F3 PUSH1 0x24 DUP3 ADD DUP8 PUSH2 0xA58 JUMP JUMPDEST SWAP4 SWAP5 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x0 PUSH1 0x2 DUP3 SUB PUSH2 0x75F JUMPI POP POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x22E4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD SWAP7 DUP1 PUSH2 0x74B JUMPI POP PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x73D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH2 0x5AC DUP3 DUP9 PUSH2 0xA2E JUMP JUMPDEST MLOAD AND SWAP1 DUP2 PUSH1 0x0 MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x22C4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP9 PUSH2 0x5D3 PUSH2 0x981 JUMP JUMPDEST SWAP10 SLOAD SWAP10 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP12 AND DUP1 DUP3 MSTORE PUSH2 0xFFFF PUSH1 0x20 DUP4 ADD SWAP13 PUSH1 0xA0 SHR AND DUP13 MSTORE ISZERO PUSH2 0x728 JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS EQ PUSH2 0x713 JUMPI DUP1 ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 NOT ADD SWAP9 DUP10 PUSH2 0xFFFF DUP3 MLOAD AND SUB PUSH2 0x69D JUMPI JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x22E4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD SWAP2 DUP3 ISZERO PUSH2 0x687 JUMPI PUSH1 0x1 SWAP3 PUSH1 0x0 NOT ADD PUSH2 0x645 DUP2 PUSH2 0xABB JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 SLOAD SWAP2 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x22E4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH1 0x0 MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x22C4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 MSTORE PUSH1 0x0 PUSH1 0x40 DUP2 KECCAK256 SSTORE ADD PUSH2 0x590 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x70D SWAP1 PUSH2 0xFFFF PUSH2 0x6AD DUP13 PUSH2 0xABB JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH1 0xE0 SHL SWAP2 PUSH2 0x6C8 DUP4 PUSH2 0x347 DUP5 DUP5 MLOAD AND PUSH2 0xABB JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x22C4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xA0 SHL NOT AND SWAP2 SWAP1 SWAP3 AND PUSH1 0xA0 SHL PUSH2 0xFFFF PUSH1 0xA0 SHL AND OR SWAP1 SSTORE JUMP JUMPDEST CODESIZE PUSH2 0x61D JUMP JUMPDEST DUP3 PUSH4 0xDF5FD61 PUSH1 0xE3 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 PUSH4 0x7A08A22D PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP4 POP SWAP4 PUSH1 0x1 SWAP2 SWAP6 POP PUSH2 0x3C6 JUMP JUMPDEST PUSH4 0xD091BC81 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xFF SWAP3 POP POP PUSH4 0x3FF4D20F PUSH1 0xE1 SHL PUSH1 0x0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP5 PUSH4 0xE767F91F PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP5 DUP4 PUSH1 0x40 MLOAD SWAP4 PUSH1 0x60 DUP6 ADD SWAP1 PUSH1 0x60 DUP7 MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH1 0x80 DUP6 ADD PUSH1 0x80 DUP3 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 SWAP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x827 JUMPI PUSH2 0x818 DUP8 DUP8 PUSH32 0x8FAA70878671CCD212D20771B795C50AF8FD3FF6CF27F4BDE57E5D4DE0AEB673 DUP12 DUP1 PUSH2 0x810 DUP12 DUP6 PUSH1 0x20 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE DUP7 PUSH2 0xA96 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH2 0xB16 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1690 SWAP1 DUP2 PUSH2 0xC34 DUP3 CODECOPY RETURN JUMPDEST DUP8 DUP6 SUB PUSH1 0x7F NOT ADD DUP4 MSTORE DUP4 MLOAD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 SWAP1 PUSH1 0x3 DUP4 LT ISZERO PUSH2 0x779 JUMPI PUSH2 0x87B DUP3 PUSH1 0x60 PUSH1 0x40 PUSH1 0x20 SWAP6 SWAP5 PUSH1 0x1 SWAP8 DUP8 DUP1 SWAP8 ADD MSTORE ADD MLOAD SWAP2 DUP2 PUSH1 0x40 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0xA58 JUMP JUMPDEST SWAP7 ADD SWAP5 ADD SWAP3 SWAP2 ADD PUSH2 0x7C9 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x887 JUMPI DUP3 ADD PUSH1 0x60 DUP2 DUP9 SUB PUSH1 0x1F NOT ADD SLT PUSH2 0x887 JUMPI PUSH2 0x8B4 PUSH2 0x962 JUMP JUMPDEST SWAP1 PUSH2 0x8C1 PUSH1 0x20 DUP3 ADD PUSH2 0x9DC JUMP JUMPDEST DUP3 MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x887 JUMPI PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x887 JUMPI PUSH1 0x20 SWAP2 ADD ADD DUP8 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x887 JUMPI DUP1 MLOAD PUSH2 0x907 PUSH2 0x51 DUP3 PUSH2 0x9C5 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP1 DUP5 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP1 DUP11 DUP3 GT PUSH2 0x887 JUMPI PUSH1 0x20 ADD SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x941 JUMPI POP POP POP PUSH1 0x40 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x76 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 SUB PUSH2 0x887 JUMPI DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x924 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x60 DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP4 DUP3 LT OR PUSH2 0x38F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP4 DUP3 LT OR PUSH2 0x38F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP4 DUP3 LT OR PUSH2 0x38F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x38F JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x887 JUMPI JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x38F JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0xA1E JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA0E JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0xA42 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x20 DUP1 DUP4 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xA76 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA69 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0xAAF DUP2 MLOAD DUP1 SWAP3 DUP2 DUP6 MSTORE DUP6 DUP1 DUP7 ADD SWAP2 ADD PUSH2 0xA0B JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x22E4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD DUP3 LT ISZERO PUSH2 0xA42 JUMPI PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x22E4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 MSTORE PUSH1 0x3 DUP3 SWAP1 SHR PUSH32 0xC0D727610EA16241EFF4447D08BB1B4595F7D2EC4515282437A13B7D0DF4B922 ADD SWAP2 PUSH1 0x2 SHL PUSH1 0x1C AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP2 SWAP1 DUP3 ISZERO PUSH2 0xBEF JUMPI PUSH1 0x0 DUP1 SWAP2 PUSH2 0xB7A PUSH2 0xB39 PUSH1 0x60 PUSH2 0x9A0 JUMP JUMPDEST PUSH1 0x28 DUP2 MSTORE PUSH32 0x4C69624469616D6F6E644375743A205F696E6974206164647265737320686173 PUSH1 0x20 DUP3 ADD MSTORE PUSH8 0x206E6F20636F6465 PUSH1 0xC0 SHL PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH2 0xBF4 JUMP JUMPDEST DUP4 MLOAD SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 GAS DELEGATECALL SWAP2 RETURNDATASIZE ISZERO PUSH2 0xBE7 JUMPI RETURNDATASIZE SWAP3 PUSH2 0xB99 PUSH2 0x51 DUP6 PUSH2 0x9F0 JUMP JUMPDEST SWAP4 DUP5 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP7 ADD RETURNDATACOPY JUMPDEST ISZERO PUSH2 0xBAF JUMPI POP POP POP JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0xBBE JUMPI DUP3 MLOAD PUSH1 0x20 DUP5 ADD REVERT JUMPDEST PUSH2 0x3F3 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 PUSH4 0x192105D7 PUSH1 0xE0 SHL DUP5 MSTORE PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x40 PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x60 SWAP3 PUSH2 0xBA5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP1 EXTCODESIZE ISZERO PUSH2 0xBFF JUMPI POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x919834B9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP1 DUP2 SWAP1 PUSH2 0x3F3 SWAP1 PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0xA96 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x381 JUMPI STOP JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0x1F931C1C SUB PUSH2 0xE JUMPI CALLVALUE PUSH2 0xE3 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE3 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE3 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xE3 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x87 PUSH2 0x82 DUP3 PUSH2 0x2AE JUMP JUMPDEST PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH1 0x24 PUSH1 0x20 DUP5 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP1 CALLDATASIZE DUP3 GT PUSH2 0xE3 JUMPI PUSH1 0x24 DUP2 ADD SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0xE8 JUMPI DUP5 PUSH2 0xB6 PUSH2 0x2C6 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xE3 JUMPI PUSH2 0xDB PUSH2 0xE1 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x344 JUMP JUMPDEST SWAP2 PUSH2 0x66D JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE3 JUMPI DUP3 ADD PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0xE3 JUMPI PUSH2 0x12F PUSH2 0x225 JUMP JUMPDEST SWAP1 PUSH2 0x13C PUSH1 0x24 DUP3 ADD PUSH2 0x2E9 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x44 DUP2 ADD CALLDATALOAD PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xE3 JUMPI PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x64 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE3 JUMPI PUSH1 0x24 SWAP2 ADD ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xE3 JUMPI DUP1 CALLDATALOAD PUSH2 0x183 PUSH2 0x82 DUP3 PUSH2 0x2AE JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP1 DUP5 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP1 CALLDATASIZE DUP3 GT PUSH2 0xE3 JUMPI PUSH1 0x20 ADD SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x1BD JUMPI POP POP POP PUSH1 0x40 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 ADD PUSH2 0xA6 JUMP JUMPDEST DUP3 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0xE3 JUMPI DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x1A0 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x60 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x245 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x1F6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x40 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x245 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x40 MLOAD SWAP4 ADD AND DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x245 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x245 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xE3 JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xE3 JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x245 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xE3 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x35E PUSH2 0x82 DUP4 PUSH2 0x30A JUMP JUMPDEST SWAP3 DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0xE3 JUMPI DUP2 PUSH1 0x0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD AND DUP1 PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 DUP2 ISZERO PUSH2 0x412 JUMPI PUSH1 0x0 DUP1 DUP4 CALLDATASIZE DUP3 DUP1 CALLDATACOPY DUP2 CALLDATASIZE SWAP2 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY ISZERO PUSH2 0x40D JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0x5416EB9800000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x43F JUMP JUMPDEST PUSH1 0x3 GT ISZERO PUSH2 0x491 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST MLOAD PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x491 JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x517 JUMPI POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x20 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP1 SWAP3 DUP5 ADD ADD MLOAD DUP3 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0x4D8 JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP2 SWAP4 PUSH1 0x60 DUP2 ADD PUSH1 0x60 DUP3 MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 PUSH1 0x20 PUSH1 0x80 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD SWAP6 ADD SWAP2 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x597 JUMPI POP POP POP POP PUSH2 0x587 PUSH2 0x594 SWAP5 SWAP6 PUSH1 0x20 DUP4 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x4CD JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 DUP6 DUP3 SUB ADD DUP3 MSTORE DUP7 MLOAD PUSH1 0x60 DUP3 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND DUP4 MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 PUSH1 0x3 DUP3 LT ISZERO PUSH2 0x491 JUMPI PUSH1 0x40 PUSH1 0x80 SWAP2 PUSH1 0x20 SWAP4 DUP5 DUP8 ADD MSTORE ADD MLOAD SWAP4 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0x633 JUMPI POP POP POP PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 SWAP9 ADD SWAP3 ADD SWAP3 ADD SWAP1 SWAP3 SWAP2 PUSH2 0x555 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 MLOAD AND DUP2 MSTORE ADD SWAP5 ADD SWAP3 ADD SWAP1 PUSH2 0x615 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x7B8 JUMPI PUSH1 0x40 PUSH2 0x688 DUP3 DUP8 PUSH2 0x46E JUMP JUMPDEST MLOAD ADD MLOAD PUSH2 0x6B3 PUSH2 0x698 DUP4 DUP9 PUSH2 0x46E JUMP JUMPDEST MLOAD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x775 JUMPI PUSH2 0x6D0 PUSH1 0x20 PUSH2 0x6C9 DUP6 DUP11 PUSH2 0x46E JUMP JUMPDEST MLOAD ADD PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x6D9 DUP2 PUSH2 0x487 JUMP JUMPDEST DUP1 PUSH2 0x6F2 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x6EC SWAP2 PUSH2 0x12C1 JUMP JUMPDEST ADD PUSH2 0x673 JUMP JUMPDEST PUSH2 0x6FB DUP2 PUSH2 0x487 JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x716 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x711 SWAP2 PUSH2 0xE7A JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST PUSH2 0x71F DUP2 PUSH2 0x487 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x735 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x711 SWAP2 PUSH2 0xA06 JUMP JUMPDEST DUP1 PUSH2 0x742 PUSH2 0x771 SWAP3 PUSH2 0x487 JUMP JUMPDEST PUSH32 0x7FE9A41E00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0xFF AND PUSH1 0x4 MSTORE PUSH1 0x24 SWAP1 JUMP JUMPDEST PUSH1 0x0 REVERT JUMPDEST PUSH32 0xE767F91F00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP1 SWAP3 SWAP2 PUSH32 0x8FAA70878671CCD212D20771B795C50AF8FD3FF6CF27F4BDE57E5D4DE0AEB673 DUP2 PUSH2 0x7FA SWAP5 PUSH2 0x7F2 DUP6 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x52C JUMP JUMPDEST SUB SWAP1 LOG1 PUSH2 0x150C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xFFFF PUSH2 0x808 PUSH2 0x24A JUMP JUMPDEST SWAP3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP5 MSTORE PUSH1 0xA0 SHR AND PUSH1 0x20 DUP4 ADD MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x888 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 JUMP JUMPDEST PUSH2 0x82E JUMP JUMPDEST SWAP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD DUP3 LT ISZERO PUSH2 0x482 JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D PUSH1 0x0 MSTORE PUSH1 0x3 DUP3 SWAP1 SHR PUSH32 0xC0D727610EA16241EFF4447D08BB1B4595F7D2EC4515282437A13B7D0DF4B922 ADD SWAP2 PUSH1 0x2 SHL PUSH1 0x1C AND SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 DUP1 SLOAD DUP4 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 MSTORE PUSH1 0x1C PUSH1 0x20 PUSH1 0x0 KECCAK256 DUP4 PUSH1 0x3 SHR ADD SWAP3 PUSH1 0x2 SHL AND SWAP1 JUMP JUMPDEST PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD DUP1 ISZERO PUSH2 0x9D7 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0x9A3 DUP2 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D PUSH2 0x90C JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 SLOAD SWAP2 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xD7E JUMPI POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xD78 JUMPI PUSH2 0xA86 PUSH2 0xA60 DUP3 DUP5 PUSH2 0x46E JUMP JUMPDEST MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH2 0xAE3 PUSH2 0xADE DUP3 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x7FC JUMP JUMPDEST SWAP5 PUSH2 0xB1E PUSH2 0xB05 DUP8 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xD28 JUMPI ADDRESS PUSH2 0xB45 PUSH2 0xB05 DUP9 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST EQ PUSH2 0xCD8 JUMPI PUSH2 0xBD1 PUSH1 0x1 SWAP4 SWAP3 PUSH1 0x20 PUSH2 0xB5E PUSH1 0x0 SWAP5 PUSH2 0x85D JUMP JUMPDEST SWAP9 ADD DUP9 PUSH2 0xFFFF PUSH2 0xB70 DUP4 MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST AND SUB PUSH2 0xBD8 JUMPI JUMPDEST POP PUSH2 0xB80 PUSH2 0x92F JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0xA4A JUMP JUMPDEST PUSH2 0xCD2 SWAP1 PUSH2 0xC8B PUSH2 0xC39 PUSH2 0xBFB PUSH2 0xBEE DUP14 PUSH2 0x88D JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0xC31 DUP5 PUSH2 0xC14 PUSH2 0xC0F DUP5 MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x88D JUMP JUMPDEST SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF DUP4 SLOAD SWAP2 PUSH1 0x3 SHL SWAP3 PUSH1 0xE0 SHR DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH22 0xFFFF0000000000000000000000000000000000000000 DUP4 SLOAD SWAP3 PUSH1 0xA0 SHL AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST CODESIZE PUSH2 0xB77 JUMP JUMPDEST PUSH32 0x6FAFEB0800000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x7A08A22D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP SWAP1 POP JUMP JUMPDEST PUSH32 0xD091BC8100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xDE5 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xDD8 JUMP JUMPDEST PUSH2 0xE27 PUSH1 0x60 PUSH2 0x26A JUMP JUMPDEST SWAP1 PUSH1 0x28 DUP3 MSTORE PUSH32 0x206E6F20636F6465000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP4 PUSH32 0x4C69624469616D6F6E644375743A205265706C61636520666163657420686173 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP3 SWAP2 DUP4 ISZERO PUSH2 0x10E3 JUMPI PUSH2 0xEAA PUSH2 0xEA4 PUSH2 0xE1D JUMP JUMPDEST DUP4 PUSH2 0x15F4 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x10DC JUMPI PUSH2 0xEC3 PUSH2 0xA60 DUP3 DUP5 PUSH2 0x46E JUMP JUMPDEST PUSH2 0xF38 PUSH2 0xB05 PUSH2 0xF1E DUP4 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST ADDRESS DUP2 EQ PUSH2 0x108C JUMPI DUP7 DUP2 EQ PUSH2 0x103C JUMPI ISZERO PUSH2 0xFED JUMPI SWAP1 PUSH2 0xFE7 DUP5 PUSH2 0xFA7 PUSH1 0x1 SWAP5 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST ADD PUSH2 0xEAD JUMP JUMPDEST PUSH32 0x7479F93900000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x358D9D1A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x520300DA00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP POP SWAP1 POP JUMP JUMPDEST PUSH2 0x1119 SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0xCD98A96F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xDC1 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1127 PUSH1 0x60 PUSH2 0x26A JUMP JUMPDEST SWAP1 PUSH1 0x24 DUP3 MSTORE PUSH32 0x636F646500000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP4 PUSH32 0x4C69624469616D6F6E644375743A2041646420666163657420686173206E6F20 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0xFFFF PUSH1 0x20 PUSH2 0x7FA SWAP4 PUSH2 0x11DF PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 MLOAD AND DUP6 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST ADD MLOAD DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 AND PUSH1 0xA0 SHL PUSH22 0xFFFF0000000000000000000000000000000000000000 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD SWAP1 PUSH9 0x10000000000000000 DUP3 LT ISZERO PUSH2 0x245 JUMPI PUSH2 0xC14 DUP3 PUSH1 0x1 PUSH2 0x7FA SWAP5 ADD PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D PUSH2 0x90C JUMP JUMPDEST PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 EQ PUSH2 0x888 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO PUSH2 0x1483 JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD PUSH2 0xFFFF AND SWAP1 PUSH2 0x1317 PUSH2 0x1311 PUSH2 0x111D JUMP JUMPDEST DUP6 PUSH2 0x15F4 JUMP JUMPDEST PUSH1 0x0 SWAP2 JUMPDEST DUP2 MLOAD DUP4 LT ISZERO PUSH2 0x10DC JUMPI PUSH2 0x1331 PUSH2 0xA60 DUP5 DUP5 PUSH2 0x46E JUMP JUMPDEST PUSH2 0x138C PUSH2 0xB05 PUSH2 0xF1E DUP4 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1434 JUMPI PUSH1 0x1 SWAP2 PUSH2 0x1427 PUSH2 0x142C SWAP3 PUSH2 0x1422 PUSH2 0x13A5 PUSH2 0x24A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND DUP2 MSTORE PUSH2 0xFFFF DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x141D DUP4 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x117A JUMP JUMPDEST PUSH2 0x1227 JUMP JUMPDEST PUSH2 0x12AE JUMP JUMPDEST SWAP3 ADD SWAP2 PUSH2 0x131B JUMP JUMPDEST PUSH32 0xEBBF5D0700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1119 SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0xAE3681C00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xDC1 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x14DA JUMPI RETURNDATASIZE SWAP1 PUSH2 0x14CD PUSH2 0x82 DUP4 PUSH2 0x30A JUMP JUMPDEST SWAP2 DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x594 SWAP5 SWAP4 AND DUP2 MSTORE DUP2 PUSH1 0x20 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x4CD JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x15F0 JUMPI PUSH2 0x158C PUSH2 0x1536 PUSH1 0x60 PUSH2 0x26A JUMP JUMPDEST PUSH1 0x28 DUP2 MSTORE PUSH32 0x4C69624469616D6F6E644375743A205F696E6974206164647265737320686173 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x206E6F20636F6465000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE DUP4 PUSH2 0x15F4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x20 DUP5 ADD DUP6 GAS DELEGATECALL SWAP2 PUSH2 0x15A1 PUSH2 0x14B9 JUMP JUMPDEST SWAP3 ISZERO PUSH2 0x15AC JUMPI POP POP POP JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x15BB JUMPI DUP3 MLOAD PUSH1 0x20 DUP5 ADD REVERT JUMPDEST PUSH2 0x1119 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 PUSH32 0x192105D700000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x14DF JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0x1600 JUMPI POP POP JUMP JUMPDEST SWAP1 PUSH2 0x1119 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 PUSH32 0x919834B900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x40 PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0x4CD JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 PUSH25 0x868E4C428A8CABE8BD5CD37D0A44EB04E7393B1AEB0F03C4F9 RETURNDATASIZE 0xD6 0xDC OR EQ PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER 0xC8 0xFC 0xAD DUP14 0xB8 0x4D EXTCODECOPY 0xC1 DUP12 0x4C COINBASE 0xD5 MLOAD 0xEA 0xE 0xE6 PUSH14 0xD599CDE068D998E57D5E09332C13 SHR 0xC8 0xFC 0xAD DUP14 0xB8 0x4D EXTCODECOPY 0xC1 DUP12 0x4C COINBASE 0xD5 MLOAD 0xEA 0xE 0xE6 PUSH14 0xD599CDE068D998E57D5E09332C13 SAR ",
              "sourceMap": "834:1763:52:-:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;834:1763:52;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;834:1763:52;;;;;-1:-1:-1;;;;;834:1763:52;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;834:1763:52;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;2630:16:69;834:1763:52;;-1:-1:-1;;;;;834:1763:52;;;-1:-1:-1;;;;;;834:1763:52;;;;;;;;;;2699:46:69;-1:-1:-1;;2699:46:69;834:1763:52;-1:-1:-1;;;;;834:1763:52;;-1:-1:-1;;3429:12:69;834:1763:52;;3396:31:69;;;;;834:1763:52;3493:23:69;;;;:::i;:::-;;:41;;;-1:-1:-1;;;;;3571:23:69;;834:1763:52;3571:23:69;:::i;:::-;;834:1763:52;;;;;3625:29:69;3621:122;;834:1763:52;3792:23:69;;;;:::i;:::-;;:30;834:1763:52;;;;;;;-1:-1:-1;3840:37:69;;;4539:27;;;;4535:116;;834:1763:52;-1:-1:-1;;;;;;;;;;;834:1763:52;;;4774:77:69;834:1763:52;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;834:1763:52;;;;4774:77:69;;:::i;:::-;-1:-1:-1;4861:594:69;4932:15;834:1763:52;;4889:41:69;;;;;-1:-1:-1;;;;;;4981:33:69;;;;:::i;:::-;834:1763:52;;-1:-1:-1;834:1763:52;;;-1:-1:-1;;;;;;;;;;;834:1763:52;;;;;;-1:-1:-1;;;;;834:1763:52;5125:128:69;;834:1763:52;;;:::i;:::-;;;;;;;;;;5313:61:69;;;834:1763:52;;;-1:-1:-1;834:1763:52;;;-1:-1:-1;;;;;;;;;;;834:1763:52;;;;;;;;;;;;;-1:-1:-1;;;;;;834:1763:52;;;-1:-1:-1;;;;;834:1763:52;;;;;;;;;;-1:-1:-1;;;834:1763:52;;;;;;;-1:-1:-1;;;;;;;;;;;834:1763:52;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;834:1763:52;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4866:21:69;;834:1763:52;;;;-1:-1:-1;834:1763:52;;;;;-1:-1:-1;834:1763:52;;;;;-1:-1:-1;834:1763:52;;;;;-1:-1:-1;834:1763:52;5125:128:69;5185:53;;;-1:-1:-1;5185:53:69;;834:1763:52;;-1:-1:-1;5185:53:69;4889:41;;;;;;;;;834:1763:52;4889:41:69;;3836:473;834:1763:52;3376:18:69;;;;;;;4535:116;834:1763:52;;-1:-1:-1;;;4589:51:69;;834:1763:52;4589:51:69;;;834:1763:52;;;;;;;;:::i;:::-;4589:51:69;;;3836:473;-1:-1:-1;834:1763:52;;;;3967:41:69;;834:1763:52;;5629:27:69;;;5625:131;;834:1763:52;;;5765:81:69;834:1763:52;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;834:1763:52;;;;5765:81:69;;:::i;:::-;-1:-1:-1;;;;;834:1763:52;;;-1:-1:-1;5927:15:69;834:1763:52;;5884:41:69;;;;;-1:-1:-1;;;;;;5976:33:69;;;;:::i;:::-;834:1763:52;;-1:-1:-1;834:1763:52;;;-1:-1:-1;;;;;;;;;;;834:1763:52;;;;;;-1:-1:-1;;;;;834:1763:52;6258:4:69;6231:32;;6227:118;;6362:32;;;6358:144;;6519:29;6515:123;;-1:-1:-1;834:1763:52;;;-1:-1:-1;;;;;;;;;;;834:1763:52;;;;;;;-1:-1:-1;;;;;;834:1763:52;;;;;;;5861:21:69;;6515:123;6575:48;;;-1:-1:-1;6575:48:69;;834:1763:52;;-1:-1:-1;6575:48:69;6358:144;6421:66;;;;-1:-1:-1;6421:66:69;;834:1763:52;;-1:-1:-1;6421:66:69;6227:118;6290:40;;;;-1:-1:-1;6290:40:69;;834:1763:52;;-1:-1:-1;6290:40:69;5884:41;;;;;;;;834:1763:52;5884:41:69;;;3836:473;;5625:131;834:1763:52;;-1:-1:-1;;;5679:66:69;;834:1763:52;5679:66:69;;;834:1763:52;;;;;;;;:::i;3963:346:69:-;834:1763:52;;;;;;;-1:-1:-1;4112:30:69;4102:40;;4112:30;;834:1763:52;;-1:-1:-1;;;;;;;;;;;834:1763:52;7002:27:69;;6998:115;;7127:21;-1:-1:-1;7193:15:69;834:1763:52;;7150:41:69;;;;;-1:-1:-1;;;;;;7242:33:69;;;;:::i;:::-;834:1763:52;;;;-1:-1:-1;834:1763:52;-1:-1:-1;;;;;;;;;;;834:1763:52;;;-1:-1:-1;834:1763:52;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;7443:61:69;7439:153;;834:1763:52;-1:-1:-1;;;;;834:1763:52;7762:4:69;7703:64;7699:149;;834:1763:52;;;;;;;;;;;;;7945:68:69;7941:411;;7193:15;834:1763:52;-1:-1:-1;;;;;;;;;;;834:1763:52;;;;;;;;-1:-1:-1;;834:1763:52;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;834:1763:52;-1:-1:-1;834:1763:52;-1:-1:-1;;;;;;;;;;;834:1763:52;;-1:-1:-1;834:1763:52;;;;;7127:21:69;;834:1763:52;;;;-1:-1:-1;834:1763:52;;;;;-1:-1:-1;834:1763:52;7941:411:69;8198:139;8055:27;834:1763:52;8055:27:69;;;:::i;:::-;834:1763:52;;;;;;;;;8100:80:69;834:1763:52;8100:65:69;834:1763:52;;;;8100:65:69;:::i;:80::-;834:1763:52;-1:-1:-1;;;;;;834:1763:52;;;-1:-1:-1;834:1763:52;;;-1:-1:-1;;;;;;;;;;;834:1763:52;;;;;;;-1:-1:-1;;;;834:1763:52;;;;;;;-1:-1:-1;;;834:1763:52;;;;;8198:139:69;7941:411;;;7699:149;7794:39;;;;-1:-1:-1;7794:39:69;;834:1763:52;;-1:-1:-1;7794:39:69;7439:153;7531:46;;;;-1:-1:-1;7531:46:69;;834:1763:52;;-1:-1:-1;7531:46:69;7150:41;;;;;834:1763:52;7150:41:69;;;3836:473;;6998:115;7052:50;;;-1:-1:-1;7052:50:69;;834:1763:52;;-1:-1:-1;7052:50:69;4098:211;834:1763:52;;;4256:38:69;;;;-1:-1:-1;4256:38:69;834:1763:52;4256:38:69;834:1763:52;;-1:-1:-1;4256:38:69;834:1763:52;;;;-1:-1:-1;834:1763:52;;;;;-1:-1:-1;834:1763:52;3621:122:69;3681:47;;;;-1:-1:-1;3681:47:69;;834:1763:52;;-1:-1:-1;3681:47:69;3396:31;;;834:1763:52;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;834:1763:52;;;;;;4412:9:69;834:1763:52;;4333:41:69;834:1763:52;;;;;;;;;;;;;;;;;;:::i;:::-;4333:41:69;;;4412:9;:::i;:::-;834:1763:52;;;;;;;;;;;;;-1:-1:-1;;834:1763:52;;;;;;;-1:-1:-1;;;;;834:1763:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;834:1763:52;;;;;-1:-1:-1;;;;;834:1763:52;;;;;;;;;;-1:-1:-1;;834:1763:52;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;834:1763:52;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;834:1763:52;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;834:1763:52;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;834:1763:52;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;834:1763:52;;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;834:1763:52;;;-1:-1:-1;;;;;834:1763:52;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;834:1763:52;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;834:1763:52;;;;;;:::o;:::-;-1:-1:-1;;;;;834:1763:52;;;;;;-1:-1:-1;;834:1763:52;;;;:::o;:::-;;;;;;;;-1:-1:-1;;834:1763:52;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;834:1763:52;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;;834:1763:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;834:1763:52;;;;:::o;:::-;;-1:-1:-1;;;;;;;;;;;834:1763:52;;;;;;-1:-1:-1;;;;;;;;;;;;834:1763:52;;;;;;;;;;;;;:::o;8507:734:69:-;-1:-1:-1;;;;;834:1763:52;;;8507:734:69;8599:19;;8595:56;;8616:1;834:1763:52;;8660:73:69;834:1763:52;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;834:1763:52;;;;8660:73:69;;:::i;:::-;8780:29;;;834:1763:52;8780:29:69;;;;;;834:1763:52;;;;;;;;;;:::i;:::-;;;;;8616:1:69;834:1763:52;;;;;8823:8:69;8819:416;;8507:734;;;:::o;8819:416::-;834:1763:52;;8851:16:69;:12;;8973:144;;834:1763:52;8973:144:69;;;8847:378;834:1763:52;;;9162:48:69;;;;;;;;;;;834:1763:52;;;;;;;;;;;:::i;:::-;;;;;8595:56:69;8634:7;;;:::o;9247:320::-;9381:71;;9465:17;9461:100;;9247:320;;:::o;9461:100::-;834:1763:52;;;-1:-1:-1;;;9505:45:69;;-1:-1:-1;;;;;834:1763:52;;;9505:45:69;;;834:1763:52;;;;;;;;;;;;;;;:::i"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "abi_decode_address": {
                  "entryPoint": 745,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_address_4369": {
                  "entryPoint": 710,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_bytes": {
                  "entryPoint": 836,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_address_bytes": {
                  "entryPoint": 5343,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_array_bytes4_dyn": {
                  "entryPoint": 3521,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_struct_FacetCut_dyn_address_bytes": {
                  "entryPoint": 1324,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_bytes": {
                  "entryPoint": 1229,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_bytes4": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_uint8": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 618,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_memory_4368": {
                  "entryPoint": 549,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "allocate_memory_4386": {
                  "entryPoint": 586,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "array_allocation_size_array_struct_FacetCut_dyn": {
                  "entryPoint": 686,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_bytes": {
                  "entryPoint": 778,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_pop_array_bytes4_dyn_storage_ptr": {
                  "entryPoint": 2351,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "array_push_from_bytes4_to_array_bytes4_dyn_storage_ptr": {
                  "entryPoint": 4647,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "cleanup_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "cleanup_from_storage_uint16": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "copy_literal_to_memory_343e33adc9ef80d2a3b19196e3a71ee2d793419943c19ad2b2a6875f7dd42e8d": {
                  "entryPoint": 4381,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "copy_literal_to_memory_de246aa8052f872d61bcd9cfb620b8012f8bc6e512400178c0e967944dadacfe": {
                  "entryPoint": 3613,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "copy_struct_to_storage_from_struct_FacetAddressAndSelectorPosition_to_struct_FacetAddressAndSelectorPosition": {
                  "entryPoint": 4474,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "decrement_uint256": {
                  "entryPoint": 2141,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_from_storage_value_dynamict_bytes4": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "extract_returndata": {
                  "entryPoint": 5305,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "fun": {
                  "entryPoint": 897,
                  "id": 14353,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "fun_addFunctions": {
                  "entryPoint": 4801,
                  "id": 22515,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_diamondCut": {
                  "entryPoint": 1645,
                  "id": 22414,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "fun_enforceHasContractCode": {
                  "entryPoint": 5620,
                  "id": 22818,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_initializeDiamondCut": {
                  "entryPoint": 5388,
                  "id": 22796,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_removeFunctions": {
                  "entryPoint": 2566,
                  "id": 22748,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_replaceFunctions": {
                  "entryPoint": 3706,
                  "id": 22615,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "increment_uint16": {
                  "entryPoint": 4782,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mapping_index_access_mapping_bytes4_struct_FacetAddressAndSelectorPosition_storage_of_bytes4": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "memory_array_index_access_struct_FacetCut_dyn": {
                  "entryPoint": 1134,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 2094,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 1087,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 502,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "read_from_memoryt_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "read_from_memoryt_bytes4": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "read_from_memoryt_enum_FacetCutAction": {
                  "entryPoint": 1216,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "read_from_storage_reference_type_struct_FacetAddressAndSelectorPosition": {
                  "entryPoint": 2044,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "read_from_storage_split_offset_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "storage_array_index_access_bytes4_dyn": {
                  "entryPoint": 2316,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "storage_array_index_access_bytes4_dyn_4394": {
                  "entryPoint": 2189,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 2
                },
                "update_storage_value_bytes4_to_bytes4": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "update_storage_value_offsett_address_to_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "update_storage_value_offsett_uint16_to_uint16": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "validator_assert_enum_FacetCutAction": {
                  "entryPoint": 1159,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "write_to_memory_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "write_to_memory_uint16": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "60806040526004361015610015575b3661038157005b60003560e01c631f931c1c0361000e57346100e35760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e35760043567ffffffffffffffff81116100e357366023820112156100e3578060040135610087610082826102ae565b61026a565b916024602084848152019260051b820101903682116100e35760248101925b8284106100e857846100b66102c6565b906044359167ffffffffffffffff83116100e3576100db6100e1933690600401610344565b9161066d565b005b600080fd5b833567ffffffffffffffff81116100e357820160607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82360301126100e35761012f610225565b9061013c602482016102e9565b8252604481013560038110156100e3576020830152606481013567ffffffffffffffff81116100e357602491010136601f820112156100e3578035610183610082826102ae565b9160208084848152019260051b820101903682116100e357602001915b8183106101bd5750505060408201528152602093840193016100a6565b82357fffffffff00000000000000000000000000000000000000000000000000000000811681036100e3578152602092830192016101a0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051906060820182811067ffffffffffffffff82111761024557604052565b6101f6565b604051906040820182811067ffffffffffffffff82111761024557604052565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761024557604052565b67ffffffffffffffff81116102455760051b60200190565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100e357565b359073ffffffffffffffffffffffffffffffffffffffff821682036100e357565b67ffffffffffffffff811161024557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f820112156100e35780359061035e6100828361030a565b92828452602083830101116100e357816000926020809301838601378301015290565b7fffffffff0000000000000000000000000000000000000000000000000000000060003516806000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205273ffffffffffffffffffffffffffffffffffffffff604060002054169081156104125760008083368280378136915af43d6000803e1561040d573d6000f35b3d6000fd5b7f5416eb980000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156104825760209160051b010190565b61043f565b6003111561049157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b5160038110156104915790565b919082519283825260005b8481106105175750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b806020809284010151828286010152016104d8565b9392909193606081016060825283518091526080820190602060808260051b8501019501916000905b82821061059757505050506105876105949495602083019073ffffffffffffffffffffffffffffffffffffffff169052565b60408184039101526104cd565b90565b909192957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808582030182528651606082019073ffffffffffffffffffffffffffffffffffffffff8151168352602081015190600382101561049157604060809160209384870152015193606060408201528451809452019201906000905b80821061063357505050602080600192980192019201909291610555565b9091926020806001927fffffffff000000000000000000000000000000000000000000000000000000008751168152019401920190610615565b92909160005b84518110156107b8576040610688828761046e565b5101516106b3610698838861046e565b515173ffffffffffffffffffffffffffffffffffffffff1690565b815115610775576106d060206106c9858a61046e565b51016104c0565b6106d981610487565b806106f25750600192916106ec916112c1565b01610673565b6106fb81610487565b6001810361071657506001929161071191610e7a565b6106ec565b61071f81610487565b6002810361073557506001929161071191610a06565b8061074261077192610487565b7f7fe9a41e0000000000000000000000000000000000000000000000000000000060005260ff16600452602490565b6000fd5b7fe767f91f0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b509092917f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673816107fa946107f2856040519384938461052c565b0390a161150c565b565b9061ffff61080861024a565b925473ffffffffffffffffffffffffffffffffffffffff8116845260a01c166020830152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8015610888577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b61082e565b907fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d54821015610482577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d600052600382901c7fc0d727610ea16241eff4447d08bb1b4595f7d2ec4515282437a13b7d0df4b922019160021b601c1690565b919091805483101561048257600052601c60206000208360031c019260021b1690565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d5480156109d7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016109a3817fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d61090c565b63ffffffff82549160031b1b191690557fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d55565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b91907fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d549273ffffffffffffffffffffffffffffffffffffffff8116610d7e575060005b8151811015610d7857610a86610a60828461046e565b517fffffffff000000000000000000000000000000000000000000000000000000001690565b610ae3610ade827fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b6107fc565b94610b1e610b05875173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b15610d285730610b45610b05885173ffffffffffffffffffffffffffffffffffffffff1690565b14610cd857610bd1600193926020610b5e60009461085d565b98018861ffff610b70835161ffff1690565b1603610bd8575b50610b8061092f565b7fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b5501610a4a565b610cd290610c8b610c39610bfb610bee8d61088d565b90549060031b1c60e01b90565b92610c3184610c14610c0f845161ffff1690565b61088d565b90919063ffffffff83549160031b9260e01c831b921b1916179055565b5161ffff1690565b917fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b907fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff000000000000000000000000000000000000000083549260a01b169116179055565b38610b77565b7f6fafeb08000000000000000000000000000000000000000000000000000000006000527fffffffff00000000000000000000000000000000000000000000000000000000821660045260246000fd5b7f7a08a22d000000000000000000000000000000000000000000000000000000006000527fffffffff00000000000000000000000000000000000000000000000000000000821660045260246000fd5b50509050565b7fd091bc810000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b602060408183019282815284518094520192019060005b818110610de55750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101610dd8565b610e27606061026a565b90602882527f206e6f20636f64650000000000000000000000000000000000000000000000006040837f4c69624469616d6f6e644375743a205265706c6163652066616365742068617360208201520152565b73ffffffffffffffffffffffffffffffffffffffff8116929183156110e357610eaa610ea4610e1d565b836115f4565b60005b81518110156110dc57610ec3610a60828461046e565b610f38610b05610f1e837fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b30811461108c5786811461103c5715610fed5790610fe784610fa76001947fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b01610ead565b7f7479f939000000000000000000000000000000000000000000000000000000006000527fffffffff000000000000000000000000000000000000000000000000000000001660045260246000fd5b7f358d9d1a000000000000000000000000000000000000000000000000000000006000527fffffffff00000000000000000000000000000000000000000000000000000000821660045260246000fd5b7f520300da000000000000000000000000000000000000000000000000000000006000527fffffffff00000000000000000000000000000000000000000000000000000000821660045260246000fd5b5050509050565b611119906040519182917fcd98a96f00000000000000000000000000000000000000000000000000000000835260048301610dc1565b0390fd5b611127606061026a565b90602482527f636f6465000000000000000000000000000000000000000000000000000000006040837f4c69624469616d6f6e644375743a2041646420666163657420686173206e6f2060208201520152565b61ffff60206107fa936111df73ffffffffffffffffffffffffffffffffffffffff825116859073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b015182547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff16911660a01b75ffff000000000000000000000000000000000000000016179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d54906801000000000000000082101561024557610c148260016107fa94017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d557fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d61090c565b61ffff1661ffff81146108885760010190565b919073ffffffffffffffffffffffffffffffffffffffff831615611483577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d5461ffff169061131761131161111d565b856115f4565b6000915b81518310156110dc57611331610a60848461046e565b61138c610b05610f1e837fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b6114345760019161142761142c926114226113a561024a565b73ffffffffffffffffffffffffffffffffffffffff8b16815261ffff8516602082015261141d837fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b61117a565b611227565b6112ae565b92019161131b565b7febbf5d07000000000000000000000000000000000000000000000000000000006000527fffffffff000000000000000000000000000000000000000000000000000000001660045260246000fd5b611119906040519182917f0ae3681c00000000000000000000000000000000000000000000000000000000835260048301610dc1565b3d156114da573d906114cd6100828361030a565b9182523d6000602084013e565b606090565b60409073ffffffffffffffffffffffffffffffffffffffff610594949316815281602082015201906104cd565b9073ffffffffffffffffffffffffffffffffffffffff8216156115f05761158c611536606061026a565b602881527f4c69624469616d6f6e644375743a205f696e697420616464726573732068617360208201527f206e6f20636f64650000000000000000000000000000000000000000000000006040820152836115f4565b600080825160208401855af4916115a16114b9565b92156115ac57505050565b8251156115bb57825160208401fd5b6111196040519283927f192105d7000000000000000000000000000000000000000000000000000000008452600484016114df565b5050565b90813b15611600575050565b9061111973ffffffffffffffffffffffffffffffffffffffff926040519384937f919834b90000000000000000000000000000000000000000000000000000000085521660048401526040602484015260448301906104cd56fea26469706673582212208378868e4c428a8cabe8bd5cd37d0a44eb04e7393b1aeb0f03c4f93dd6dc171464736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x381 JUMPI STOP JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0x1F931C1C SUB PUSH2 0xE JUMPI CALLVALUE PUSH2 0xE3 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE3 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE3 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xE3 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x87 PUSH2 0x82 DUP3 PUSH2 0x2AE JUMP JUMPDEST PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH1 0x24 PUSH1 0x20 DUP5 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP1 CALLDATASIZE DUP3 GT PUSH2 0xE3 JUMPI PUSH1 0x24 DUP2 ADD SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0xE8 JUMPI DUP5 PUSH2 0xB6 PUSH2 0x2C6 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xE3 JUMPI PUSH2 0xDB PUSH2 0xE1 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x344 JUMP JUMPDEST SWAP2 PUSH2 0x66D JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE3 JUMPI DUP3 ADD PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0xE3 JUMPI PUSH2 0x12F PUSH2 0x225 JUMP JUMPDEST SWAP1 PUSH2 0x13C PUSH1 0x24 DUP3 ADD PUSH2 0x2E9 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x44 DUP2 ADD CALLDATALOAD PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xE3 JUMPI PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x64 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE3 JUMPI PUSH1 0x24 SWAP2 ADD ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xE3 JUMPI DUP1 CALLDATALOAD PUSH2 0x183 PUSH2 0x82 DUP3 PUSH2 0x2AE JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP1 DUP5 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP1 CALLDATASIZE DUP3 GT PUSH2 0xE3 JUMPI PUSH1 0x20 ADD SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x1BD JUMPI POP POP POP PUSH1 0x40 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 ADD PUSH2 0xA6 JUMP JUMPDEST DUP3 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0xE3 JUMPI DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x1A0 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x60 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x245 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x1F6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x40 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x245 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x40 MLOAD SWAP4 ADD AND DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x245 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x245 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xE3 JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xE3 JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x245 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xE3 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x35E PUSH2 0x82 DUP4 PUSH2 0x30A JUMP JUMPDEST SWAP3 DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0xE3 JUMPI DUP2 PUSH1 0x0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD AND DUP1 PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 DUP2 ISZERO PUSH2 0x412 JUMPI PUSH1 0x0 DUP1 DUP4 CALLDATASIZE DUP3 DUP1 CALLDATACOPY DUP2 CALLDATASIZE SWAP2 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY ISZERO PUSH2 0x40D JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0x5416EB9800000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x43F JUMP JUMPDEST PUSH1 0x3 GT ISZERO PUSH2 0x491 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST MLOAD PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x491 JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x517 JUMPI POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x20 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP1 SWAP3 DUP5 ADD ADD MLOAD DUP3 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0x4D8 JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP2 SWAP4 PUSH1 0x60 DUP2 ADD PUSH1 0x60 DUP3 MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 PUSH1 0x20 PUSH1 0x80 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD SWAP6 ADD SWAP2 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x597 JUMPI POP POP POP POP PUSH2 0x587 PUSH2 0x594 SWAP5 SWAP6 PUSH1 0x20 DUP4 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x4CD JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 DUP6 DUP3 SUB ADD DUP3 MSTORE DUP7 MLOAD PUSH1 0x60 DUP3 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND DUP4 MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 PUSH1 0x3 DUP3 LT ISZERO PUSH2 0x491 JUMPI PUSH1 0x40 PUSH1 0x80 SWAP2 PUSH1 0x20 SWAP4 DUP5 DUP8 ADD MSTORE ADD MLOAD SWAP4 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0x633 JUMPI POP POP POP PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 SWAP9 ADD SWAP3 ADD SWAP3 ADD SWAP1 SWAP3 SWAP2 PUSH2 0x555 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 MLOAD AND DUP2 MSTORE ADD SWAP5 ADD SWAP3 ADD SWAP1 PUSH2 0x615 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x7B8 JUMPI PUSH1 0x40 PUSH2 0x688 DUP3 DUP8 PUSH2 0x46E JUMP JUMPDEST MLOAD ADD MLOAD PUSH2 0x6B3 PUSH2 0x698 DUP4 DUP9 PUSH2 0x46E JUMP JUMPDEST MLOAD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x775 JUMPI PUSH2 0x6D0 PUSH1 0x20 PUSH2 0x6C9 DUP6 DUP11 PUSH2 0x46E JUMP JUMPDEST MLOAD ADD PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x6D9 DUP2 PUSH2 0x487 JUMP JUMPDEST DUP1 PUSH2 0x6F2 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x6EC SWAP2 PUSH2 0x12C1 JUMP JUMPDEST ADD PUSH2 0x673 JUMP JUMPDEST PUSH2 0x6FB DUP2 PUSH2 0x487 JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x716 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x711 SWAP2 PUSH2 0xE7A JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST PUSH2 0x71F DUP2 PUSH2 0x487 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x735 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x711 SWAP2 PUSH2 0xA06 JUMP JUMPDEST DUP1 PUSH2 0x742 PUSH2 0x771 SWAP3 PUSH2 0x487 JUMP JUMPDEST PUSH32 0x7FE9A41E00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0xFF AND PUSH1 0x4 MSTORE PUSH1 0x24 SWAP1 JUMP JUMPDEST PUSH1 0x0 REVERT JUMPDEST PUSH32 0xE767F91F00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP1 SWAP3 SWAP2 PUSH32 0x8FAA70878671CCD212D20771B795C50AF8FD3FF6CF27F4BDE57E5D4DE0AEB673 DUP2 PUSH2 0x7FA SWAP5 PUSH2 0x7F2 DUP6 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x52C JUMP JUMPDEST SUB SWAP1 LOG1 PUSH2 0x150C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xFFFF PUSH2 0x808 PUSH2 0x24A JUMP JUMPDEST SWAP3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP5 MSTORE PUSH1 0xA0 SHR AND PUSH1 0x20 DUP4 ADD MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x888 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 JUMP JUMPDEST PUSH2 0x82E JUMP JUMPDEST SWAP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD DUP3 LT ISZERO PUSH2 0x482 JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D PUSH1 0x0 MSTORE PUSH1 0x3 DUP3 SWAP1 SHR PUSH32 0xC0D727610EA16241EFF4447D08BB1B4595F7D2EC4515282437A13B7D0DF4B922 ADD SWAP2 PUSH1 0x2 SHL PUSH1 0x1C AND SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 DUP1 SLOAD DUP4 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 MSTORE PUSH1 0x1C PUSH1 0x20 PUSH1 0x0 KECCAK256 DUP4 PUSH1 0x3 SHR ADD SWAP3 PUSH1 0x2 SHL AND SWAP1 JUMP JUMPDEST PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD DUP1 ISZERO PUSH2 0x9D7 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0x9A3 DUP2 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D PUSH2 0x90C JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 SLOAD SWAP2 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xD7E JUMPI POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xD78 JUMPI PUSH2 0xA86 PUSH2 0xA60 DUP3 DUP5 PUSH2 0x46E JUMP JUMPDEST MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH2 0xAE3 PUSH2 0xADE DUP3 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x7FC JUMP JUMPDEST SWAP5 PUSH2 0xB1E PUSH2 0xB05 DUP8 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xD28 JUMPI ADDRESS PUSH2 0xB45 PUSH2 0xB05 DUP9 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST EQ PUSH2 0xCD8 JUMPI PUSH2 0xBD1 PUSH1 0x1 SWAP4 SWAP3 PUSH1 0x20 PUSH2 0xB5E PUSH1 0x0 SWAP5 PUSH2 0x85D JUMP JUMPDEST SWAP9 ADD DUP9 PUSH2 0xFFFF PUSH2 0xB70 DUP4 MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST AND SUB PUSH2 0xBD8 JUMPI JUMPDEST POP PUSH2 0xB80 PUSH2 0x92F JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0xA4A JUMP JUMPDEST PUSH2 0xCD2 SWAP1 PUSH2 0xC8B PUSH2 0xC39 PUSH2 0xBFB PUSH2 0xBEE DUP14 PUSH2 0x88D JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0xC31 DUP5 PUSH2 0xC14 PUSH2 0xC0F DUP5 MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x88D JUMP JUMPDEST SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF DUP4 SLOAD SWAP2 PUSH1 0x3 SHL SWAP3 PUSH1 0xE0 SHR DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST MLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH22 0xFFFF0000000000000000000000000000000000000000 DUP4 SLOAD SWAP3 PUSH1 0xA0 SHL AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST CODESIZE PUSH2 0xB77 JUMP JUMPDEST PUSH32 0x6FAFEB0800000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x7A08A22D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP SWAP1 POP JUMP JUMPDEST PUSH32 0xD091BC8100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xDE5 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xDD8 JUMP JUMPDEST PUSH2 0xE27 PUSH1 0x60 PUSH2 0x26A JUMP JUMPDEST SWAP1 PUSH1 0x28 DUP3 MSTORE PUSH32 0x206E6F20636F6465000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP4 PUSH32 0x4C69624469616D6F6E644375743A205265706C61636520666163657420686173 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP3 SWAP2 DUP4 ISZERO PUSH2 0x10E3 JUMPI PUSH2 0xEAA PUSH2 0xEA4 PUSH2 0xE1D JUMP JUMPDEST DUP4 PUSH2 0x15F4 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x10DC JUMPI PUSH2 0xEC3 PUSH2 0xA60 DUP3 DUP5 PUSH2 0x46E JUMP JUMPDEST PUSH2 0xF38 PUSH2 0xB05 PUSH2 0xF1E DUP4 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST ADDRESS DUP2 EQ PUSH2 0x108C JUMPI DUP7 DUP2 EQ PUSH2 0x103C JUMPI ISZERO PUSH2 0xFED JUMPI SWAP1 PUSH2 0xFE7 DUP5 PUSH2 0xFA7 PUSH1 0x1 SWAP5 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST ADD PUSH2 0xEAD JUMP JUMPDEST PUSH32 0x7479F93900000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x358D9D1A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x520300DA00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP POP SWAP1 POP JUMP JUMPDEST PUSH2 0x1119 SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0xCD98A96F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xDC1 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1127 PUSH1 0x60 PUSH2 0x26A JUMP JUMPDEST SWAP1 PUSH1 0x24 DUP3 MSTORE PUSH32 0x636F646500000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP4 PUSH32 0x4C69624469616D6F6E644375743A2041646420666163657420686173206E6F20 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0xFFFF PUSH1 0x20 PUSH2 0x7FA SWAP4 PUSH2 0x11DF PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 MLOAD AND DUP6 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST ADD MLOAD DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 AND PUSH1 0xA0 SHL PUSH22 0xFFFF0000000000000000000000000000000000000000 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD SWAP1 PUSH9 0x10000000000000000 DUP3 LT ISZERO PUSH2 0x245 JUMPI PUSH2 0xC14 DUP3 PUSH1 0x1 PUSH2 0x7FA SWAP5 ADD PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D PUSH2 0x90C JUMP JUMPDEST PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 EQ PUSH2 0x888 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO PUSH2 0x1483 JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD PUSH2 0xFFFF AND SWAP1 PUSH2 0x1317 PUSH2 0x1311 PUSH2 0x111D JUMP JUMPDEST DUP6 PUSH2 0x15F4 JUMP JUMPDEST PUSH1 0x0 SWAP2 JUMPDEST DUP2 MLOAD DUP4 LT ISZERO PUSH2 0x10DC JUMPI PUSH2 0x1331 PUSH2 0xA60 DUP5 DUP5 PUSH2 0x46E JUMP JUMPDEST PUSH2 0x138C PUSH2 0xB05 PUSH2 0xF1E DUP4 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1434 JUMPI PUSH1 0x1 SWAP2 PUSH2 0x1427 PUSH2 0x142C SWAP3 PUSH2 0x1422 PUSH2 0x13A5 PUSH2 0x24A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND DUP2 MSTORE PUSH2 0xFFFF DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x141D DUP4 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x117A JUMP JUMPDEST PUSH2 0x1227 JUMP JUMPDEST PUSH2 0x12AE JUMP JUMPDEST SWAP3 ADD SWAP2 PUSH2 0x131B JUMP JUMPDEST PUSH32 0xEBBF5D0700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1119 SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0xAE3681C00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xDC1 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x14DA JUMPI RETURNDATASIZE SWAP1 PUSH2 0x14CD PUSH2 0x82 DUP4 PUSH2 0x30A JUMP JUMPDEST SWAP2 DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x594 SWAP5 SWAP4 AND DUP2 MSTORE DUP2 PUSH1 0x20 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x4CD JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x15F0 JUMPI PUSH2 0x158C PUSH2 0x1536 PUSH1 0x60 PUSH2 0x26A JUMP JUMPDEST PUSH1 0x28 DUP2 MSTORE PUSH32 0x4C69624469616D6F6E644375743A205F696E6974206164647265737320686173 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x206E6F20636F6465000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE DUP4 PUSH2 0x15F4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x20 DUP5 ADD DUP6 GAS DELEGATECALL SWAP2 PUSH2 0x15A1 PUSH2 0x14B9 JUMP JUMPDEST SWAP3 ISZERO PUSH2 0x15AC JUMPI POP POP POP JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x15BB JUMPI DUP3 MLOAD PUSH1 0x20 DUP5 ADD REVERT JUMPDEST PUSH2 0x1119 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 PUSH32 0x192105D700000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x14DF JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0x1600 JUMPI POP POP JUMP JUMPDEST SWAP1 PUSH2 0x1119 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 PUSH32 0x919834B900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x40 PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0x4CD JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 PUSH25 0x868E4C428A8CABE8BD5CD37D0A44EB04E7393B1AEB0F03C4F9 RETURNDATASIZE 0xD6 0xDC OR EQ PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "834:1763:52:-:0;;;;;;;;;-1:-1:-1;834:1763:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;1327:9;834:1763;;;;;;:::i;:::-;1327:9;;:::i;:::-;834:1763;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;834:1763:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;834:1763:52;;;;;;;;;;;;;;:::o;1470:1089::-;1805:7;-1:-1:-1;1805:7:52;;1669:45:69;-1:-1:-1;1669:45:69;;;;834:1763:52;1669:45:69;-1:-1:-1;1669:45:69;;834:1763:52;1840:19;;;1836:82;;-1:-1:-1;2016:537:52;;;;;;;;;;;;-1:-1:-1;2016:537:52;;;;;;-1:-1:-1;2016:537:52;;;-1:-1:-1;2016:537:52;1836:82;1882:25;-1:-1:-1;1882:25:52;;1669:45:69;;-1:-1:-1;1882:25:52;834:1763;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;-1:-1:-1;834:1763:52;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:45:69;;834:1763:52;;;;;;;;3250:1179:69;;;;-1:-1:-1;3429:12:69;834:1763:52;;3396:31:69;;;;;3493:41;:23;;;;:::i;:::-;;:41;;3571:36;:23;;;;:::i;:::-;;834:1763:52;;;;;3571:36:69;834:1763:52;;3625:29:69;3621:122;;3792:30;;:23;;;;:::i;:::-;;:30;;:::i;:::-;834:1763:52;;;:::i;:::-;3840:37:69;;;3924:17;834:1763:52;3924:17:69;;;;;:::i;:::-;834:1763:52;3376:18:69;;3836:473;834:1763:52;;;:::i;:::-;;3967:41:69;;834:1763:52;;4059:17:69;834:1763:52;4059:17:69;;;;;:::i;:::-;3836:473;;3963:346;834:1763:52;;;:::i;:::-;4112:30:69;4102:40;;4112:30;;4192:17;834:1763:52;4192:17:69;;;;;:::i;4098:211::-;834:1763:52;;4256:38:69;834:1763:52;;:::i;:::-;4256:38:69;-1:-1:-1;4256:38:69;834:1763:52;;4256:38:69;834:1763:52;;;;4256:38:69;-1:-1:-1;4256:38:69;3621:122;3681:47;-1:-1:-1;3681:47:69;834:1763:52;;3681:47:69;834:1763:52;;-1:-1:-1;4256:38:69;3396:31;;;;;4333:41;3396:31;4412:9;3396:31;4333:41;834:1763:52;3493:41:69;834:1763:52;4333:41:69;;;;;:::i;:::-;;;;4412:9;:::i;:::-;3250:1179::o;834:1763:52:-;;;;;:::i;:::-;1669:45:69;;834:1763:52;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;6969:12:69;834:1763:52;;;;;;6969:12:69;-1:-1:-1;834:1763:52;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;834:1763:52;;;-1:-1:-1;834:1763:52;;;;;;;;;;:::o;:::-;6969:12:69;834:1763:52;;;;;;;;;6969:12:69;834:1763:52;:::i;:::-;;;;;;;;;;;;6969:12:69;834:1763:52;:::o;:::-;;;;;;;;;;6788:1713:69;;;6969:12;834:1763:52;;;;;6998:115:69;;7127:21;-1:-1:-1;7193:15:69;834:1763:52;;7150:41:69;;;;;7242:33;;;;;:::i;:::-;834:1763:52;;;;;7242:33:69;834:1763:52;7381:44:69;;834:1763:52;;1669:45:69;;;;;;;;;;7381:44;834:1763:52;:::i;:::-;;7443:61:69;834:1763:52;;;;;;;;;;;;7443:61:69;;7439:153;;7762:4;7703:64;834:1763:52;;;;;;;7703:64:69;;7699:149;;8440:44;6969:12;7912:15;;7945:51;7912:15;-1:-1:-1;7912:15:69;;:::i;:::-;7945:51;;834:1763:52;;;;;;;;;;;7945:68:69;7941:411;;7193:15;8401:16;;;:::i;:::-;834:1763:52;;1669:45:69;;;;;;;;;;8440:44;834:1763:52;;7127:21:69;;7941:411;8198:139;8055:27;8198:48;834:1763:52;;8055:27:69;;;:::i;:::-;834:1763:52;;;;;;;;;;;;8100:80:69;834:1763:52;8100:65:69;834:1763:52;;;;;;;;8100:65:69;:::i;:::-;:80;834:1763:52;;;;;;;;;;;;;;;;;;;;;8100:80:69;834:1763:52;;;;;;8198:48:69;834:1763:52;;1669:45:69;;;;;;;;;;8198:48;834:1763:52;;;;;;;;;;;;;;;8198:139:69;7941:411;;;7699:149;7794:39;-1:-1:-1;7794:39:69;834:1763:52;;;7531:46:69;1669:45;;-1:-1:-1;4256:38:69;7439:153;7531:46;-1:-1:-1;7531:46:69;834:1763:52;;;7531:46:69;1669:45;;-1:-1:-1;4256:38:69;7150:41;;;;;6788:1713::o;6998:115::-;7052:50;-1:-1:-1;7052:50:69;834:1763:52;;3681:47:69;834:1763:52;;-1:-1:-1;4256:38:69;834:1763:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;1669:45:69;;834:1763:52;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;5467:1315:69:-;834:1763:52;;;;5467:1315:69;5629:27;;5625:131;;5765:81;834:1763:52;;:::i;:::-;5765:81:69;;:::i;:::-;-1:-1:-1;5927:15:69;834:1763:52;;5884:41:69;;;;;5976:33;;;;;:::i;:::-;6231:32;6049:57;:44;;834:1763:52;;1669:45:69;;;;;;;;;;6049:44;1669:45;834:1763:52;;;1669:45:69;6231:32;6258:4;6231:32;;6227:118;;6362:32;;;6358:144;;6519:29;6515:123;;6692:44;:73;:44;;834:1763:52;6692:44:69;834:1763:52;;1669:45:69;;;;;;;;;;6692:44;834:1763:52;;;;;;;;;;;6692:73:69;834:1763:52;5861:21:69;;6515:123;6575:48;-1:-1:-1;6575:48:69;834:1763:52;;7531:46:69;1669:45;;-1:-1:-1;4256:38:69;6358:144;6421:66;-1:-1:-1;6421:66:69;834:1763:52;;;7531:46:69;1669:45;;-1:-1:-1;4256:38:69;6227:118;6290:40;-1:-1:-1;6290:40:69;834:1763:52;;;7531:46:69;1669:45;;-1:-1:-1;4256:38:69;5884:41;;;;;;5467:1315::o;5625:131::-;5679:66;834:1763:52;;;5679:66:69;;;;;;;;;;:::i;:::-;;;;834:1763:52;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4744:12:69;834:1763:52;;;;;;;;;;;;;;4744:12:69;834:1763:52;4744:12:69;834:1763:52;:::i;:::-;;;;;;;;;;;:::o;4435:1026:69:-;;;834:1763:52;;;4539:27:69;4535:116;;4744:12;834:1763:52;;;;4774:77:69;834:1763:52;;:::i;:::-;4774:77:69;;:::i;:::-;4564:1;4861:594;4932:15;834:1763:52;;4889:41:69;;;;;4981:33;;;;;:::i;:::-;5129:29;5054:57;:44;;834:1763:52;;1669:45:69;;;;;;;;;;5129:29;5125:128;;4744:12;834:1763:52;5388:27:69;5429:15;834:1763:52;;;;:::i;:::-;;;;;;;;;5313:61:69;;;834:1763:52;5266:44:69;;834:1763:52;;1669:45:69;;;;;;;;;;5266:44;834:1763:52;:::i;:::-;5388:27:69;:::i;:::-;5429:15;:::i;:::-;4932;834:1763:52;4866:21:69;;;5125:128;5185:53;4564:1;5185:53;834:1763:52;;7531:46:69;1669:45;;-1:-1:-1;4256:38:69;4535:116;4589:51;834:1763:52;;;4589:51:69;;;;;;;;;;:::i;834:1763:52:-;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;834:1763:52;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;8507:734:69:-;;834:1763:52;;;8599:19:69;8595:56;;8660:73;834:1763:52;;;:::i;:::-;;;;;;;;;;;;;;8660:73:69;;:::i;:::-;8616:1;8780:29;;;834:1763:52;8780:29:69;;;;;;;;:::i;:::-;8823:8;;8819:416;;8507:734;;;:::o;8819:416::-;834:1763:52;;8851:16:69;:12;;8973:144;;834:1763:52;8973:144:69;;;8847:378;9162:48;834:1763:52;;9162:48:69;;;;;;;;;;:::i;8595:56::-;8634:7;;:::o;9247:320::-;;9381:71;;9465:17;9461:100;;9247:320;;:::o;9461:100::-;834:1763:52;;;;;;9505:45:69;;;;;;834:1763:52;9505:45:69;;;834:1763:52;;;;;;;;;;;:::i"
            },
            "methodIdentifiers": {
              "diamondCut((address,uint8,bytes4[])[],address,bytes)": "1f931c1c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum IDiamond.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct IDiamond.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"init\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initCalldata\",\"type\":\"bytes\"}],\"internalType\":\"struct DiamondArgs\",\"name\":\"_args\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_selector\",\"type\":\"bytes4\"}],\"name\":\"CannotAddFunctionToDiamondThatAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"_selectors\",\"type\":\"bytes4[]\"}],\"name\":\"CannotAddSelectorsToZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_selector\",\"type\":\"bytes4\"}],\"name\":\"CannotRemoveFunctionThatDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_selector\",\"type\":\"bytes4\"}],\"name\":\"CannotRemoveImmutableFunction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_selector\",\"type\":\"bytes4\"}],\"name\":\"CannotReplaceFunctionThatDoesNotExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_selector\",\"type\":\"bytes4\"}],\"name\":\"CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"_selectors\",\"type\":\"bytes4[]\"}],\"name\":\"CannotReplaceFunctionsFromFacetWithZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_selector\",\"type\":\"bytes4\"}],\"name\":\"CannotReplaceImmutableFunction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_functionSelector\",\"type\":\"bytes4\"}],\"name\":\"FunctionNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_action\",\"type\":\"uint8\"}],\"name\":\"IncorrectFacetCutAction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_initializationContractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"InitializationFunctionReverted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_message\",\"type\":\"string\"}],\"name\":\"NoBytecodeAtAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_facetAddress\",\"type\":\"address\"}],\"name\":\"NoSelectorsProvidedForFacetForCut\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_facetAddress\",\"type\":\"address\"}],\"name\":\"RemoveFacetAddressMustBeZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum IDiamond.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"indexed\":false,\"internalType\":\"struct IDiamond.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"DiamondCut\",\"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\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum IDiamond.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct IDiamond.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"diamondCut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Diamond.sol\":\"Diamond\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/Diamond.sol\":{\"keccak256\":\"0x41047034ac265335dd621ece49594e9a56e6f03e2f523d8aeb00287258014684\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://8f3b404fb4370f8e5a42fcdf6ec9ef72f3002a16b94bbf1d941cf11449c79f19\",\"dweb:/ipfs/QmZAFJMycUrsMF8r5mXwWuRCzFscGV1ephkR3GAZqLHnjS\"]},\"contracts/interfaces/IDiamond.sol\":{\"keccak256\":\"0xf6ea8172fc4ca7f19387dcab713a7c2d3c7453540ec8ea9bbf8fa29fce272d4b\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://57c74c3e17114c0aa5982815aab8cff5264c00317af1abe3620ee8acaca49ff9\",\"dweb:/ipfs/Qma45nAPXZU1MCDfuEBe1Fub6Qd7oumdyEqonGeqsPHXMQ\"]},\"contracts/interfaces/IDiamondCut.sol\":{\"keccak256\":\"0xe30dd72352453957dbc5d9f6b96369b1630c7abac4c2eb6fd49fc858317f99e3\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://55940b6e5e3ae666f6851b2deac40b10173a2636fcef15dbe7e44b94542e9cfa\",\"dweb:/ipfs/QmeVaPtmffSzEz3x4NgAJVjdjMTosM85JyCcX3eGF1Qpo1\"]},\"contracts/libraries/LibDiamond.sol\":{\"keccak256\":\"0xe411f7691d0554f8f01260065f249abda18eaa17697b626272c4e0554a2244b1\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://a116a9dcfd5dc8cef470e6c53c69bbaada930ebe9a7373a0a4a6c3924b77d7e8\",\"dweb:/ipfs/QmRxGt99hosAR5wxJpuTeXpyEV6DNb5fnxs76P2L2Bd34Y\"]}},\"version\":1}"
        }
      },
      "contracts/DiamondTestContract.sol": {
        "DiamondTestContract": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_selector",
                  "type": "bytes4"
                }
              ],
              "name": "CannotAddFunctionToDiamondThatAlreadyExists",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4[]",
                  "name": "_selectors",
                  "type": "bytes4[]"
                }
              ],
              "name": "CannotAddSelectorsToZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_selector",
                  "type": "bytes4"
                }
              ],
              "name": "CannotRemoveFunctionThatDoesNotExist",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_selector",
                  "type": "bytes4"
                }
              ],
              "name": "CannotRemoveImmutableFunction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_selector",
                  "type": "bytes4"
                }
              ],
              "name": "CannotReplaceFunctionThatDoesNotExists",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_selector",
                  "type": "bytes4"
                }
              ],
              "name": "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4[]",
                  "name": "_selectors",
                  "type": "bytes4[]"
                }
              ],
              "name": "CannotReplaceFunctionsFromFacetWithZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_selector",
                  "type": "bytes4"
                }
              ],
              "name": "CannotReplaceImmutableFunction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "_action",
                  "type": "uint8"
                }
              ],
              "name": "IncorrectFacetCutAction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_initializationContractAddress",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_calldata",
                  "type": "bytes"
                }
              ],
              "name": "InitializationFunctionReverted",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_contractAddress",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "_message",
                  "type": "string"
                }
              ],
              "name": "NoBytecodeAtAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_facetAddress",
                  "type": "address"
                }
              ],
              "name": "NoSelectorsProvidedForFacetForCut",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_contractOwner",
                  "type": "address"
                }
              ],
              "name": "NotContractOwner",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_facetAddress",
                  "type": "address"
                }
              ],
              "name": "RemoveFacetAddressMustBeZeroAddress",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "facetAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "enum IDiamond.FacetCutAction",
                      "name": "action",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes4[]",
                      "name": "functionSelectors",
                      "type": "bytes4[]"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct IDiamond.FacetCut[]",
                  "name": "_diamondCut",
                  "type": "tuple[]"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "_init",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "_calldata",
                  "type": "bytes"
                }
              ],
              "name": "DiamondCut",
              "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"
            },
            {
              "inputs": [],
              "name": "contractOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "facetAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "enum IDiamond.FacetCutAction",
                      "name": "action",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes4[]",
                      "name": "functionSelectors",
                      "type": "bytes4[]"
                    }
                  ],
                  "internalType": "struct IDiamond.FacetCut[]",
                  "name": "_diamondCut",
                  "type": "tuple[]"
                },
                {
                  "internalType": "address",
                  "name": "_init",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_calldata",
                  "type": "bytes"
                }
              ],
              "name": "diamondCut",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "enforceIsContractOwner",
              "outputs": [],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "setContractOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601557611408908161001b8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80631f931c1c14610276578063a34d42b81461015f578063ce606ee0146100ee5763d16709141461004857600080fd5b346100e95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e95773ffffffffffffffffffffffffffffffffffffffff7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f54168033036100b857005b7fff4127cb000000000000000000000000000000000000000000000000000000006000523360045260245260446000fd5b600080fd5b346100e95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e957602073ffffffffffffffffffffffffffffffffffffffff7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f5416604051908152f35b346100e95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e95760043573ffffffffffffffffffffffffffffffffffffffff81168091036100e95773ffffffffffffffffffffffffffffffffffffffff7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f5416817fffffffffffffffffffffffff00000000000000000000000000000000000000007fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f5416177fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b346100e95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e95760043567ffffffffffffffff81116100e957366023820112156100e95780600401356102d86102d382611084565b611040565b9160208383815201906024829360051b820101903682116100e95760248101925b828410610ee75785856024359073ffffffffffffffffffffffffffffffffffffffff8216918281036100e9576044359067ffffffffffffffff82116100e957366023830112156100e95781600401356103546102d38261109c565b9281845236602483830101116100e957858460006020858b9660248b970183860137830101526000935b8051851015610d9857604061039386836110d6565b5101519273ffffffffffffffffffffffffffffffffffffffff6103b687846110d6565b51511694845115610d6a5760206103cd88856110d6565b5101516003811015610d3b5760008161073857505085156107005761ffff7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d54169361047261041c6060611040565b602481527f4c69624469616d6f6e644375743a2041646420666163657420686173206e6f2060208201527f636f64650000000000000000000000000000000000000000000000000000000060408201528861136c565b6000945b86518610156106e9577fffffffff000000000000000000000000000000000000000000000000000000006104aa87896110d6565b5116806000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205273ffffffffffffffffffffffffffffffffffffffff604060002054166106bc576105c66104ff611020565b8a815261ffff8060208301951694858152846000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205273ffffffffffffffffffffffffffffffffffffffff806040600020945116167fffffffffffffffffffffffff000000000000000000000000000000000000000084541617835551167fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff000000000000000000000000000000000000000083549260a01b169116179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d54906801000000000000000082101561068d5761062c82600161064994017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d55611178565b90919063ffffffff83549160031b9260e01c831b921b1916179055565b61ffff811461065e5760019586019501610476565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7febbf5d070000000000000000000000000000000000000000000000000000000060005260045260246000fd5b5094509450946001919692505b019391909461037e565b6040517f0ae3681c0000000000000000000000000000000000000000000000000000000081528061073487600483016111f7565b0390fd5b509597956001810361098457508715610950579294926107b161075b6060611040565b602881527f4c69624469616d6f6e644375743a205265706c6163652066616365742068617360208201527f206e6f20636f646500000000000000000000000000000000000000000000000060408201528961136c565b73ffffffffffffffffffffffffffffffffffffffff88169560005b8651811015610940577fffffffff0000000000000000000000000000000000000000000000000000000061080082896110d6565b5116806000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205273ffffffffffffffffffffffffffffffffffffffff60406000205416308114610912578b81146108e457156108b757906001916000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020526040600020897fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055016107cc565b7f7479f9390000000000000000000000000000000000000000000000000000000060005260045260246000fd5b507f358d9d1a0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b507f520300da0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b50945094509460019196506106f6565b6040517fcd98a96f0000000000000000000000000000000000000000000000000000000081528061073487600483016111f7565b6000969596949192939460028214600014610d085750507fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d549780610cdb575060005b8651811015610ccb577fffffffff000000000000000000000000000000000000000000000000000000006109fb82896110d6565b511690816000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002099610a34611020565b9a549a73ffffffffffffffffffffffffffffffffffffffff8c1680825261ffff602083019d60a01c168d5215610c9d575173ffffffffffffffffffffffffffffffffffffffff163014610c6f57801561065e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018a8161ffff819d511603610ba6575b50507fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d54918215610b77577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60019301610b1181611178565b63ffffffff82549160031b1b191690557fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d556000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205260006040812055016109c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7fffffffff0000000000000000000000000000000000000000000000000000000061ffff610bd6610c6894611178565b90549060031b1c60e01b92610bf18461062c84845116611178565b511691166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020526040600020907fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff000000000000000000000000000000000000000083549260a01b169116179055565b898b610ab8565b827f6fafeb080000000000000000000000000000000000000000000000000000000060005260045260246000fd5b837f7a08a22d0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b50939296509350936001906106f6565b7fd091bc810000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60ff9250507f7fe9a41e000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b857fe767f91f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b8591926040519160608301906060845251809152608083019060808160051b85010196916000905b828210610e1157610e0f88887f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738980610e078f8c6020840152828103604084015286611119565b0390a1611253565b005b909192977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808682030182528851606082019073ffffffffffffffffffffffffffffffffffffffff81511683526020810151906003821015610d3b57604060809160209384870152015193606060408201528451809452019201906000905b808210610ead575050506020806001929a0192019201909291610dc0565b9091926020806001927fffffffff000000000000000000000000000000000000000000000000000000008751168152019401920190610e8f565b833567ffffffffffffffff81116100e957820160607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82360301126100e957604051906060820182811067ffffffffffffffff82111761068d57604052602481013573ffffffffffffffffffffffffffffffffffffffff811681036100e9578252604481013560038110156100e9576020830152606481013567ffffffffffffffff81116100e957602491010136601f820112156100e9578035610fad6102d382611084565b9160208084848152019260051b820101903682116100e957602001915b818310610fe75750505060408201528152602093840193016102f9565b82357fffffffff00000000000000000000000000000000000000000000000000000000811681036100e957815260209283019201610fca565b604051906040820182811067ffffffffffffffff82111761068d57604052565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761068d57604052565b67ffffffffffffffff811161068d5760051b60200190565b67ffffffffffffffff811161068d57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b80518210156110ea5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919082519283825260005b8481106111635750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b80602080928401015182828601015201611124565b907fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d548210156110ea577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d600052600382901c7fc0d727610ea16241eff4447d08bb1b4595f7d2ec4515282437a13b7d0df4b922019160021b601c1690565b602060408183019282815284518094520192019060005b81811061121b5750505090565b82517fffffffff000000000000000000000000000000000000000000000000000000001684526020938401939092019160010161120e565b9073ffffffffffffffffffffffffffffffffffffffff821691821561136757600080916112d96112836060611040565b602881527f4c69624469616d6f6e644375743a205f696e697420616464726573732068617360208201527f206e6f20636f646500000000000000000000000000000000000000000000000060408201528261136c565b83519060208501905af4913d1561135f573d926112f86102d38561109c565b9384523d6000602086013e5b1561130e57505050565b82511561131d57825160208401fd5b6107346040519283927f192105d70000000000000000000000000000000000000000000000000000000084526004840152604060248401526044830190611119565b606092611304565b505050565b90813b15611378575050565b9061073473ffffffffffffffffffffffffffffffffffffffff926040519384937f919834b900000000000000000000000000000000000000000000000000000000855216600484015260406024840152604483019061111956fea2646970667358221220b546685607c50113a59fc252500dad891a3f95c3315e259469ca24e00500bbf464736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0x1408 SWAP1 DUP2 PUSH2 0x1B DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1F931C1C EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0xA34D42B8 EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0xCE606EE0 EQ PUSH2 0xEE JUMPI PUSH4 0xD1670914 EQ PUSH2 0x48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131F SLOAD AND DUP1 CALLER SUB PUSH2 0xB8 JUMPI STOP JUMPDEST PUSH32 0xFF4127CB00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131F SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 SWAP2 SUB PUSH2 0xE9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131F SLOAD AND DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131F SLOAD AND OR PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131F SSTORE PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x0 DUP1 LOG3 STOP JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE9 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xE9 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x2D8 PUSH2 0x2D3 DUP3 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x1040 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP4 DUP4 DUP2 MSTORE ADD SWAP1 PUSH1 0x24 DUP3 SWAP4 PUSH1 0x5 SHL DUP3 ADD ADD SWAP1 CALLDATASIZE DUP3 GT PUSH2 0xE9 JUMPI PUSH1 0x24 DUP2 ADD SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0xEE7 JUMPI DUP6 DUP6 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP2 DUP3 DUP2 SUB PUSH2 0xE9 JUMPI PUSH1 0x44 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0xE9 JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0xE9 JUMPI DUP2 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x354 PUSH2 0x2D3 DUP3 PUSH2 0x109C JUMP JUMPDEST SWAP3 DUP2 DUP5 MSTORE CALLDATASIZE PUSH1 0x24 DUP4 DUP4 ADD ADD GT PUSH2 0xE9 JUMPI DUP6 DUP5 PUSH1 0x0 PUSH1 0x20 DUP6 DUP12 SWAP7 PUSH1 0x24 DUP12 SWAP8 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0x0 SWAP4 JUMPDEST DUP1 MLOAD DUP6 LT ISZERO PUSH2 0xD98 JUMPI PUSH1 0x40 PUSH2 0x393 DUP7 DUP4 PUSH2 0x10D6 JUMP JUMPDEST MLOAD ADD MLOAD SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x3B6 DUP8 DUP5 PUSH2 0x10D6 JUMP JUMPDEST MLOAD MLOAD AND SWAP5 DUP5 MLOAD ISZERO PUSH2 0xD6A JUMPI PUSH1 0x20 PUSH2 0x3CD DUP9 DUP6 PUSH2 0x10D6 JUMP JUMPDEST MLOAD ADD MLOAD PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xD3B JUMPI PUSH1 0x0 DUP2 PUSH2 0x738 JUMPI POP POP DUP6 ISZERO PUSH2 0x700 JUMPI PUSH2 0xFFFF PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD AND SWAP4 PUSH2 0x472 PUSH2 0x41C PUSH1 0x60 PUSH2 0x1040 JUMP JUMPDEST PUSH1 0x24 DUP2 MSTORE PUSH32 0x4C69624469616D6F6E644375743A2041646420666163657420686173206E6F20 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x636F646500000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE DUP9 PUSH2 0x136C JUMP JUMPDEST PUSH1 0x0 SWAP5 JUMPDEST DUP7 MLOAD DUP7 LT ISZERO PUSH2 0x6E9 JUMPI PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x4AA DUP8 DUP10 PUSH2 0x10D6 JUMP JUMPDEST MLOAD AND DUP1 PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x6BC JUMPI PUSH2 0x5C6 PUSH2 0x4FF PUSH2 0x1020 JUMP JUMPDEST DUP11 DUP2 MSTORE PUSH2 0xFFFF DUP1 PUSH1 0x20 DUP4 ADD SWAP6 AND SWAP5 DUP6 DUP2 MSTORE DUP5 PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP5 MLOAD AND AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP5 SLOAD AND OR DUP4 SSTORE MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH22 0xFFFF0000000000000000000000000000000000000000 DUP4 SLOAD SWAP3 PUSH1 0xA0 SHL AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD SWAP1 PUSH9 0x10000000000000000 DUP3 LT ISZERO PUSH2 0x68D JUMPI PUSH2 0x62C DUP3 PUSH1 0x1 PUSH2 0x649 SWAP5 ADD PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SSTORE PUSH2 0x1178 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF DUP4 SLOAD SWAP2 PUSH1 0x3 SHL SWAP3 PUSH1 0xE0 SHR DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xFFFF DUP2 EQ PUSH2 0x65E JUMPI PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 ADD PUSH2 0x476 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0xEBBF5D0700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP5 POP SWAP5 POP SWAP5 PUSH1 0x1 SWAP2 SWAP7 SWAP3 POP JUMPDEST ADD SWAP4 SWAP2 SWAP1 SWAP5 PUSH2 0x37E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAE3681C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x734 DUP8 PUSH1 0x4 DUP4 ADD PUSH2 0x11F7 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP SWAP6 SWAP8 SWAP6 PUSH1 0x1 DUP2 SUB PUSH2 0x984 JUMPI POP DUP8 ISZERO PUSH2 0x950 JUMPI SWAP3 SWAP5 SWAP3 PUSH2 0x7B1 PUSH2 0x75B PUSH1 0x60 PUSH2 0x1040 JUMP JUMPDEST PUSH1 0x28 DUP2 MSTORE PUSH32 0x4C69624469616D6F6E644375743A205265706C61636520666163657420686173 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x206E6F20636F6465000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE DUP10 PUSH2 0x136C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP6 PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x940 JUMPI PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x800 DUP3 DUP10 PUSH2 0x10D6 JUMP JUMPDEST MLOAD AND DUP1 PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ADDRESS DUP2 EQ PUSH2 0x912 JUMPI DUP12 DUP2 EQ PUSH2 0x8E4 JUMPI ISZERO PUSH2 0x8B7 JUMPI SWAP1 PUSH1 0x1 SWAP2 PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP10 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE ADD PUSH2 0x7CC JUMP JUMPDEST PUSH32 0x7479F93900000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH32 0x358D9D1A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH32 0x520300DA00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP5 POP SWAP5 POP SWAP5 PUSH1 0x1 SWAP2 SWAP7 POP PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD98A96F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x734 DUP8 PUSH1 0x4 DUP4 ADD PUSH2 0x11F7 JUMP JUMPDEST PUSH1 0x0 SWAP7 SWAP6 SWAP7 SWAP5 SWAP2 SWAP3 SWAP4 SWAP5 PUSH1 0x2 DUP3 EQ PUSH1 0x0 EQ PUSH2 0xD08 JUMPI POP POP PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD SWAP8 DUP1 PUSH2 0xCDB JUMPI POP PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0xCCB JUMPI PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x9FB DUP3 DUP10 PUSH2 0x10D6 JUMP JUMPDEST MLOAD AND SWAP1 DUP2 PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP10 PUSH2 0xA34 PUSH2 0x1020 JUMP JUMPDEST SWAP11 SLOAD SWAP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND DUP1 DUP3 MSTORE PUSH2 0xFFFF PUSH1 0x20 DUP4 ADD SWAP14 PUSH1 0xA0 SHR AND DUP14 MSTORE ISZERO PUSH2 0xC9D JUMPI MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS EQ PUSH2 0xC6F JUMPI DUP1 ISZERO PUSH2 0x65E JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP11 DUP2 PUSH2 0xFFFF DUP2 SWAP14 MLOAD AND SUB PUSH2 0xBA6 JUMPI JUMPDEST POP POP PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD SWAP2 DUP3 ISZERO PUSH2 0xB77 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 SWAP4 ADD PUSH2 0xB11 DUP2 PUSH2 0x1178 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 SLOAD SWAP2 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SSTORE PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x0 PUSH1 0x40 DUP2 KECCAK256 SSTORE ADD PUSH2 0x9C7 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xFFFF PUSH2 0xBD6 PUSH2 0xC68 SWAP5 PUSH2 0x1178 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH1 0xE0 SHL SWAP3 PUSH2 0xBF1 DUP5 PUSH2 0x62C DUP5 DUP5 MLOAD AND PUSH2 0x1178 JUMP JUMPDEST MLOAD AND SWAP2 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH22 0xFFFF0000000000000000000000000000000000000000 DUP4 SLOAD SWAP3 PUSH1 0xA0 SHL AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST DUP10 DUP12 PUSH2 0xAB8 JUMP JUMPDEST DUP3 PUSH32 0x6FAFEB0800000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 PUSH32 0x7A08A22D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP4 SWAP3 SWAP7 POP SWAP4 POP SWAP4 PUSH1 0x1 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH32 0xD091BC8100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xFF SWAP3 POP POP PUSH32 0x7FE9A41E00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP6 PUSH32 0xE767F91F00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP6 SWAP2 SWAP3 PUSH1 0x40 MLOAD SWAP2 PUSH1 0x60 DUP4 ADD SWAP1 PUSH1 0x60 DUP5 MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH1 0x80 DUP4 ADD SWAP1 PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP6 ADD ADD SWAP7 SWAP2 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xE11 JUMPI PUSH2 0xE0F DUP9 DUP9 PUSH32 0x8FAA70878671CCD212D20771B795C50AF8FD3FF6CF27F4BDE57E5D4DE0AEB673 DUP10 DUP1 PUSH2 0xE07 DUP16 DUP13 PUSH1 0x20 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE DUP7 PUSH2 0x1119 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH2 0x1253 JUMP JUMPDEST STOP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP8 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 DUP7 DUP3 SUB ADD DUP3 MSTORE DUP9 MLOAD PUSH1 0x60 DUP3 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND DUP4 MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 PUSH1 0x3 DUP3 LT ISZERO PUSH2 0xD3B JUMPI PUSH1 0x40 PUSH1 0x80 SWAP2 PUSH1 0x20 SWAP4 DUP5 DUP8 ADD MSTORE ADD MLOAD SWAP4 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0xEAD JUMPI POP POP POP PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 SWAP11 ADD SWAP3 ADD SWAP3 ADD SWAP1 SWAP3 SWAP2 PUSH2 0xDC0 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 MLOAD AND DUP2 MSTORE ADD SWAP5 ADD SWAP3 ADD SWAP1 PUSH2 0xE8F JUMP JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE9 JUMPI DUP3 ADD PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0xE9 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x60 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x68D JUMPI PUSH1 0x40 MSTORE PUSH1 0x24 DUP2 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0xE9 JUMPI DUP3 MSTORE PUSH1 0x44 DUP2 ADD CALLDATALOAD PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xE9 JUMPI PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x64 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE9 JUMPI PUSH1 0x24 SWAP2 ADD ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xE9 JUMPI DUP1 CALLDATALOAD PUSH2 0xFAD PUSH2 0x2D3 DUP3 PUSH2 0x1084 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP1 DUP5 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP1 CALLDATASIZE DUP3 GT PUSH2 0xE9 JUMPI PUSH1 0x20 ADD SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0xFE7 JUMPI POP POP POP PUSH1 0x40 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 ADD PUSH2 0x2F9 JUMP JUMPDEST DUP3 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0xE9 JUMPI DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0xFCA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x40 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x68D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x40 MLOAD SWAP4 ADD AND DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x68D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x68D JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x68D JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x10EA JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1163 JUMPI POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x20 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP1 SWAP3 DUP5 ADD ADD MLOAD DUP3 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0x1124 JUMP JUMPDEST SWAP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD DUP3 LT ISZERO PUSH2 0x10EA JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D PUSH1 0x0 MSTORE PUSH1 0x3 DUP3 SWAP1 SHR PUSH32 0xC0D727610EA16241EFF4447D08BB1B4595F7D2EC4515282437A13B7D0DF4B922 ADD SWAP2 PUSH1 0x2 SHL PUSH1 0x1C AND SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x121B JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x120E JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP2 DUP3 ISZERO PUSH2 0x1367 JUMPI PUSH1 0x0 DUP1 SWAP2 PUSH2 0x12D9 PUSH2 0x1283 PUSH1 0x60 PUSH2 0x1040 JUMP JUMPDEST PUSH1 0x28 DUP2 MSTORE PUSH32 0x4C69624469616D6F6E644375743A205F696E6974206164647265737320686173 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x206E6F20636F6465000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH2 0x136C JUMP JUMPDEST DUP4 MLOAD SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 GAS DELEGATECALL SWAP2 RETURNDATASIZE ISZERO PUSH2 0x135F JUMPI RETURNDATASIZE SWAP3 PUSH2 0x12F8 PUSH2 0x2D3 DUP6 PUSH2 0x109C JUMP JUMPDEST SWAP4 DUP5 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP7 ADD RETURNDATACOPY JUMPDEST ISZERO PUSH2 0x130E JUMPI POP POP POP JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x131D JUMPI DUP3 MLOAD PUSH1 0x20 DUP5 ADD REVERT JUMPDEST PUSH2 0x734 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 PUSH32 0x192105D700000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x40 PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0x1119 JUMP JUMPDEST PUSH1 0x60 SWAP3 PUSH2 0x1304 JUMP JUMPDEST POP POP POP JUMP JUMPDEST SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0x1378 JUMPI POP POP JUMP JUMPDEST SWAP1 PUSH2 0x734 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 PUSH32 0x919834B900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x40 PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0x1119 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 CHAINID PUSH9 0x5607C50113A59FC252 POP 0xD 0xAD DUP10 BYTE EXTCODEHASH SWAP6 0xC3 BALANCE MCOPY 0x25 SWAP5 PUSH10 0xCA24E00500BBF464736F PUSH13 0x634300081B0033000000000000 ",
              "sourceMap": "143:580:53:-:0;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "abi_encode_array_bytes4_dyn": {
                  "entryPoint": 4599,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_bytes": {
                  "entryPoint": 4377,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 4160,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_memory_10008": {
                  "entryPoint": 4128,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "array_allocation_size_array_struct_FacetCut_dyn": {
                  "entryPoint": 4228,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_bytes": {
                  "entryPoint": 4252,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_enforceHasContractCode": {
                  "entryPoint": 4972,
                  "id": 22818,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_initializeDiamondCut": {
                  "entryPoint": 4691,
                  "id": 22796,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "memory_array_index_access_struct_FacetCut_dyn": {
                  "entryPoint": 4310,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "storage_array_index_access_bytes4_dyn": {
                  "entryPoint": 4472,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 2
                },
                "update_storage_value_bytes4_to_bytes4": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "update_storage_value_offsett_uint16_to_uint16": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436101561001257600080fd5b60003560e01c80631f931c1c14610276578063a34d42b81461015f578063ce606ee0146100ee5763d16709141461004857600080fd5b346100e95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e95773ffffffffffffffffffffffffffffffffffffffff7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f54168033036100b857005b7fff4127cb000000000000000000000000000000000000000000000000000000006000523360045260245260446000fd5b600080fd5b346100e95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e957602073ffffffffffffffffffffffffffffffffffffffff7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f5416604051908152f35b346100e95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e95760043573ffffffffffffffffffffffffffffffffffffffff81168091036100e95773ffffffffffffffffffffffffffffffffffffffff7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f5416817fffffffffffffffffffffffff00000000000000000000000000000000000000007fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f5416177fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b346100e95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e95760043567ffffffffffffffff81116100e957366023820112156100e95780600401356102d86102d382611084565b611040565b9160208383815201906024829360051b820101903682116100e95760248101925b828410610ee75785856024359073ffffffffffffffffffffffffffffffffffffffff8216918281036100e9576044359067ffffffffffffffff82116100e957366023830112156100e95781600401356103546102d38261109c565b9281845236602483830101116100e957858460006020858b9660248b970183860137830101526000935b8051851015610d9857604061039386836110d6565b5101519273ffffffffffffffffffffffffffffffffffffffff6103b687846110d6565b51511694845115610d6a5760206103cd88856110d6565b5101516003811015610d3b5760008161073857505085156107005761ffff7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d54169361047261041c6060611040565b602481527f4c69624469616d6f6e644375743a2041646420666163657420686173206e6f2060208201527f636f64650000000000000000000000000000000000000000000000000000000060408201528861136c565b6000945b86518610156106e9577fffffffff000000000000000000000000000000000000000000000000000000006104aa87896110d6565b5116806000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205273ffffffffffffffffffffffffffffffffffffffff604060002054166106bc576105c66104ff611020565b8a815261ffff8060208301951694858152846000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205273ffffffffffffffffffffffffffffffffffffffff806040600020945116167fffffffffffffffffffffffff000000000000000000000000000000000000000084541617835551167fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff000000000000000000000000000000000000000083549260a01b169116179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d54906801000000000000000082101561068d5761062c82600161064994017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d55611178565b90919063ffffffff83549160031b9260e01c831b921b1916179055565b61ffff811461065e5760019586019501610476565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7febbf5d070000000000000000000000000000000000000000000000000000000060005260045260246000fd5b5094509450946001919692505b019391909461037e565b6040517f0ae3681c0000000000000000000000000000000000000000000000000000000081528061073487600483016111f7565b0390fd5b509597956001810361098457508715610950579294926107b161075b6060611040565b602881527f4c69624469616d6f6e644375743a205265706c6163652066616365742068617360208201527f206e6f20636f646500000000000000000000000000000000000000000000000060408201528961136c565b73ffffffffffffffffffffffffffffffffffffffff88169560005b8651811015610940577fffffffff0000000000000000000000000000000000000000000000000000000061080082896110d6565b5116806000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205273ffffffffffffffffffffffffffffffffffffffff60406000205416308114610912578b81146108e457156108b757906001916000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020526040600020897fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055016107cc565b7f7479f9390000000000000000000000000000000000000000000000000000000060005260045260246000fd5b507f358d9d1a0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b507f520300da0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b50945094509460019196506106f6565b6040517fcd98a96f0000000000000000000000000000000000000000000000000000000081528061073487600483016111f7565b6000969596949192939460028214600014610d085750507fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d549780610cdb575060005b8651811015610ccb577fffffffff000000000000000000000000000000000000000000000000000000006109fb82896110d6565b511690816000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002099610a34611020565b9a549a73ffffffffffffffffffffffffffffffffffffffff8c1680825261ffff602083019d60a01c168d5215610c9d575173ffffffffffffffffffffffffffffffffffffffff163014610c6f57801561065e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018a8161ffff819d511603610ba6575b50507fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d54918215610b77577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60019301610b1181611178565b63ffffffff82549160031b1b191690557fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d556000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205260006040812055016109c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7fffffffff0000000000000000000000000000000000000000000000000000000061ffff610bd6610c6894611178565b90549060031b1c60e01b92610bf18461062c84845116611178565b511691166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020526040600020907fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff000000000000000000000000000000000000000083549260a01b169116179055565b898b610ab8565b827f6fafeb080000000000000000000000000000000000000000000000000000000060005260045260246000fd5b837f7a08a22d0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b50939296509350936001906106f6565b7fd091bc810000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60ff9250507f7fe9a41e000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b857fe767f91f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b8591926040519160608301906060845251809152608083019060808160051b85010196916000905b828210610e1157610e0f88887f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738980610e078f8c6020840152828103604084015286611119565b0390a1611253565b005b909192977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808682030182528851606082019073ffffffffffffffffffffffffffffffffffffffff81511683526020810151906003821015610d3b57604060809160209384870152015193606060408201528451809452019201906000905b808210610ead575050506020806001929a0192019201909291610dc0565b9091926020806001927fffffffff000000000000000000000000000000000000000000000000000000008751168152019401920190610e8f565b833567ffffffffffffffff81116100e957820160607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82360301126100e957604051906060820182811067ffffffffffffffff82111761068d57604052602481013573ffffffffffffffffffffffffffffffffffffffff811681036100e9578252604481013560038110156100e9576020830152606481013567ffffffffffffffff81116100e957602491010136601f820112156100e9578035610fad6102d382611084565b9160208084848152019260051b820101903682116100e957602001915b818310610fe75750505060408201528152602093840193016102f9565b82357fffffffff00000000000000000000000000000000000000000000000000000000811681036100e957815260209283019201610fca565b604051906040820182811067ffffffffffffffff82111761068d57604052565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761068d57604052565b67ffffffffffffffff811161068d5760051b60200190565b67ffffffffffffffff811161068d57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b80518210156110ea5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919082519283825260005b8481106111635750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b80602080928401015182828601015201611124565b907fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d548210156110ea577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d600052600382901c7fc0d727610ea16241eff4447d08bb1b4595f7d2ec4515282437a13b7d0df4b922019160021b601c1690565b602060408183019282815284518094520192019060005b81811061121b5750505090565b82517fffffffff000000000000000000000000000000000000000000000000000000001684526020938401939092019160010161120e565b9073ffffffffffffffffffffffffffffffffffffffff821691821561136757600080916112d96112836060611040565b602881527f4c69624469616d6f6e644375743a205f696e697420616464726573732068617360208201527f206e6f20636f646500000000000000000000000000000000000000000000000060408201528261136c565b83519060208501905af4913d1561135f573d926112f86102d38561109c565b9384523d6000602086013e5b1561130e57505050565b82511561131d57825160208401fd5b6107346040519283927f192105d70000000000000000000000000000000000000000000000000000000084526004840152604060248401526044830190611119565b606092611304565b505050565b90813b15611378575050565b9061073473ffffffffffffffffffffffffffffffffffffffff926040519384937f919834b900000000000000000000000000000000000000000000000000000000855216600484015260406024840152604483019061111956fea2646970667358221220b546685607c50113a59fc252500dad891a3f95c3315e259469ca24e00500bbf464736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1F931C1C EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0xA34D42B8 EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0xCE606EE0 EQ PUSH2 0xEE JUMPI PUSH4 0xD1670914 EQ PUSH2 0x48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131F SLOAD AND DUP1 CALLER SUB PUSH2 0xB8 JUMPI STOP JUMPDEST PUSH32 0xFF4127CB00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131F SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 SWAP2 SUB PUSH2 0xE9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131F SLOAD AND DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131F SLOAD AND OR PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131F SSTORE PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x0 DUP1 LOG3 STOP JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE9 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xE9 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x2D8 PUSH2 0x2D3 DUP3 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x1040 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP4 DUP4 DUP2 MSTORE ADD SWAP1 PUSH1 0x24 DUP3 SWAP4 PUSH1 0x5 SHL DUP3 ADD ADD SWAP1 CALLDATASIZE DUP3 GT PUSH2 0xE9 JUMPI PUSH1 0x24 DUP2 ADD SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0xEE7 JUMPI DUP6 DUP6 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP2 DUP3 DUP2 SUB PUSH2 0xE9 JUMPI PUSH1 0x44 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0xE9 JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0xE9 JUMPI DUP2 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x354 PUSH2 0x2D3 DUP3 PUSH2 0x109C JUMP JUMPDEST SWAP3 DUP2 DUP5 MSTORE CALLDATASIZE PUSH1 0x24 DUP4 DUP4 ADD ADD GT PUSH2 0xE9 JUMPI DUP6 DUP5 PUSH1 0x0 PUSH1 0x20 DUP6 DUP12 SWAP7 PUSH1 0x24 DUP12 SWAP8 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0x0 SWAP4 JUMPDEST DUP1 MLOAD DUP6 LT ISZERO PUSH2 0xD98 JUMPI PUSH1 0x40 PUSH2 0x393 DUP7 DUP4 PUSH2 0x10D6 JUMP JUMPDEST MLOAD ADD MLOAD SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x3B6 DUP8 DUP5 PUSH2 0x10D6 JUMP JUMPDEST MLOAD MLOAD AND SWAP5 DUP5 MLOAD ISZERO PUSH2 0xD6A JUMPI PUSH1 0x20 PUSH2 0x3CD DUP9 DUP6 PUSH2 0x10D6 JUMP JUMPDEST MLOAD ADD MLOAD PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xD3B JUMPI PUSH1 0x0 DUP2 PUSH2 0x738 JUMPI POP POP DUP6 ISZERO PUSH2 0x700 JUMPI PUSH2 0xFFFF PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD AND SWAP4 PUSH2 0x472 PUSH2 0x41C PUSH1 0x60 PUSH2 0x1040 JUMP JUMPDEST PUSH1 0x24 DUP2 MSTORE PUSH32 0x4C69624469616D6F6E644375743A2041646420666163657420686173206E6F20 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x636F646500000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE DUP9 PUSH2 0x136C JUMP JUMPDEST PUSH1 0x0 SWAP5 JUMPDEST DUP7 MLOAD DUP7 LT ISZERO PUSH2 0x6E9 JUMPI PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x4AA DUP8 DUP10 PUSH2 0x10D6 JUMP JUMPDEST MLOAD AND DUP1 PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x6BC JUMPI PUSH2 0x5C6 PUSH2 0x4FF PUSH2 0x1020 JUMP JUMPDEST DUP11 DUP2 MSTORE PUSH2 0xFFFF DUP1 PUSH1 0x20 DUP4 ADD SWAP6 AND SWAP5 DUP6 DUP2 MSTORE DUP5 PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP5 MLOAD AND AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP5 SLOAD AND OR DUP4 SSTORE MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH22 0xFFFF0000000000000000000000000000000000000000 DUP4 SLOAD SWAP3 PUSH1 0xA0 SHL AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD SWAP1 PUSH9 0x10000000000000000 DUP3 LT ISZERO PUSH2 0x68D JUMPI PUSH2 0x62C DUP3 PUSH1 0x1 PUSH2 0x649 SWAP5 ADD PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SSTORE PUSH2 0x1178 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF DUP4 SLOAD SWAP2 PUSH1 0x3 SHL SWAP3 PUSH1 0xE0 SHR DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xFFFF DUP2 EQ PUSH2 0x65E JUMPI PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 ADD PUSH2 0x476 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0xEBBF5D0700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP5 POP SWAP5 POP SWAP5 PUSH1 0x1 SWAP2 SWAP7 SWAP3 POP JUMPDEST ADD SWAP4 SWAP2 SWAP1 SWAP5 PUSH2 0x37E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAE3681C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x734 DUP8 PUSH1 0x4 DUP4 ADD PUSH2 0x11F7 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP SWAP6 SWAP8 SWAP6 PUSH1 0x1 DUP2 SUB PUSH2 0x984 JUMPI POP DUP8 ISZERO PUSH2 0x950 JUMPI SWAP3 SWAP5 SWAP3 PUSH2 0x7B1 PUSH2 0x75B PUSH1 0x60 PUSH2 0x1040 JUMP JUMPDEST PUSH1 0x28 DUP2 MSTORE PUSH32 0x4C69624469616D6F6E644375743A205265706C61636520666163657420686173 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x206E6F20636F6465000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE DUP10 PUSH2 0x136C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP6 PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x940 JUMPI PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x800 DUP3 DUP10 PUSH2 0x10D6 JUMP JUMPDEST MLOAD AND DUP1 PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ADDRESS DUP2 EQ PUSH2 0x912 JUMPI DUP12 DUP2 EQ PUSH2 0x8E4 JUMPI ISZERO PUSH2 0x8B7 JUMPI SWAP1 PUSH1 0x1 SWAP2 PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP10 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE ADD PUSH2 0x7CC JUMP JUMPDEST PUSH32 0x7479F93900000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH32 0x358D9D1A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH32 0x520300DA00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP5 POP SWAP5 POP SWAP5 PUSH1 0x1 SWAP2 SWAP7 POP PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD98A96F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x734 DUP8 PUSH1 0x4 DUP4 ADD PUSH2 0x11F7 JUMP JUMPDEST PUSH1 0x0 SWAP7 SWAP6 SWAP7 SWAP5 SWAP2 SWAP3 SWAP4 SWAP5 PUSH1 0x2 DUP3 EQ PUSH1 0x0 EQ PUSH2 0xD08 JUMPI POP POP PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD SWAP8 DUP1 PUSH2 0xCDB JUMPI POP PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0xCCB JUMPI PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x9FB DUP3 DUP10 PUSH2 0x10D6 JUMP JUMPDEST MLOAD AND SWAP1 DUP2 PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP10 PUSH2 0xA34 PUSH2 0x1020 JUMP JUMPDEST SWAP11 SLOAD SWAP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND DUP1 DUP3 MSTORE PUSH2 0xFFFF PUSH1 0x20 DUP4 ADD SWAP14 PUSH1 0xA0 SHR AND DUP14 MSTORE ISZERO PUSH2 0xC9D JUMPI MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS EQ PUSH2 0xC6F JUMPI DUP1 ISZERO PUSH2 0x65E JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP11 DUP2 PUSH2 0xFFFF DUP2 SWAP14 MLOAD AND SUB PUSH2 0xBA6 JUMPI JUMPDEST POP POP PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD SWAP2 DUP3 ISZERO PUSH2 0xB77 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 SWAP4 ADD PUSH2 0xB11 DUP2 PUSH2 0x1178 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 SLOAD SWAP2 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SSTORE PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x0 PUSH1 0x40 DUP2 KECCAK256 SSTORE ADD PUSH2 0x9C7 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xFFFF PUSH2 0xBD6 PUSH2 0xC68 SWAP5 PUSH2 0x1178 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH1 0xE0 SHL SWAP3 PUSH2 0xBF1 DUP5 PUSH2 0x62C DUP5 DUP5 MLOAD AND PUSH2 0x1178 JUMP JUMPDEST MLOAD AND SWAP2 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH22 0xFFFF0000000000000000000000000000000000000000 DUP4 SLOAD SWAP3 PUSH1 0xA0 SHL AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST DUP10 DUP12 PUSH2 0xAB8 JUMP JUMPDEST DUP3 PUSH32 0x6FAFEB0800000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 PUSH32 0x7A08A22D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP4 SWAP3 SWAP7 POP SWAP4 POP SWAP4 PUSH1 0x1 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH32 0xD091BC8100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xFF SWAP3 POP POP PUSH32 0x7FE9A41E00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP6 PUSH32 0xE767F91F00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP6 SWAP2 SWAP3 PUSH1 0x40 MLOAD SWAP2 PUSH1 0x60 DUP4 ADD SWAP1 PUSH1 0x60 DUP5 MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH1 0x80 DUP4 ADD SWAP1 PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP6 ADD ADD SWAP7 SWAP2 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xE11 JUMPI PUSH2 0xE0F DUP9 DUP9 PUSH32 0x8FAA70878671CCD212D20771B795C50AF8FD3FF6CF27F4BDE57E5D4DE0AEB673 DUP10 DUP1 PUSH2 0xE07 DUP16 DUP13 PUSH1 0x20 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE DUP7 PUSH2 0x1119 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH2 0x1253 JUMP JUMPDEST STOP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP8 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 DUP7 DUP3 SUB ADD DUP3 MSTORE DUP9 MLOAD PUSH1 0x60 DUP3 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND DUP4 MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 PUSH1 0x3 DUP3 LT ISZERO PUSH2 0xD3B JUMPI PUSH1 0x40 PUSH1 0x80 SWAP2 PUSH1 0x20 SWAP4 DUP5 DUP8 ADD MSTORE ADD MLOAD SWAP4 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0xEAD JUMPI POP POP POP PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 SWAP11 ADD SWAP3 ADD SWAP3 ADD SWAP1 SWAP3 SWAP2 PUSH2 0xDC0 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 MLOAD AND DUP2 MSTORE ADD SWAP5 ADD SWAP3 ADD SWAP1 PUSH2 0xE8F JUMP JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE9 JUMPI DUP3 ADD PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0xE9 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x60 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x68D JUMPI PUSH1 0x40 MSTORE PUSH1 0x24 DUP2 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0xE9 JUMPI DUP3 MSTORE PUSH1 0x44 DUP2 ADD CALLDATALOAD PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xE9 JUMPI PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x64 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE9 JUMPI PUSH1 0x24 SWAP2 ADD ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xE9 JUMPI DUP1 CALLDATALOAD PUSH2 0xFAD PUSH2 0x2D3 DUP3 PUSH2 0x1084 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP1 DUP5 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP1 CALLDATASIZE DUP3 GT PUSH2 0xE9 JUMPI PUSH1 0x20 ADD SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0xFE7 JUMPI POP POP POP PUSH1 0x40 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 ADD PUSH2 0x2F9 JUMP JUMPDEST DUP3 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0xE9 JUMPI DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0xFCA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x40 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x68D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x40 MLOAD SWAP4 ADD AND DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x68D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x68D JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x68D JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x10EA JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1163 JUMPI POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x20 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP1 SWAP3 DUP5 ADD ADD MLOAD DUP3 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0x1124 JUMP JUMPDEST SWAP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD DUP3 LT ISZERO PUSH2 0x10EA JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D PUSH1 0x0 MSTORE PUSH1 0x3 DUP3 SWAP1 SHR PUSH32 0xC0D727610EA16241EFF4447D08BB1B4595F7D2EC4515282437A13B7D0DF4B922 ADD SWAP2 PUSH1 0x2 SHL PUSH1 0x1C AND SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x121B JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x120E JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP2 DUP3 ISZERO PUSH2 0x1367 JUMPI PUSH1 0x0 DUP1 SWAP2 PUSH2 0x12D9 PUSH2 0x1283 PUSH1 0x60 PUSH2 0x1040 JUMP JUMPDEST PUSH1 0x28 DUP2 MSTORE PUSH32 0x4C69624469616D6F6E644375743A205F696E6974206164647265737320686173 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x206E6F20636F6465000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH2 0x136C JUMP JUMPDEST DUP4 MLOAD SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 GAS DELEGATECALL SWAP2 RETURNDATASIZE ISZERO PUSH2 0x135F JUMPI RETURNDATASIZE SWAP3 PUSH2 0x12F8 PUSH2 0x2D3 DUP6 PUSH2 0x109C JUMP JUMPDEST SWAP4 DUP5 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP7 ADD RETURNDATACOPY JUMPDEST ISZERO PUSH2 0x130E JUMPI POP POP POP JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x131D JUMPI DUP3 MLOAD PUSH1 0x20 DUP5 ADD REVERT JUMPDEST PUSH2 0x734 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 PUSH32 0x192105D700000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x40 PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0x1119 JUMP JUMPDEST PUSH1 0x60 SWAP3 PUSH2 0x1304 JUMP JUMPDEST POP POP POP JUMP JUMPDEST SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0x1378 JUMPI POP POP JUMP JUMPDEST SWAP1 PUSH2 0x734 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 PUSH32 0x919834B900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x40 PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0x1119 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 CHAINID PUSH9 0x5607C50113A59FC252 POP 0xD 0xAD DUP10 BYTE EXTCODEHASH SWAP6 0xC3 BALANCE MCOPY 0x25 SWAP5 PUSH10 0xCA24E00500BBF464736F PUSH13 0x634300081B0033000000000000 ",
              "sourceMap": "143:580:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2976:30:69;143:580:53;;2962:10:69;;:44;2958:142;;143:580:53;2958:142:69;3029:60;143:580:53;3029:60:69;2962:10;143:580:53;;;;;;3029:60:69;143:580:53;;;;;;;;;;;;;;;;;2857:30:69;143:580:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2630:16:69;143:580:53;;;;2630:16:69;143:580:53;;;2630:16:69;143:580:53;2699:46:69;143:580:53;2699:46:69;;143:580:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3371:948:69;3429:12;143:580:53;;3396:31:69;;;;;143:580:53;3493:23:69;;;;:::i;:::-;;:41;;3571:23;143:580:53;3571:23:69;;;;:::i;:::-;;143:580:53;;;;;3625:29:69;3621:122;;143:580:53;3792:23:69;;;;:::i;:::-;;:30;143:580:53;;;;;;;;3840:37:69;;;4539:27;;;;4535:116;;143:580:53;4744:12:69;143:580:53;;;4774:77:69;143:580:53;;;:::i;:::-;;;;;;;;;;;;;;4774:77:69;;:::i;:::-;143:580:53;4861:594:69;4932:15;143:580:53;;4889:41:69;;;;;143:580:53;4981:33:69;;;;:::i;:::-;143:580:53;;;;;1669:45:69;143:580:53;;;;;;;;5125:128:69;;143:580:53;;;:::i;:::-;;;;;5313:61:69;143:580:53;5313:61:69;;143:580:53;;;;;;;;;1669:45:69;143:580:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4744:12:69;143:580:53;;;;;;;;;;;;;;4744:12:69;143:580:53;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4866:21:69;;143:580:53;;;;;;;;;;;;;;;;;;;;5125:128:69;5185:53;143:580:53;5185:53:69;143:580:53;;;;5185:53:69;4889:41;;;;;;;143:580:53;4889:41:69;;;;3836:473;143:580:53;3376:18:69;;;;;;4535:116;143:580:53;;4589:51:69;;;143:580:53;4589:51:69;143:580:53;;4589:51:69;;;:::i;:::-;;;;3836:473;-1:-1:-1;143:580:53;;;;3967:41:69;;143:580:53;;5629:27:69;;;5625:131;;143:580:53;;;5765:81:69;143:580:53;;;:::i;:::-;;;;;;;;;;;;;;5765:81:69;;:::i;:::-;143:580:53;;;;;5927:15:69;143:580:53;;5884:41:69;;;;;143:580:53;5976:33:69;;;;:::i;:::-;143:580:53;;;;;1669:45:69;143:580:53;;;;;;;;6258:4:69;6231:32;;6227:118;;6362:32;;;6358:144;;6519:29;6515:123;;143:580:53;;;;;1669:45:69;143:580:53;;;;;;;;;;;;;;5861:21:69;;6515:123;6575:48;143:580:53;6575:48:69;143:580:53;;;;6575:48:69;6358:144;6421:66;;143:580:53;6421:66:69;143:580:53;;;;6421:66:69;6227:118;6290:40;;143:580:53;6290:40:69;143:580:53;;;;6290:40:69;5884:41;;;;;;;143:580:53;5884:41:69;;;3836:473;;5625:131;143:580:53;;5679:66:69;;;143:580:53;5679:66:69;143:580:53;;5679:66:69;;;:::i;3963:346::-;143:580:53;;;;;;;;;4112:30:69;4102:40;;4098:211;4112:30;;;143:580:53;;6969:12:69;143:580:53;7002:27:69;;6998:115;;7127:21;143:580:53;7193:15:69;143:580:53;;7150:41:69;;;;;143:580:53;7242:33:69;;;;:::i;:::-;143:580:53;;;;;;1669:45:69;143:580:53;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;7443:61:69;7439:153;;143:580:53;;;7762:4:69;7703:64;7699:149;;143:580:53;;;;;;;;;;;;;7945:68:69;7941:411;;7193:15;143:580:53;;6969:12:69;143:580:53;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;6969:12:69;143:580:53;;;1669:45:69;143:580:53;;;;;;;;7127:21:69;;143:580:53;;;;;;;;;;7941:411:69;143:580:53;;8055:27:69;8198:139;8055:27;;:::i;:::-;143:580:53;;;;;;;;;8100:80:69;143:580:53;8100:65:69;143:580:53;;;;8100:65:69;:::i;:80::-;143:580:53;;;;;;1669:45:69;143:580:53;;;;;;;;;;;;;;;;;;;;8198:139:69;7941:411;;;;7699:149;7794:39;;143:580:53;7794:39:69;143:580:53;;;;7794:39:69;7439:153;7531:46;;143:580:53;7531:46:69;143:580:53;;;;7531:46:69;7150:41;;;;;;;;;143:580:53;7150:41:69;3836:473;;6998:115;7052:50;143:580:53;7052:50:69;143:580:53;;;;7052:50:69;4098:211;143:580:53;;;4256:38:69;;143:580:53;4256:38:69;143:580:53;;;;;4256:38:69;143:580:53;;;;;;;;;;3621:122:69;3681:47;;143:580:53;3681:47:69;143:580:53;;;;3681:47:69;3396:31;;;;143:580:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4412:9:69;143:580:53;;4333:41:69;143:580:53;;;;;;;;;;;;;;;;;;:::i;:::-;4333:41:69;;;4412:9;:::i;:::-;143:580:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;143:580:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;6969:12:69;143:580:53;;;;;;6969:12:69;-1:-1:-1;143:580:53;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;8507:734:69;;143:580:53;;;8599:19:69;;;8595:56;;8616:1;143:580:53;;8660:73:69;143:580:53;;;:::i;:::-;;;;;;;;;;;;;;8660:73:69;;:::i;:::-;8780:29;;;143:580:53;8780:29:69;;;;;;143:580:53;;;;;;;;;;:::i;:::-;;;;;8616:1:69;143:580:53;;;;;8823:8:69;8819:416;;8507:734;;;:::o;8819:416::-;143:580:53;;8851:16:69;:12;;8973:144;;143:580:53;8973:144:69;;;8847:378;143:580:53;;;9162:48:69;;;;;;;;;143:580:53;;;;;;;;;;;:::i;:::-;;;;;8595:56:69;8634:7;;;:::o;9247:320::-;;9381:71;;9465:17;9461:100;;9247:320;;:::o;9461:100::-;143:580:53;;;;;;9505:45:69;;;;;;143:580:53;9505:45:69;;;143:580:53;;;;;;;;;;;:::i"
            },
            "methodIdentifiers": {
              "contractOwner()": "ce606ee0",
              "diamondCut((address,uint8,bytes4[])[],address,bytes)": "1f931c1c",
              "enforceIsContractOwner()": "d1670914",
              "setContractOwner(address)": "a34d42b8"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_selector\",\"type\":\"bytes4\"}],\"name\":\"CannotAddFunctionToDiamondThatAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"_selectors\",\"type\":\"bytes4[]\"}],\"name\":\"CannotAddSelectorsToZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_selector\",\"type\":\"bytes4\"}],\"name\":\"CannotRemoveFunctionThatDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_selector\",\"type\":\"bytes4\"}],\"name\":\"CannotRemoveImmutableFunction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_selector\",\"type\":\"bytes4\"}],\"name\":\"CannotReplaceFunctionThatDoesNotExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_selector\",\"type\":\"bytes4\"}],\"name\":\"CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"_selectors\",\"type\":\"bytes4[]\"}],\"name\":\"CannotReplaceFunctionsFromFacetWithZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_selector\",\"type\":\"bytes4\"}],\"name\":\"CannotReplaceImmutableFunction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_action\",\"type\":\"uint8\"}],\"name\":\"IncorrectFacetCutAction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_initializationContractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"InitializationFunctionReverted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_message\",\"type\":\"string\"}],\"name\":\"NoBytecodeAtAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_facetAddress\",\"type\":\"address\"}],\"name\":\"NoSelectorsProvidedForFacetForCut\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractOwner\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_facetAddress\",\"type\":\"address\"}],\"name\":\"RemoveFacetAddressMustBeZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum IDiamond.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"indexed\":false,\"internalType\":\"struct IDiamond.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"DiamondCut\",\"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\"},{\"inputs\":[],\"name\":\"contractOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum IDiamond.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct IDiamond.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"diamondCut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enforceIsContractOwner\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"setContractOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/DiamondTestContract.sol\":\"DiamondTestContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/DiamondTestContract.sol\":{\"keccak256\":\"0x458334615fdefe82776d9b6789cd34b53ea86025f89acb6ac73a9a199863ac45\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://bfa8b3c63875236b813dd7d045289c26f94d49de02a965259156a78de54d8a02\",\"dweb:/ipfs/QmPi9d3dBLzke1c1pUXYiyNegbsFyWX4YMs5eD8WJXyY3P\"]},\"contracts/interfaces/IDiamond.sol\":{\"keccak256\":\"0xf6ea8172fc4ca7f19387dcab713a7c2d3c7453540ec8ea9bbf8fa29fce272d4b\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://57c74c3e17114c0aa5982815aab8cff5264c00317af1abe3620ee8acaca49ff9\",\"dweb:/ipfs/Qma45nAPXZU1MCDfuEBe1Fub6Qd7oumdyEqonGeqsPHXMQ\"]},\"contracts/interfaces/IDiamondCut.sol\":{\"keccak256\":\"0xe30dd72352453957dbc5d9f6b96369b1630c7abac4c2eb6fd49fc858317f99e3\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://55940b6e5e3ae666f6851b2deac40b10173a2636fcef15dbe7e44b94542e9cfa\",\"dweb:/ipfs/QmeVaPtmffSzEz3x4NgAJVjdjMTosM85JyCcX3eGF1Qpo1\"]},\"contracts/libraries/LibDiamond.sol\":{\"keccak256\":\"0xe411f7691d0554f8f01260065f249abda18eaa17697b626272c4e0554a2244b1\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://a116a9dcfd5dc8cef470e6c53c69bbaada930ebe9a7373a0a4a6c3924b77d7e8\",\"dweb:/ipfs/QmRxGt99hosAR5wxJpuTeXpyEV6DNb5fnxs76P2L2Bd34Y\"]}},\"version\":1}"
        }
      },
      "contracts/GenericToken.sol": {
        "GenericToken": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name_",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol_",
                  "type": "string"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "allowance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientAllowance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientBalance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "approver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidApprover",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidReceiver",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSender",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSpender",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "EnforcedPause",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ExpectedPause",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "OwnableInvalidOwner",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "OwnableUnauthorizedAccount",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "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": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Unpaused",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "paused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "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": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "unpause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "abi_decode_string_fromMemory": {
                  "entryPoint": 1123,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 1086,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234610439576112c5803803806100198161043e565b9283398101906040818303126104395780516001600160401b0381116104395782610045918301610463565b60208201519092906001600160401b038111610439576100659201610463565b81516001600160401b03811161034457600354600181811c9116801561042f575b602082101461032457601f81116103ca575b50602092601f8211600114610365579281929360009261035a575b50508160011b916000199060031b1c1916176003555b80516001600160401b03811161034457600454600181811c9116801561033a575b602082101461032457601f81116102bf575b50602091601f821160011461025b57918192600092610250575b50508160011b916000199060031b1c1916176004555b331561023a5760058054610100600160a81b0319811633600881811b610100600160a81b03169290921790935590919082901c6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a360ff6000911661022b5760025469d3c21bcecceda100000081018091116102175760025550336000526000602052604060002069d3c21bcecceda1000000815401905560405169d3c21bcecceda1000000815260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a3604051610df690816104cf8239f35b634e487b7160e01b82526011600452602482fd5b63d93c066560e01b8152600490fd5b631e4fbdf760e01b600052600060045260246000fd5b015190503880610116565b601f198216926004600052806000209160005b8581106102a75750836001951061028e575b505050811b0160045561012c565b015160001960f88460031b161c19169055388080610280565b9192602060018192868501518155019401920161026e565b60046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c8101916020841061031a575b601f0160051c01905b81811061030e57506100fc565b60008155600101610301565b90915081906102f8565b634e487b7160e01b600052602260045260246000fd5b90607f16906100ea565b634e487b7160e01b600052604160045260246000fd5b0151905038806100b3565b601f198216936003600052806000209160005b8681106103b25750836001959610610399575b505050811b016003556100c9565b015160001960f88460031b161c1916905538808061038b565b91926020600181928685015181550194019201610378565b60036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c81019160208410610425575b601f0160051c01905b8181106104195750610098565b6000815560010161040c565b9091508190610403565b90607f1690610086565b600080fd5b6040519190601f01601f191682016001600160401b0381118382101761034457604052565b81601f82011215610439578051906001600160401b03821161034457610492601f8301601f191660200161043e565b92828452602083830101116104395760005b8281106104b957505060206000918301015290565b806020809284010151828287010152016104a456fe608080604052600436101561001357600080fd5b60003560e01c90816306fdde03146108ed57508063095ea7b3146107fc57806318160ddd146107de57806323b872dd146107a6578063313ce5671461078a5780633f4ba83a146106ea57806340c10f19146105ef57806342966c68146105d25780635c975abb146105af57806370a0823114610568578063715018a6146104e557806379cc6790146104b35780638456cb591461043b5780638da5cb5b1461040457806395d89b4114610281578063a9059cbb14610250578063dd62ed3e146101de5763f2fde38b146100e557600080fd5b346101d95760206003193601126101d9576100fe610a14565b610106610c89565b73ffffffffffffffffffffffffffffffffffffffff81169081156101aa5773ffffffffffffffffffffffffffffffffffffffff9074ffffffffffffffffffffffffffffffffffffffff006005549160081b167fffffffffffffffffffffff0000000000000000000000000000000000000000ff82161760055560081c167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f1e4fbdf700000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b600080fd5b346101d95760406003193601126101d9576101f7610a14565b73ffffffffffffffffffffffffffffffffffffffff610214610a37565b9116600052600160205273ffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b346101d95760406003193601126101d95761027661026c610a14565b6024359033610b86565b602060405160018152f35b346101d95760006003193601126101d957604051600090600454918260011c600184169384156103fa575b6020821085146103cd578394828552908160001461038b575060011461032e575b5003601f01601f191681019067ffffffffffffffff8211818310176102ff576102fb829182604052826109ca565b0390f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6004600090815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061036f5750508101602001601f196102cd565b6020919350806001915483858801015201910190918392610359565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b84019091019150601f1990506102cd565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b90607f16906102ac565b346101d95760006003193601126101d957602073ffffffffffffffffffffffffffffffffffffffff60055460081c16604051908152f35b346101d95760006003193601126101d957610454610c89565b61045c610cdb565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060055416176005557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346101d95760406003193601126101d9576104e36104cf610a14565b602435906104de823383610a5a565b610d11565b005b346101d95760006003193601126101d9576104fe610c89565b600073ffffffffffffffffffffffffffffffffffffffff6005547fffffffffffffffffffffff0000000000000000000000000000000000000000ff811660055560081c167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101d95760206003193601126101d95773ffffffffffffffffffffffffffffffffffffffff610596610a14565b1660005260006020526020604060002054604051908152f35b346101d95760006003193601126101d957602060ff600554166040519015158152f35b346101d95760206003193601126101d9576104e360043533610d11565b346101d95760406003193601126101d957610608610a14565b73ffffffffffffffffffffffffffffffffffffffff60243591610629610cdb565b1680156106bb57610638610cdb565b6002549180830180931161068c576020926002557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600093849284845283825260408420818154019055604051908152a380f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7fec442f0500000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b346101d95760006003193601126101d957610703610c89565b60055460ff811615610760577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166005557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b7f8dfc202b0000000000000000000000000000000000000000000000000000000060005260046000fd5b346101d95760006003193601126101d957602060405160128152f35b346101d95760606003193601126101d9576102766107c2610a14565b6107ca610a37565b604435916107d9833383610a5a565b610b86565b346101d95760006003193601126101d9576020600254604051908152f35b346101d95760406003193601126101d957610815610a14565b6024359033156108be5773ffffffffffffffffffffffffffffffffffffffff1690811561088f57336000526001602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d6200000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7fe602df0500000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b346101d95760006003193601126101d957600090600354918260011c600184169384156109c0575b6020821085146103cd578394828552908160001461038b5750600114610963575003601f01601f191681019067ffffffffffffffff8211818310176102ff576102fb829182604052826109ca565b6003600090815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8183106109a45750508101602001601f196102cd565b602091935080600191548385880101520191019091839261098e565b90607f1690610915565b9190916020815282519283602083015260005b8481106109fe575050601f19601f8460006040809697860101520116010190565b80602080928401015160408286010152016109dd565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101d957565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101d957565b73ffffffffffffffffffffffffffffffffffffffff909291921691826000526001602052604060002073ffffffffffffffffffffffffffffffffffffffff8216600052602052604060002054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8410610ad5575b50505050565b828410610b3a5780156108be5773ffffffffffffffffffffffffffffffffffffffff82161561088f57600052600160205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260406000209103905538808080610acf565b5073ffffffffffffffffffffffffffffffffffffffff83917ffb8f41b2000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff16908115610c5a5773ffffffffffffffffffffffffffffffffffffffff169182156106bb57610bc8610cdb565b6000828152806020526040812054828110610c275791604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815280845220818154019055604051908152a3565b6064937fe450d38c0000000000000000000000000000000000000000000000000000000083949352600452602452604452fd5b7f96c6fd1e00000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff60055460081c163303610cad57565b7f118cdaa7000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b60ff60055416610ce757565b7fd93c06650000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff168015610c5a57610d35610cdb565b600091818352826020526040832054818110610d8e57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926020928587528684520360408620558060025403600255604051908152a3565b83927fe450d38c0000000000000000000000000000000000000000000000000000000060649552600452602452604452fdfea2646970667358221220380193a6ed82ce46847a8e57c393111db6ebba81ba53f3fad049ee8234ce4ebc64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x439 JUMPI PUSH2 0x12C5 DUP1 CODESIZE SUB DUP1 PUSH2 0x19 DUP2 PUSH2 0x43E JUMP JUMPDEST SWAP3 DUP4 CODECOPY DUP2 ADD SWAP1 PUSH1 0x40 DUP2 DUP4 SUB SLT PUSH2 0x439 JUMPI DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x439 JUMPI DUP3 PUSH2 0x45 SWAP2 DUP4 ADD PUSH2 0x463 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD SWAP1 SWAP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x439 JUMPI PUSH2 0x65 SWAP3 ADD PUSH2 0x463 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x344 JUMPI PUSH1 0x3 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x42F JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x324 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x3CA JUMPI JUMPDEST POP PUSH1 0x20 SWAP3 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x365 JUMPI SWAP3 DUP2 SWAP3 SWAP4 PUSH1 0x0 SWAP3 PUSH2 0x35A JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x3 SSTORE JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x344 JUMPI PUSH1 0x4 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x33A JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x324 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x2BF JUMPI JUMPDEST POP PUSH1 0x20 SWAP2 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x25B JUMPI SWAP2 DUP2 SWAP3 PUSH1 0x0 SWAP3 PUSH2 0x250 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x4 SSTORE JUMPDEST CALLER ISZERO PUSH2 0x23A JUMPI PUSH1 0x5 DUP1 SLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT DUP2 AND CALLER PUSH1 0x8 DUP2 DUP2 SHL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x0 DUP1 LOG3 PUSH1 0xFF PUSH1 0x0 SWAP2 AND PUSH2 0x22B JUMPI PUSH1 0x2 SLOAD PUSH10 0xD3C21BCECCEDA1000000 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x217 JUMPI PUSH1 0x2 SSTORE POP CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH10 0xD3C21BCECCEDA1000000 DUP2 SLOAD ADD SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH10 0xD3C21BCECCEDA1000000 DUP2 MSTORE PUSH1 0x0 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x20 CALLER SWAP4 LOG3 PUSH1 0x40 MLOAD PUSH2 0xDF6 SWAP1 DUP2 PUSH2 0x4CF DUP3 CODECOPY RETURN JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP3 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 DUP3 REVERT JUMPDEST PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 SWAP1 REVERT JUMPDEST PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH2 0x116 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP3 PUSH1 0x4 PUSH1 0x0 MSTORE DUP1 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT PUSH2 0x2A7 JUMPI POP DUP4 PUSH1 0x1 SWAP6 LT PUSH2 0x28E JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x4 SSTORE PUSH2 0x12C JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x280 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP6 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x26E JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP5 LT PUSH2 0x31A JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x30E JUMPI POP PUSH2 0xFC JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x301 JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x2F8 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xEA JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH2 0xB3 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP4 PUSH1 0x3 PUSH1 0x0 MSTORE DUP1 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT PUSH2 0x3B2 JUMPI POP DUP4 PUSH1 0x1 SWAP6 SWAP7 LT PUSH2 0x399 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x3 SSTORE PUSH2 0xC9 JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x38B JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP6 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x378 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP5 LT PUSH2 0x425 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x419 JUMPI POP PUSH2 0x98 JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x40C JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x86 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP4 DUP3 LT OR PUSH2 0x344 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x439 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x344 JUMPI PUSH2 0x492 PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x43E JUMP JUMPDEST SWAP3 DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x439 JUMPI PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x4B9 JUMPI POP POP PUSH1 0x20 PUSH1 0x0 SWAP2 DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP1 SWAP3 DUP5 ADD ADD MLOAD DUP3 DUP3 DUP8 ADD ADD MSTORE ADD PUSH2 0x4A4 JUMP INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x6FDDE03 EQ PUSH2 0x8ED JUMPI POP DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x7FC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x7DE JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x7A6 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x78A JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x6EA JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x5EF JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x5D2 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x5AF JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4E5 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x4B3 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x43B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x404 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1DE JUMPI PUSH4 0xF2FDE38B EQ PUSH2 0xE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0xFE PUSH2 0xA14 JUMP JUMPDEST PUSH2 0x106 PUSH2 0xC89 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1AA JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x5 SLOAD SWAP2 PUSH1 0x8 SHL AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF DUP3 AND OR PUSH1 0x5 SSTORE PUSH1 0x8 SHR AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x0 DUP1 LOG3 STOP JUMPDEST PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x1F7 PUSH2 0xA14 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x214 PUSH2 0xA37 JUMP JUMPDEST SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x276 PUSH2 0x26C PUSH2 0xA14 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER PUSH2 0xB86 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x4 SLOAD SWAP2 DUP3 PUSH1 0x1 SHR PUSH1 0x1 DUP5 AND SWAP4 DUP5 ISZERO PUSH2 0x3FA JUMPI JUMPDEST PUSH1 0x20 DUP3 LT DUP6 EQ PUSH2 0x3CD JUMPI DUP4 SWAP5 DUP3 DUP6 MSTORE SWAP1 DUP2 PUSH1 0x0 EQ PUSH2 0x38B JUMPI POP PUSH1 0x1 EQ PUSH2 0x32E JUMPI JUMPDEST POP SUB PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT DUP2 DUP4 LT OR PUSH2 0x2FF JUMPI PUSH2 0x2FB DUP3 SWAP2 DUP3 PUSH1 0x40 MSTORE DUP3 PUSH2 0x9CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP2 POP PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP2 DUP4 LT PUSH2 0x36F JUMPI POP POP DUP2 ADD PUSH1 0x20 ADD PUSH1 0x1F NOT PUSH2 0x2CD JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP DUP1 PUSH1 0x1 SWAP2 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP2 DUP4 SWAP3 PUSH2 0x359 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x20 DUP6 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 ISZERO ISZERO PUSH1 0x5 SHL DUP5 ADD SWAP1 SWAP2 ADD SWAP2 POP PUSH1 0x1F NOT SWAP1 POP PUSH2 0x2CD JUMP JUMPDEST PUSH1 0x24 DUP4 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x2AC JUMP JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x5 SLOAD PUSH1 0x8 SHR AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x454 PUSH2 0xC89 JUMP JUMPDEST PUSH2 0x45C PUSH2 0xCDB JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x5 SLOAD AND OR PUSH1 0x5 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x4E3 PUSH2 0x4CF PUSH2 0xA14 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x4DE DUP3 CALLER DUP4 PUSH2 0xA5A JUMP JUMPDEST PUSH2 0xD11 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x4FE PUSH2 0xC89 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x5 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF DUP2 AND PUSH1 0x5 SSTORE PUSH1 0x8 SHR AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 DUP3 DUP1 LOG3 STOP JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x596 PUSH2 0xA14 JUMP JUMPDEST AND PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH1 0x5 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x4E3 PUSH1 0x4 CALLDATALOAD CALLER PUSH2 0xD11 JUMP JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x608 PUSH2 0xA14 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x629 PUSH2 0xCDB JUMP JUMPDEST AND DUP1 ISZERO PUSH2 0x6BB JUMPI PUSH2 0x638 PUSH2 0xCDB JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP2 DUP1 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x68C JUMPI PUSH1 0x20 SWAP3 PUSH1 0x2 SSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x0 SWAP4 DUP5 SWAP3 DUP5 DUP5 MSTORE DUP4 DUP3 MSTORE PUSH1 0x40 DUP5 KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 DUP1 RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x703 PUSH2 0xC89 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF DUP2 AND ISZERO PUSH2 0x760 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x5 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x276 PUSH2 0x7C2 PUSH2 0xA14 JUMP JUMPDEST PUSH2 0x7CA PUSH2 0xA37 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x7D9 DUP4 CALLER DUP4 PUSH2 0xA5A JUMP JUMPDEST PUSH2 0xB86 JUMP JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH1 0x20 PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x815 PUSH2 0xA14 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER ISZERO PUSH2 0x8BE JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 ISZERO PUSH2 0x88F JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE DUP1 PUSH1 0x40 PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x20 CALLER SWAP3 LOG3 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH1 0x0 SWAP1 PUSH1 0x3 SLOAD SWAP2 DUP3 PUSH1 0x1 SHR PUSH1 0x1 DUP5 AND SWAP4 DUP5 ISZERO PUSH2 0x9C0 JUMPI JUMPDEST PUSH1 0x20 DUP3 LT DUP6 EQ PUSH2 0x3CD JUMPI DUP4 SWAP5 DUP3 DUP6 MSTORE SWAP1 DUP2 PUSH1 0x0 EQ PUSH2 0x38B JUMPI POP PUSH1 0x1 EQ PUSH2 0x963 JUMPI POP SUB PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT DUP2 DUP4 LT OR PUSH2 0x2FF JUMPI PUSH2 0x2FB DUP3 SWAP2 DUP3 PUSH1 0x40 MSTORE DUP3 PUSH2 0x9CA JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP2 POP PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B JUMPDEST DUP2 DUP4 LT PUSH2 0x9A4 JUMPI POP POP DUP2 ADD PUSH1 0x20 ADD PUSH1 0x1F NOT PUSH2 0x2CD JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP DUP1 PUSH1 0x1 SWAP2 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP2 DUP4 SWAP3 PUSH2 0x98E JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x915 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x20 DUP2 MSTORE DUP3 MLOAD SWAP3 DUP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x9FE JUMPI POP POP PUSH1 0x1F NOT PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x40 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP1 SWAP3 DUP5 ADD ADD MLOAD PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0x9DD JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1D9 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1D9 JUMPI JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 SWAP2 SWAP3 AND SWAP2 DUP3 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 LT PUSH2 0xAD5 JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST DUP3 DUP5 LT PUSH2 0xB3A JUMPI DUP1 ISZERO PUSH2 0x8BE JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x88F JUMPI PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 SUB SWAP1 SSTORE CODESIZE DUP1 DUP1 DUP1 PUSH2 0xACF JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 SWAP2 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 ISZERO PUSH2 0xC5A JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP3 ISZERO PUSH2 0x6BB JUMPI PUSH2 0xBC8 PUSH2 0xCDB JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 LT PUSH2 0xC27 JUMPI SWAP2 PUSH1 0x40 DUP3 DUP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP6 DUP8 PUSH1 0x20 SWAP7 MSTORE DUP3 DUP7 MSTORE SUB DUP3 DUP3 KECCAK256 SSTORE DUP7 DUP2 MSTORE DUP1 DUP5 MSTORE KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST PUSH1 0x64 SWAP4 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP4 SWAP5 SWAP4 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x5 SLOAD PUSH1 0x8 SHR AND CALLER SUB PUSH2 0xCAD JUMPI JUMP JUMPDEST PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xFF PUSH1 0x5 SLOAD AND PUSH2 0xCE7 JUMPI JUMP JUMPDEST PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 ISZERO PUSH2 0xC5A JUMPI PUSH2 0xD35 PUSH2 0xCDB JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP2 DUP4 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD DUP2 DUP2 LT PUSH2 0xD8E JUMPI DUP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 PUSH1 0x20 SWAP3 DUP6 DUP8 MSTORE DUP7 DUP5 MSTORE SUB PUSH1 0x40 DUP7 KECCAK256 SSTORE DUP1 PUSH1 0x2 SLOAD SUB PUSH1 0x2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST DUP4 SWAP3 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 SWAP6 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODESIZE ADD SWAP4 0xA6 0xED DUP3 0xCE CHAINID DUP5 PUSH27 0x8E57C393111DB6EBBA81BA53F3FAD049EE8234CE4EBC64736F6C63 NUMBER STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "871:1862:54:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;871:1862:54;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;871:1862:54;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;871:1862:54;;;;1648:13:5;871:1862:54;;;;;;;;;;;-1:-1:-1;871:1862:54;;;;;;;;;;;-1:-1:-1;871:1862:54;;;;;;;;;;;;;;-1:-1:-1;871:1862:54;;;;;;;;;;;;;1648:13:5;871:1862:54;;;;;1648:13:5;871:1862:54;;;;-1:-1:-1;;;;;871:1862:54;;;;1671:17:5;871:1862:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;871:1862:54;;;;;;;;;;;;;1648:13:5;871:1862:54;;;;;1671:17:5;871:1862:54;;1033:10;1273:26:0;1269:95;;3004:6;871:1862:54;;-1:-1:-1;;;;;;871:1862:54;;1033:10;871:1862;;;;-1:-1:-1;;;;;871:1862:54;;;;;;;;;;1033:10;871:1862;;;-1:-1:-1;;;;;871:1862:54;3052:40:0;-1:-1:-1;;3052:40:0;871:1862:54;-1:-1:-1;871:1862:54;;1939:61:14;;6137:21:5;871:1862:54;;;;;;;;;6137:21:5;871:1862:54;1033:10;;-1:-1:-1;871:1862:54;-1:-1:-1;871:1862:54;;;-1:-1:-1;871:1862:54;;;;;;;;;;;;-1:-1:-1;6987:25:5;871:1862:54;1033:10;6987:25:5;;871:1862:54;;;;;;;;;;-1:-1:-1;;;871:1862:54;;;1671:17:5;871:1862:54;;;;1939:61:14;-1:-1:-1;;;1974:15:14;;1671:17:5;;1974:15:14;1269:95:0;1322:31;;;-1:-1:-1;1322:31:0;-1:-1:-1;1671:17:5;871:1862:54;;-1:-1:-1;1322:31:0;871:1862:54;;;;-1:-1:-1;871:1862:54;;;;;;;;;;1671:17:5;-1:-1:-1;871:1862:54;;-1:-1:-1;871:1862:54;;-1:-1:-1;871:1862:54;;;;;;;;;;;;;;;;;;;;1671:17:5;871:1862:54;;;;;;;;;;1648:13:5;871:1862:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1671:17:5;-1:-1:-1;871:1862:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;871:1862:54;;;;;;;;;-1:-1:-1;871:1862:54;;;;;;;;-1:-1:-1;871:1862:54;;1671:17:5;871:1862:54;;-1:-1:-1;871:1862:54;;;;;;;;;;;;-1:-1:-1;871:1862:54;;1671:17:5;871:1862:54;;-1:-1:-1;871:1862:54;;;;;-1:-1:-1;871:1862:54;;;;;;;;;;1648:13:5;-1:-1:-1;871:1862:54;;-1:-1:-1;871:1862:54;;-1:-1:-1;871:1862:54;;;;;;;;;;;;;;;;;;;;;1648:13:5;871:1862:54;;;;;;;;;;1648:13:5;871:1862:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1648:13:5;-1:-1:-1;871:1862:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;871:1862:54;;;;;;;;;-1:-1:-1;871:1862:54;;;;;;;;;;;;-1:-1:-1;871:1862:54;;;;;;;;;-1:-1:-1;;871:1862:54;;;-1:-1:-1;;;;;871:1862:54;;;;;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;871:1862:54;;;;;;;;-1:-1:-1;;871:1862:54;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;871:1862:54;;;;;;;;;-1:-1:-1;871:1862:54;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "abi_decode_address": {
                  "entryPoint": 2615,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_address_7671": {
                  "entryPoint": 2580,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 2506,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "fun_burn": {
                  "entryPoint": 3345,
                  "id": 841,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_checkOwner": {
                  "entryPoint": 3209,
                  "id": 84,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "fun_requireNotPaused": {
                  "entryPoint": 3291,
                  "id": 1578,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "fun_spendAllowance": {
                  "entryPoint": 2650,
                  "id": 967,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "fun_transfer": {
                  "entryPoint": 2950,
                  "id": 698,
                  "parameterSlots": 3,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608080604052600436101561001357600080fd5b60003560e01c90816306fdde03146108ed57508063095ea7b3146107fc57806318160ddd146107de57806323b872dd146107a6578063313ce5671461078a5780633f4ba83a146106ea57806340c10f19146105ef57806342966c68146105d25780635c975abb146105af57806370a0823114610568578063715018a6146104e557806379cc6790146104b35780638456cb591461043b5780638da5cb5b1461040457806395d89b4114610281578063a9059cbb14610250578063dd62ed3e146101de5763f2fde38b146100e557600080fd5b346101d95760206003193601126101d9576100fe610a14565b610106610c89565b73ffffffffffffffffffffffffffffffffffffffff81169081156101aa5773ffffffffffffffffffffffffffffffffffffffff9074ffffffffffffffffffffffffffffffffffffffff006005549160081b167fffffffffffffffffffffff0000000000000000000000000000000000000000ff82161760055560081c167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f1e4fbdf700000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b600080fd5b346101d95760406003193601126101d9576101f7610a14565b73ffffffffffffffffffffffffffffffffffffffff610214610a37565b9116600052600160205273ffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b346101d95760406003193601126101d95761027661026c610a14565b6024359033610b86565b602060405160018152f35b346101d95760006003193601126101d957604051600090600454918260011c600184169384156103fa575b6020821085146103cd578394828552908160001461038b575060011461032e575b5003601f01601f191681019067ffffffffffffffff8211818310176102ff576102fb829182604052826109ca565b0390f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6004600090815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061036f5750508101602001601f196102cd565b6020919350806001915483858801015201910190918392610359565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b84019091019150601f1990506102cd565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b90607f16906102ac565b346101d95760006003193601126101d957602073ffffffffffffffffffffffffffffffffffffffff60055460081c16604051908152f35b346101d95760006003193601126101d957610454610c89565b61045c610cdb565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060055416176005557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346101d95760406003193601126101d9576104e36104cf610a14565b602435906104de823383610a5a565b610d11565b005b346101d95760006003193601126101d9576104fe610c89565b600073ffffffffffffffffffffffffffffffffffffffff6005547fffffffffffffffffffffff0000000000000000000000000000000000000000ff811660055560081c167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101d95760206003193601126101d95773ffffffffffffffffffffffffffffffffffffffff610596610a14565b1660005260006020526020604060002054604051908152f35b346101d95760006003193601126101d957602060ff600554166040519015158152f35b346101d95760206003193601126101d9576104e360043533610d11565b346101d95760406003193601126101d957610608610a14565b73ffffffffffffffffffffffffffffffffffffffff60243591610629610cdb565b1680156106bb57610638610cdb565b6002549180830180931161068c576020926002557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600093849284845283825260408420818154019055604051908152a380f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7fec442f0500000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b346101d95760006003193601126101d957610703610c89565b60055460ff811615610760577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166005557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b7f8dfc202b0000000000000000000000000000000000000000000000000000000060005260046000fd5b346101d95760006003193601126101d957602060405160128152f35b346101d95760606003193601126101d9576102766107c2610a14565b6107ca610a37565b604435916107d9833383610a5a565b610b86565b346101d95760006003193601126101d9576020600254604051908152f35b346101d95760406003193601126101d957610815610a14565b6024359033156108be5773ffffffffffffffffffffffffffffffffffffffff1690811561088f57336000526001602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d6200000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7fe602df0500000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b346101d95760006003193601126101d957600090600354918260011c600184169384156109c0575b6020821085146103cd578394828552908160001461038b5750600114610963575003601f01601f191681019067ffffffffffffffff8211818310176102ff576102fb829182604052826109ca565b6003600090815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8183106109a45750508101602001601f196102cd565b602091935080600191548385880101520191019091839261098e565b90607f1690610915565b9190916020815282519283602083015260005b8481106109fe575050601f19601f8460006040809697860101520116010190565b80602080928401015160408286010152016109dd565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101d957565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101d957565b73ffffffffffffffffffffffffffffffffffffffff909291921691826000526001602052604060002073ffffffffffffffffffffffffffffffffffffffff8216600052602052604060002054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8410610ad5575b50505050565b828410610b3a5780156108be5773ffffffffffffffffffffffffffffffffffffffff82161561088f57600052600160205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260406000209103905538808080610acf565b5073ffffffffffffffffffffffffffffffffffffffff83917ffb8f41b2000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff16908115610c5a5773ffffffffffffffffffffffffffffffffffffffff169182156106bb57610bc8610cdb565b6000828152806020526040812054828110610c275791604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815280845220818154019055604051908152a3565b6064937fe450d38c0000000000000000000000000000000000000000000000000000000083949352600452602452604452fd5b7f96c6fd1e00000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff60055460081c163303610cad57565b7f118cdaa7000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b60ff60055416610ce757565b7fd93c06650000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff168015610c5a57610d35610cdb565b600091818352826020526040832054818110610d8e57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926020928587528684520360408620558060025403600255604051908152a3565b83927fe450d38c0000000000000000000000000000000000000000000000000000000060649552600452602452604452fdfea2646970667358221220380193a6ed82ce46847a8e57c393111db6ebba81ba53f3fad049ee8234ce4ebc64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x6FDDE03 EQ PUSH2 0x8ED JUMPI POP DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x7FC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x7DE JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x7A6 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x78A JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x6EA JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x5EF JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x5D2 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x5AF JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4E5 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x4B3 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x43B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x404 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1DE JUMPI PUSH4 0xF2FDE38B EQ PUSH2 0xE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0xFE PUSH2 0xA14 JUMP JUMPDEST PUSH2 0x106 PUSH2 0xC89 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1AA JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x5 SLOAD SWAP2 PUSH1 0x8 SHL AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF DUP3 AND OR PUSH1 0x5 SSTORE PUSH1 0x8 SHR AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x0 DUP1 LOG3 STOP JUMPDEST PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x1F7 PUSH2 0xA14 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x214 PUSH2 0xA37 JUMP JUMPDEST SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x276 PUSH2 0x26C PUSH2 0xA14 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER PUSH2 0xB86 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x4 SLOAD SWAP2 DUP3 PUSH1 0x1 SHR PUSH1 0x1 DUP5 AND SWAP4 DUP5 ISZERO PUSH2 0x3FA JUMPI JUMPDEST PUSH1 0x20 DUP3 LT DUP6 EQ PUSH2 0x3CD JUMPI DUP4 SWAP5 DUP3 DUP6 MSTORE SWAP1 DUP2 PUSH1 0x0 EQ PUSH2 0x38B JUMPI POP PUSH1 0x1 EQ PUSH2 0x32E JUMPI JUMPDEST POP SUB PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT DUP2 DUP4 LT OR PUSH2 0x2FF JUMPI PUSH2 0x2FB DUP3 SWAP2 DUP3 PUSH1 0x40 MSTORE DUP3 PUSH2 0x9CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP2 POP PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP2 DUP4 LT PUSH2 0x36F JUMPI POP POP DUP2 ADD PUSH1 0x20 ADD PUSH1 0x1F NOT PUSH2 0x2CD JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP DUP1 PUSH1 0x1 SWAP2 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP2 DUP4 SWAP3 PUSH2 0x359 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x20 DUP6 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 ISZERO ISZERO PUSH1 0x5 SHL DUP5 ADD SWAP1 SWAP2 ADD SWAP2 POP PUSH1 0x1F NOT SWAP1 POP PUSH2 0x2CD JUMP JUMPDEST PUSH1 0x24 DUP4 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x2AC JUMP JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x5 SLOAD PUSH1 0x8 SHR AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x454 PUSH2 0xC89 JUMP JUMPDEST PUSH2 0x45C PUSH2 0xCDB JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x5 SLOAD AND OR PUSH1 0x5 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x4E3 PUSH2 0x4CF PUSH2 0xA14 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x4DE DUP3 CALLER DUP4 PUSH2 0xA5A JUMP JUMPDEST PUSH2 0xD11 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x4FE PUSH2 0xC89 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x5 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF DUP2 AND PUSH1 0x5 SSTORE PUSH1 0x8 SHR AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 DUP3 DUP1 LOG3 STOP JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x596 PUSH2 0xA14 JUMP JUMPDEST AND PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH1 0x5 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x4E3 PUSH1 0x4 CALLDATALOAD CALLER PUSH2 0xD11 JUMP JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x608 PUSH2 0xA14 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x629 PUSH2 0xCDB JUMP JUMPDEST AND DUP1 ISZERO PUSH2 0x6BB JUMPI PUSH2 0x638 PUSH2 0xCDB JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP2 DUP1 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x68C JUMPI PUSH1 0x20 SWAP3 PUSH1 0x2 SSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x0 SWAP4 DUP5 SWAP3 DUP5 DUP5 MSTORE DUP4 DUP3 MSTORE PUSH1 0x40 DUP5 KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 DUP1 RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x703 PUSH2 0xC89 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF DUP2 AND ISZERO PUSH2 0x760 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x5 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x276 PUSH2 0x7C2 PUSH2 0xA14 JUMP JUMPDEST PUSH2 0x7CA PUSH2 0xA37 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x7D9 DUP4 CALLER DUP4 PUSH2 0xA5A JUMP JUMPDEST PUSH2 0xB86 JUMP JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH1 0x20 PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH2 0x815 PUSH2 0xA14 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER ISZERO PUSH2 0x8BE JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 ISZERO PUSH2 0x88F JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE DUP1 PUSH1 0x40 PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x20 CALLER SWAP3 LOG3 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x1D9 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1D9 JUMPI PUSH1 0x0 SWAP1 PUSH1 0x3 SLOAD SWAP2 DUP3 PUSH1 0x1 SHR PUSH1 0x1 DUP5 AND SWAP4 DUP5 ISZERO PUSH2 0x9C0 JUMPI JUMPDEST PUSH1 0x20 DUP3 LT DUP6 EQ PUSH2 0x3CD JUMPI DUP4 SWAP5 DUP3 DUP6 MSTORE SWAP1 DUP2 PUSH1 0x0 EQ PUSH2 0x38B JUMPI POP PUSH1 0x1 EQ PUSH2 0x963 JUMPI POP SUB PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT DUP2 DUP4 LT OR PUSH2 0x2FF JUMPI PUSH2 0x2FB DUP3 SWAP2 DUP3 PUSH1 0x40 MSTORE DUP3 PUSH2 0x9CA JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP2 POP PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B JUMPDEST DUP2 DUP4 LT PUSH2 0x9A4 JUMPI POP POP DUP2 ADD PUSH1 0x20 ADD PUSH1 0x1F NOT PUSH2 0x2CD JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP DUP1 PUSH1 0x1 SWAP2 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP2 DUP4 SWAP3 PUSH2 0x98E JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x915 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x20 DUP2 MSTORE DUP3 MLOAD SWAP3 DUP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x9FE JUMPI POP POP PUSH1 0x1F NOT PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x40 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP1 SWAP3 DUP5 ADD ADD MLOAD PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0x9DD JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1D9 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1D9 JUMPI JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 SWAP2 SWAP3 AND SWAP2 DUP3 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 LT PUSH2 0xAD5 JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST DUP3 DUP5 LT PUSH2 0xB3A JUMPI DUP1 ISZERO PUSH2 0x8BE JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x88F JUMPI PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 SUB SWAP1 SSTORE CODESIZE DUP1 DUP1 DUP1 PUSH2 0xACF JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 SWAP2 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 ISZERO PUSH2 0xC5A JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP3 ISZERO PUSH2 0x6BB JUMPI PUSH2 0xBC8 PUSH2 0xCDB JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 LT PUSH2 0xC27 JUMPI SWAP2 PUSH1 0x40 DUP3 DUP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP6 DUP8 PUSH1 0x20 SWAP7 MSTORE DUP3 DUP7 MSTORE SUB DUP3 DUP3 KECCAK256 SSTORE DUP7 DUP2 MSTORE DUP1 DUP5 MSTORE KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST PUSH1 0x64 SWAP4 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP4 SWAP5 SWAP4 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x5 SLOAD PUSH1 0x8 SHR AND CALLER SUB PUSH2 0xCAD JUMPI JUMP JUMPDEST PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xFF PUSH1 0x5 SLOAD AND PUSH2 0xCE7 JUMPI JUMP JUMPDEST PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 ISZERO PUSH2 0xC5A JUMPI PUSH2 0xD35 PUSH2 0xCDB JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP2 DUP4 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD DUP2 DUP2 LT PUSH2 0xD8E JUMPI DUP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 PUSH1 0x20 SWAP3 DUP6 DUP8 MSTORE DUP7 DUP5 MSTORE SUB PUSH1 0x40 DUP7 KECCAK256 SSTORE DUP1 PUSH1 0x2 SLOAD SUB PUSH1 0x2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST DUP4 SWAP3 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 SWAP6 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODESIZE ADD SWAP4 0xA6 0xED DUP3 0xCE CHAINID DUP5 PUSH27 0x8E57C393111DB6EBBA81BA53F3FAD049EE8234CE4EBC64736F6C63 NUMBER STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "871:1862:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;871:1862:54;;;;;;;:::i;:::-;1500:62:0;;:::i;:::-;871:1862:54;;;2627:22:0;;;2623:91;;871:1862:54;;;3004:6:0;871:1862:54;;;;;;;;;3004:6:0;871:1862:54;;;;3052:40:0;871:1862:54;3052:40:0;;871:1862:54;2623:91:0;2672:31;871:1862:54;2672:31:0;871:1862:54;;;;;2672:31:0;871:1862:54;;;;;;;;;-1:-1:-1;;871:1862:54;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;3561:11:5;871:1862:54;;;;;;3561:27:5;871:1862:54;-1:-1:-1;871:1862:54;;;;;-1:-1:-1;871:1862:54;;;;;;;;;;;;;-1:-1:-1;;871:1862:54;;;;;3388:5:5;871:1862:54;;:::i;:::-;;;735:10:11;;3388:5:5;:::i;:::-;871:1862:54;;;;;;;;;;;;-1:-1:-1;;871:1862:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;871:1862:54;;;-1:-1:-1;;871:1862:54;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;871:1862:54;;;;;;;-1:-1:-1;;871:1862:54;;;;-1:-1:-1;;871:1862:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;871:1862:54;-1:-1:-1;871:1862:54;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;871:1862:54;;;;;;;1710:6:0;871:1862:54;;;;;;;;;;;;;;;-1:-1:-1;;871:1862:54;;;;;1500:62:0;;:::i;:::-;1315:72:14;;:::i;:::-;2408:4;871:1862:54;2398:14:14;871:1862:54;;;2398:14:14;871:1862:54;2427:20:14;871:1862:54;;;735:10:11;871:1862:54;;2427:20:14;871:1862:54;;;;;;-1:-1:-1;;871:1862:54;;;;;1166:5:7;871:1862:54;;:::i;:::-;;;735:10:11;1135:5:7;735:10:11;;1135:5:7;;:::i;:::-;1166;:::i;:::-;871:1862:54;;;;;;-1:-1:-1;;871:1862:54;;;;;1500:62:0;;:::i;:::-;871:1862:54;;3004:6:0;871:1862:54;;;;3004:6:0;871:1862:54;;;;3052:40:0;;;;871:1862:54;;;;;;-1:-1:-1;;871:1862:54;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;871:1862:54;;;;;;;1796:7:14;871:1862:54;;;;;;;;;;;;;;;-1:-1:-1;;871:1862:54;;;;;1752:6;871:1862;;735:10:11;1752:6:54;:::i;871:1862::-;;;;;-1:-1:-1;;871:1862:54;;;;;;;:::i;:::-;;;;1315:72:14;;;:::i;:::-;871:1862:54;7432:21:5;;7428:91;;1315:72:14;;:::i;:::-;6137:21:5;871:1862:54;;;;;;;;;;;;6137:21:5;871:1862:54;6987:25:5;871:1862:54;;;;;;;;;;;;;;;;;;;;;;;;6987:25:5;871:1862:54;;;;;;;;;;;;7428:91:5;7476:32;871:1862:54;7476:32:5;871:1862:54;;;;;7476:32:5;871:1862:54;;;;;-1:-1:-1;;871:1862:54;;;;;1500:62:0;;:::i;:::-;1796:7:14;871:1862:54;;;;2140:9:14;2136:62;;871:1862:54;;1796:7:14;871:1862:54;2674:22:14;871:1862:54;;;735:10:11;871:1862:54;;2674:22:14;871:1862:54;2136:62:14;2172:15;871:1862:54;2172:15:14;871:1862:54;;2172:15:14;871:1862:54;;;;;-1:-1:-1;;871:1862:54;;;;;;;;2761:2:5;871:1862:54;;;;;;;;-1:-1:-1;;871:1862:54;;;;;4890:5:5;871:1862:54;;:::i;:::-;;;:::i;:::-;;;735:10:11;4854:5:5;735:10:11;;4854:5:5;;:::i;:::-;4890;:::i;871:1862:54:-;;;;;-1:-1:-1;;871:1862:54;;;;;;2881:12:5;871:1862:54;;;;;;;;;;;;-1:-1:-1;;871:1862:54;;;;;;;:::i;:::-;;;735:10:11;;9717:19:5;9713:89;;871:1862:54;;9815:21:5;;;9811:90;;735:10:11;871:1862:54;;;;;;;;;-1:-1:-1;871:1862:54;;;;;-1:-1:-1;871:1862:54;;;;;;;9989:31:5;871:1862:54;735:10:11;9989:31:5;;871:1862:54;;;;;;;9811:90:5;9859:31;871:1862:54;9859:31:5;871:1862:54;;;;;9859:31:5;9713:89;9759:32;871:1862:54;9759:32:5;871:1862:54;;;;;9759:32:5;871:1862:54;;;;;-1:-1:-1;;871:1862:54;;;;;;;1837:5:5;871:1862:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;871:1862:54;;;-1:-1:-1;;871:1862:54;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1837:5:5;871:1862:54;;;;;-1:-1:-1;871:1862:54;;;;;;;-1:-1:-1;;871:1862:54;;;;-1:-1:-1;;871:1862:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;871:1862:54;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;10319:476:5:-;871:1862:54;10319:476:5;;;;871:1862:54;;;-1:-1:-1;871:1862:54;3561:11:5;871:1862:54;;;-1:-1:-1;871:1862:54;;;;-1:-1:-1;871:1862:54;;;;-1:-1:-1;871:1862:54;;10484:36:5;10503:17;10484:36;;10480:309;;10319:476;;;;;:::o;10480:309::-;10540:24;;;10536:130;;9717:19;;9713:89;;871:1862:54;;;9815:21:5;9811:90;;-1:-1:-1;871:1862:54;3561:11:5;871:1862:54;;;;-1:-1:-1;871:1862:54;9910:27:5;871:1862:54;-1:-1:-1;871:1862:54;;;;-1:-1:-1;871:1862:54;;;;;10480:309:5;;;;;;10536:130;10591:60;871:1862:54;10591:60:5;;;-1:-1:-1;10591:60:5;871:1862:54;10591:60:5;871:1862:54;;;;;;-1:-1:-1;10591:60:5;5297:300;871:1862:54;;5380:18:5;;;5376:86;;871:1862:54;;5475:16:5;;;5471:86;;1315:72:14;;:::i;:::-;5396:1:5;871:1862:54;;;;;;;;;;6244:19:5;;;6240:115;;871:1862:54;;;;6987:25:5;871:1862:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6987:25:5;5297:300::o;6240:115::-;871:1862:54;6290:50:5;;;;;;;871:1862:54;;;;;6290:50:5;5376:86;5421:30;5396:1;5421:30;5396:1;5421:30;871:1862:54;;5396:1:5;5421:30;1796:162:0;871:1862:54;1710:6:0;871:1862:54;;;;735:10:11;1855:23:0;1851:101;;1796:162::o;1851:101::-;1901:40;-1:-1:-1;1901:40:0;735:10:11;1901:40:0;871:1862:54;;-1:-1:-1;1901:40:0;1878:128:14;871:1862:54;1796:7:14;871:1862:54;;1939:61:14;;1878:128::o;1939:61::-;1974:15;-1:-1:-1;1974:15:14;;-1:-1:-1;1974:15:14;7888:206:5;871:1862:54;;7958:21:5;;7954:89;;1315:72:14;;:::i;:::-;7977:1:5;871:1862:54;;;;;;;;;;;6244:19:5;;;6240:115;;871:1862:54;6987:25:5;871:1862:54;;;;;;;;;;;;;;;6714:21:5;871:1862:54;;6714:21:5;871:1862:54;;;;;;6987:25:5;7888:206::o;6240:115::-;6290:50;;;871:1862:54;6290:50:5;;;871:1862:54;;;;;6290:50:5"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "burn(uint256)": "42966c68",
              "burnFrom(address,uint256)": "79cc6790",
              "decimals()": "313ce567",
              "mint(address,uint256)": "40c10f19",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "paused()": "5c975abb",
              "renounceOwnership()": "715018a6",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "unpause()": "3f4ba83a"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"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\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, reducing the total supply. Emits a Transfer event with `to` set to the zero address. Requirements: - `account` cannot be the zero address. - `account` must have at least `amount` tokens.\",\"params\":{\"amount\":\"The amount of tokens to burn from the sender of the transaction, denominated by the decimals() function\"}},\"burnFrom(address,uint256)\":{\"details\":\"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause()\":{\"details\":\"Pauses all token transfers.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpause()\":{\"details\":\"Unpauses all token transfers.\"}},\"title\":\"GenericToken\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"pause()\":{\"notice\":\"This function can only be called by the contract owner.\"},\"unpause()\":{\"notice\":\"This function can only be called by the contract owner.\"}},\"notice\":\"This contract is a generic token adhering to the ERC20 standard,  using the OpenZeppelin template libary for battletested functionality.  It incorporates the standard ERC20 functions, enhanced with Minting  and Burning, Pausable in case of emergencies and AccessControl for locking  down the administrative functions.  For demonstrative purposes, 1 million GT tokens are pre-mined to the address  deploying this contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/GenericToken.sol\":\"GenericToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol\":{\"keccak256\":\"0x2659248df25e34000ed214b3dc8da2160bc39874c992b477d9e2b1b3283dc073\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c345af1b0e7ea28d1216d6a04ab28f5534a5229b9edf9ca3cd0e84950ae58d26\",\"dweb:/ipfs/QmY63jtSrYpLRe8Gj1ep2vMDCKxGNNG3hnNVKBVnrs2nmA\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol\":{\"keccak256\":\"0x756aee61d83960d324973de3a64920a02b480efe662b611fb05ea506d844aa55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dfb71ab2f5fcc530226a25bba4d808f4d22a7f383cae4a3be3629ec057b276c\",\"dweb:/ipfs/QmRzyetUjbr9Gx1pcXYSsE5rz4XypfEbZgmBvZKUNUJQLR\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdb484371dfbb848cb6f5d70464e9ac9b2900e4164ead76bbce4fef0b44bcc68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9d6f6f6600a2bec622f699081b58350873b5e63ce05464d17d674a290bb8a7c\",\"dweb:/ipfs/QmQKVzSQY1PM3Bid4QhgVVZyx6B4Jx7XgaQzLKHj38vJz8\"]},\"contracts/GenericToken.sol\":{\"keccak256\":\"0xc6ce45fb65f5e74f887c437b33d6b86348b20bf3a108346628bf30d6aa791e57\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://355dc3cec66bf23453a8f703833103480b73717be2a1ed39065c2e897be54786\",\"dweb:/ipfs/QmaN7FGBpPPyHRctyXDpSUtMYA6GQjkjNpx2E1n6jrGbEz\"]}},\"version\":1}"
        }
      },
      "contracts/facets/BondFacet.sol": {
        "BondFacet": {
          "abi": [
            {
              "inputs": [],
              "name": "BondAlreadyInitialized",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "BondAlreadyIssued",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "BondHasNotBeenIssued",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "CampaignAlreadyPaused",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "CampaignIsClosed",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "CampaignIsPaused",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "CampaignNotPaused",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "CannotReserveAfterCampaignEnd",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "CannotReserveBeforeSignupDate",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "CapitalAmortizationFreePeriodDurationIsNotAMultpleOfThree",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "CapitalAmortizationFreePeriodDurationIsNotAMultpleOfTwelve",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "DivideByZero",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "DurationIsNotAMultpleOfThree",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "DurationIsNotAMultpleOfTwelve",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ExceedingMaxAmountPerInvestor",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "GracePeriodDurationIsNotAMultpleOfThree",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "GracePeriodDurationIsNotAMultpleOfTwelve",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoMoreBondsToBuy",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OldAccountDoesNotHaveEnoughBonds",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "x",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "y",
                  "type": "uint256"
                }
              ],
              "name": "PRBMath_MulDiv18_Overflow",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "x",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "y",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "denominator",
                  "type": "uint256"
                }
              ],
              "name": "PRBMath_MulDiv_Overflow",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "UD60x18",
                  "name": "x",
                  "type": "uint256"
                }
              ],
              "name": "PRBMath_UD60x18_Exp2_InputTooBig",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "UD60x18",
                  "name": "x",
                  "type": "uint256"
                }
              ],
              "name": "PRBMath_UD60x18_Log_InputTooSmall",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "balloonRateNum",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "balloonRateDen",
                  "type": "uint256"
                }
              ],
              "name": "BalloonRateSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "coupure",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestNum",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestDen",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "withholdingTaxNum",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "withholdingTaxDen",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "issuer",
                  "type": "address"
                }
              ],
              "name": "BondInitializedPart1",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "periodicInterestRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "netReturn",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "periodicity",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "methodOfRepayment",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maxSupply",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "formOfFinancing",
                  "type": "uint256"
                }
              ],
              "name": "BondInitializedPart2",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "timestamp",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "issuedAmount",
                  "type": "uint256"
                }
              ],
              "name": "BondIssued",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "coupure",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestNum",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestDen",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "withholdingTaxNum",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "withholdingTaxDen",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "issuer",
                  "type": "address"
                }
              ],
              "name": "BondParametersEditedPart1",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "periodicInterestRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "netReturn",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "periodicity",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "methodOfRepayment",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maxSupply",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "formOfFinancing",
                  "type": "uint256"
                }
              ],
              "name": "BondParametersEditedPart2",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "bondTransferId",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "oldAccount",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAccount",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BondTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "bondPurchaseId",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "holder",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BondsWithdrawn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                }
              ],
              "name": "CampaignPaused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "startDate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "endDate",
                  "type": "uint256"
                }
              ],
              "name": "CampaignStartAndEndDateSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                }
              ],
              "name": "CampaignUnpaused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "capitalAmortizationFreePeriodDuration",
                  "type": "uint256"
                }
              ],
              "name": "CapitalAmortizationFreePeriodSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "capitalClaimId",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "capitalAmount",
                  "type": "uint256"
                }
              ],
              "name": "CapitalClaimAmountSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "couponDates",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "remainingCapital",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "capitalRepayments",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "grossCouponRates",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "netCouponRates",
                  "type": "uint256[]"
                }
              ],
              "name": "CouponsComputed",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "gracePeriodDuration",
                  "type": "uint256"
                }
              ],
              "name": "GracePeriodSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "investorsCount",
                  "type": "uint256"
                }
              ],
              "name": "InvestorsCountChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "issueDate",
                  "type": "uint256"
                }
              ],
              "name": "IssueDateSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "minAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maxAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maxAmountPerInvestor",
                  "type": "uint256"
                }
              ],
              "name": "MinAndMaxAmountSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "periodicInterest",
                  "type": "uint256"
                }
              ],
              "name": "PeriodicInterestRateSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "reservedAmount",
                  "type": "uint256"
                }
              ],
              "name": "ReservedAmountChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "revocationsCount",
                  "type": "uint256"
                }
              ],
              "name": "RevocationsCountChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "__bondId",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__campaignMinAmount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__campaignMaxAmount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__campaignStartDate",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__expectedIssueDate",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__coupure",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__interestNum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__interestDen",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__withholdingTaxNum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__withholdingTaxDen",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__balloonRateNum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__balloonRateDen",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__duration",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__capitalAmortizationDuration",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__gracePeriodDuration",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__maxAmountPerInvestor",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__periodicity",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__formOfFinancing",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__methodOfRepayment",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address",
                      "name": "__issuer",
                      "type": "address"
                    }
                  ],
                  "internalType": "struct BondInitParams.BondInit",
                  "name": "bi",
                  "type": "tuple"
                }
              ],
              "name": "editBondParameters",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSelectors",
              "outputs": [
                {
                  "internalType": "bytes4[]",
                  "name": "",
                  "type": "bytes4[]"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSelectorsOwnership",
              "outputs": [
                {
                  "internalType": "bytes4[]",
                  "name": "",
                  "type": "bytes4[]"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "__bondId",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__campaignMinAmount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__campaignMaxAmount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__campaignStartDate",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__expectedIssueDate",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__coupure",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__interestNum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__interestDen",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__withholdingTaxNum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__withholdingTaxDen",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__balloonRateNum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__balloonRateDen",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__duration",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__capitalAmortizationDuration",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__gracePeriodDuration",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__maxAmountPerInvestor",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__periodicity",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__formOfFinancing",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "__methodOfRepayment",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address",
                      "name": "__issuer",
                      "type": "address"
                    }
                  ],
                  "internalType": "struct BondInitParams.BondInit",
                  "name": "bi",
                  "type": "tuple"
                }
              ],
              "name": "initializeBond",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "initializeOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_issueDate",
                  "type": "uint256"
                }
              ],
              "name": "issueBond",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                }
              ],
              "name": "pauseCampaign",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "_bondPurchaseId",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_buyer",
                  "type": "address"
                }
              ],
              "name": "rescindReservation",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "_bondPurchaseId",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_bondAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_buyer",
                  "type": "address"
                }
              ],
              "name": "reserve",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_balloonRateNum",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_balloonRateDen",
                  "type": "uint256"
                }
              ],
              "name": "setBalloonRate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "setCapitalAmortizationFreeDuration",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_currencyAddress",
                  "type": "address"
                }
              ],
              "name": "setCurrencyAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "setGracePeriodDuration",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "_bondTransferId",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_old",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_new",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "transferBond",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                }
              ],
              "name": "unpauseCampaign",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "_bondPurchaseId",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "holder",
                  "type": "address"
                }
              ],
              "name": "withdrawBondsPurchased",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601557615061908161001b8239f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816301ffc9a714611fd25750806325830db314611d225780632dcb118e14611ce457806343a19a6514611c125780634b503f0b146118f757806360332e891461170457806368aea41b14611686578063796b89ec1461162a5780638c5f36bb146114f65780638da5cb5b146114a35780638dea1f4714611071578063906b131a14610d435780639226537e14610ae8578063b410500414610a29578063bc197c8114610975578063de99347a14610876578063e3adc7ee14610511578063ee5b280a146104c3578063f23a6e611461044f578063f2fde38b146103125763f844a31c1461010857600080fd5b3461030f57610116366121ca565b61015873ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416331461249e565b61016182612669565b9160016018840155601b830160ff815460201c166102e757610183838361326e565b61018c82613751565b5050506401000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff8254161790556025830163010000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff825416179055836017601185015494019380855573ffffffffffffffffffffffffffffffffffffffff825416803b156102e3576040517f731133e900000000000000000000000000000000000000000000000000000000815230600482015260248101859052604481019290925260806064830152600060848301528290829060a490829084905af180156102d8576102bf575b50509154604080519384526020840192909252908201527fb5c3204064d2ac62821e92f17e7e2c1e9971c89f07fa01b6dab37145db86dc559080606081015b0390a180f35b816102c991612072565b6102d457833861027a565b8380fd5b6040513d84823e3d90fd5b8280fd5b6004857fdecaae02000000000000000000000000000000000000000000000000000000008152fd5b80fd5b503461030f57602060031936011261030f5761032c61210e565b7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c549073ffffffffffffffffffffffffffffffffffffffff8083163314916103738361249e565b169182156103cc576103a57fffffffffffffffffffffffff00000000000000000000000000000000000000009261249e565b16177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5580f35b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b503461030f5760a060031936011261030f5761046961210e565b50610472612154565b5060843567ffffffffffffffff81116104bf57610493903690600401612385565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b5080fd5b503461030f577f8a7a5c9c34210b39b0dd6c746e4824f7af2a84c059d4dcbc168a2036d26df99060406104f5366121ca565b80600f61050184612669565b015582519182526020820152a180f35b503461030f5761052036612177565b919061052b81612669565b9260ff601b85015460201c161561084e5761054960248501846123d6565b5490610559600586015483612529565b6001546040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301523060248301529091169190602081604481865afa908115610843578991610808575b5090610650926105d582602094101561253c565b73ffffffffffffffffffffffffffffffffffffffff60268a0154168a6040518096819582947f23b872dd0000000000000000000000000000000000000000000000000000000084528a6004850173ffffffffffffffffffffffffffffffffffffffff6040929594938160608401971683521660208201520152565b03925af180156107fd5761066b9188916107ce575b506125df565b8573ffffffffffffffffffffffffffffffffffffffff815416803b156104bf578160405180927f731133e90000000000000000000000000000000000000000000000000000000082528183816106fa8a8c8b600485019173ffffffffffffffffffffffffffffffffffffffff60a094921683526020830152604082015260806060820152600060808201520190565b03925af180156102d8576107ad575b507f99c110e7b335cff55cab2cfe92e319ad78396f17234debbb5860886aa0244cca61079686868673ffffffffffffffffffffffffffffffffffffffff8760228d83831660005201602052604060002060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055604051958695608087526080870190612644565b93602086015216604084015260608301520390a180f35b816107bc919695949396612072565b6107ca579091928538610709565b8580fd5b6107f0915060203d6020116107f6575b6107e88183612072565b8101906125c7565b38610665565b503d6107de565b6040513d89823e3d90fd5b9190506020823d60201161083b575b8161082460209383612072565b810103126108365790516106506105c1565b600080fd5b3d9150610817565b6040513d8b823e3d90fd5b6004857fc4d56880000000000000000000000000000000000000000000000000000000008152fd5b503461030f57602060031936011261030f5760043561089481612669565b601b81019081549060ff8260181c1661094d57600281015442119081159161093d575b50610915577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1663010000001790556040519081527fab1902ee37c92d1a78dda53814d64b815e7e3ee287d60843a3dbd6954e3206b490602090a180f35b6004847febd7e129000000000000000000000000000000000000000000000000000000008152fd5b90506003429101541115386108b7565b6004857f5cebfd4a000000000000000000000000000000000000000000000000000000008152fd5b503461030f5760a060031936011261030f5761098f61210e565b50610998612154565b5060443567ffffffffffffffff81116104bf576109b9903690600401612354565b505060643567ffffffffffffffff81116104bf576109db903690600401612354565b505060843567ffffffffffffffff81116104bf576109fd903690600401612385565b505060206040517fbc197c81000000000000000000000000000000000000000000000000000000008152f35b503461030f578060031936011261030f57610ae4604051610a4b608082612072565b6003815260603660208301377f8da5cb5b00000000000000000000000000000000000000000000000000000000610a818261243b565b527ff2fde38b00000000000000000000000000000000000000000000000000000000610aac8261245e565b527f8c5f36bb00000000000000000000000000000000000000000000000000000000610ad78261246e565b52604051918291826121e0565b0390f35b503461030f57610af73661223c565b610b018151612669565b60ff601b82015460201c16610d1b57907f182cb671939e46d1345c30b51134e41ef7782a2113747a93b4dc3c31b91ea81e610d1592610b3f8361284a565b825160028201546003830154604080519384526020840192909252908201527f05b741eb5649daedcc851ef6f057b1bf89b49d12357d31c478c425b6eb1ce9c590606090a182518154600183015460128401546040805194855260208501939093529183015260608201527f1ada3075f8dc673c9de9ba7c0b8e81065d996d1faa99feb6d0a648c8b7a1516d90608090a17fc64d8be5e3585a2141489e772ad1096418b37137a76298a309a5f1095f95f1ca835160a085015190610c7d60c087015160e08801516101008901516101208a01519173ffffffffffffffffffffffffffffffffffffffff6102608c015116936040519788978895919360c0959198979373ffffffffffffffffffffffffffffffffffffffff9560e089019a8952602089015260408801526060870152608086015260a085015216910152565b0390a18251610cfc6008830154926007810154906102008701516101808801516102408901519160ff6025601086015495015460081c1694610cbe8661247e565b6040519889988994919260e0969399989794919961010087019a8752602087015260408601526060850152608084015260a083015260c08201520152565b0390a1610d0f815160808301519061326e565b51613751565b50505080f35b6004837fdecaae02000000000000000000000000000000000000000000000000000000008152fd5b503461030f57608060031936011261030f5760043567ffffffffffffffff81116104bf57610d759036906004016120c7565b9060243560443592610d85612131565b9260ff601b610d9385612669565b015460181c1661104957610da683612669565b9060108201549460118301968754968780821160001461104057610dc991612421565b905b818111156110385750955b600284015442106110105760038401544211610fe8578615610fc057602384019273ffffffffffffffffffffffffffffffffffffffff831660005283602052610e248860406000205461242e565b601286015410610f985773ffffffffffffffffffffffffffffffffffffffff83166000528360205260406000205415610edd575b5060409460247f83518b027c8ada9071fa7643b5352e180e42cf5a021d61294e5880408643c97f979560209a9573ffffffffffffffffffffffffffffffffffffffff8b96610ea988610ec99861242e565b8955166000528b5287600020610ec086825461242e565b905501906123d6565b5554825191825285820152a1604051908152f35b6014850180549160018301809311610f845750879560209a9573ffffffffffffffffffffffffffffffffffffffff8b96610ea988610ec9987ff865af89149aa92dd957b447226842542090f013d1c80f4f66f6eb3ea79f8e917f83518b027c8ada9071fa7643b5352e180e42cf5a021d61294e5880408643c97f9f60409f9a906040918060249c5582519182526020820152a198505050965050959a509597505094610e58565b80634e487b7160e01b602492526011600452fd5b807f2b42b1220000000000000000000000000000000000000000000000000000000060049252fd5b6004837f7eec29e0000000000000000000000000000000000000000000000000000000008152fd5b6004837f0c32ed70000000000000000000000000000000000000000000000000000000008152fd5b6004837ff2b4a12c000000000000000000000000000000000000000000000000000000008152fd5b905095610dd6565b50508290610dcb565b807fa6a992df0000000000000000000000000000000000000000000000000000000060049252fd5b503461030f5760a060031936011261030f5760043567ffffffffffffffff81116104bf576110a39036906004016120c7565b60243560443573ffffffffffffffffffffffffffffffffffffffff811680820361149f576110cf612131565b906084359261111673ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416331461249e565b61111f85612669565b60ff601b82015460201c1615611477576044602073ffffffffffffffffffffffffffffffffffffffff8a5416604051928380927efdd58e0000000000000000000000000000000000000000000000000000000082528860048301528b60248301525afa80156108435786918a9161143e575b50106114165760056111a591015485612529565b6001546040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015230602483015290911690602081604481855afa90811561140b578a916113cd575b5090611281936112218460209594101561253c565b8a6040518096819582947f23b872dd0000000000000000000000000000000000000000000000000000000084528b6004850173ffffffffffffffffffffffffffffffffffffffff6040929594938160608401971683521660208201520152565b03925af180156107fd5761129b9188916107ce57506125df565b8573ffffffffffffffffffffffffffffffffffffffff81541692833b156104bf5773ffffffffffffffffffffffffffffffffffffffff60c4839260405194859384927ff242432a00000000000000000000000000000000000000000000000000000000845288600485015216978860248401528a604484015289606484015260a060848401528160a48401525af180156107fd5761138d575b509161137293917f38db1382a58023a1d5d8aaab1581199c9b7d9ed33223c18beeaab57924aff20f959360405195869560a0875260a0870190612644565b9360208601526040850152606084015260808301520390a180f35b91866113c17f38db1382a58023a1d5d8aaab1581199c9b7d9ed33223c18beeaab57924aff20f979593986113729795612072565b96919395509193611334565b929190506020833d602011611403575b816113ea60209383612072565b810103126113ff57915190919061128161120c565b8980fd5b3d91506113dd565b6040513d8c823e3d90fd5b6004887f91df618a000000000000000000000000000000000000000000000000000000008152fd5b9150506020813d60201161146f575b8161145a60209383612072565b8101031261146b5785905138611191565b8880fd5b3d915061144d565b6004887fc4d56880000000000000000000000000000000000000000000000000000000008152fd5b8480fd5b503461030f578060031936011261030f57602073ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416604051908152f35b503461030f57602060031936011261030f5761151061210e565b73ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c54166115cc5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000007f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5580f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f776e657220616c7265616479207365740000000000000000000000000000006044820152fd5b503461030f57602060031936011261030f5773ffffffffffffffffffffffffffffffffffffffff61165961210e565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600154161760015580f35b503461030f57606060031936011261030f577f9cc9725ee02d8f0a4d8b30054405939f4d872cc6a5c2d677e02f5bd87e5dea2a6024356004356102b96044356116ce83612669565b600a670de0b6b3a76400006116e3848861445a565b04910155604051938493846040919493926060820195825260208201520152565b503461030f576117133661223c565b307fffffffffffffffffffffffff00000000000000000000000000000000000000008354161782556117458151612669565b601b810160ff815460101c166118cf5782917fb42ebd0ad22561f77328ee457d5ba2a08a7c2847ff88c663cca9dcc8c53dc08691611785610d159561284a565b6201000062ff0000198254161790556001549060258101917fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000084549260201b169116178092557ff5d1b3af18a6e549e23801b7a43bec54699badce37e0f7e96e0a4ebb65143d74845160a08601519061189160c088015160e08901516101008a01516101208b01519173ffffffffffffffffffffffffffffffffffffffff6102608d015116936040519788978895919360c0959198979373ffffffffffffffffffffffffffffffffffffffff9560e089019a8952602089015260408801526060870152608086015260a085015216910152565b0390a1610cfc8451916008810154936007820154916102008801516101808901519060ff60106102408c01519401549460081c1694610cbe8661247e565b6004847fe2003eba000000000000000000000000000000000000000000000000000000008152fd5b503461030f578060031936011261030f5760405190601f1961020061191c8185612072565b600f8452013660208401377f60332e89000000000000000000000000000000000000000000000000000000006119518361243b565b527f796b89ec0000000000000000000000000000000000000000000000000000000061197c8361245e565b527f9226537e000000000000000000000000000000000000000000000000000000006119a78361246e565b52815160031015611bfe577f68aea41b000000000000000000000000000000000000000000000000000000006080830152815160041015611bfe577f2dcb118e0000000000000000000000000000000000000000000000000000000060a0830152815160051015611bfe577fee5b280a0000000000000000000000000000000000000000000000000000000060c0830152815160061015611bfe577f906b131a0000000000000000000000000000000000000000000000000000000060e0830152815160071015611bfe577fde99347a00000000000000000000000000000000000000000000000000000000610100830152815160081015611bfe577f43a19a6500000000000000000000000000000000000000000000000000000000610120830152815160091015611bfe577f25830db3000000000000000000000000000000000000000000000000000000006101408301528151600a1015611bfe577f8dea1f47000000000000000000000000000000000000000000000000000000006101608301528151600b1015611bfe577fe3adc7ee000000000000000000000000000000000000000000000000000000006101808301528151600c1015611bfe577ff844a31c000000000000000000000000000000000000000000000000000000006101a08301528151600d1015611bfe577ff23a6e61000000000000000000000000000000000000000000000000000000006101c08301528151600e1015611bfe577fbc197c81000000000000000000000000000000000000000000000000000000006101e083015260405180610ae484826121e0565b80634e487b7160e01b602492526032600452fd5b503461030f57602060031936011261030f57600435611c3081612669565b601b81019081549060ff8260181c1615611cbc576002810154421190811591611cac575b50610915577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1690556040519081527f11aa0bd3fb4d9c5622c703f91610a74140a4f88a7ebc7b4faaeaf52e3cb7aa9490602090a180f35b9050600342910154111538611c54565b6004857fc851109a000000000000000000000000000000000000000000000000000000008152fd5b503461030f577f091a72ed52432e53c748925ef46b36a19f93cb874539b387d4f3b1f92aa33e116040611d16366121ca565b80600e61050184612669565b503461030f57611d3136612177565b9091611d3c83612669565b9160118301928354916024820192611d5484866123d6565b548110611f7457602383019173ffffffffffffffffffffffffffffffffffffffff81168952826020526040892054611d8c86886123d6565b5411611ef057611dbc73ffffffffffffffffffffffffffffffffffffffff92611db587896123d6565b5490612421565b8755611dc885876123d6565b548282168a5283602052611de160408b20918254612421565b9055168752602052604086205415611e8c575b60150191825460018101809111611e78578387611e5b604097957f499925bc28b60b5b11b1841f8f51318fa4484237122fb618e76c3195b37d9eb89589957f83518b027c8ada9071fa7643b5352e180e42cf5a021d61294e5880408643c97f9b99556123d6565b55548151908582526020820152a15482519182526020820152a180f35b602487634e487b7160e01b81526011600452fd5b601481018054906000198201918211611edc57604082601594937ff865af89149aa92dd957b447226842542090f013d1c80f4f66f6eb3ea79f8e9193558151908982526020820152a19050611df4565b602488634e487b7160e01b81526011600452fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e646572666c6f773a20726573657276656420616d6f756e7420627920616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e646572666c6f773a20726573657276656420616d6f756e740000000000006044820152fd5b9050346104bf5760206003193601126104bf576004357fffffffff0000000000000000000000000000000000000000000000000000000081168091036102e357602092507f4e2312e0000000000000000000000000000000000000000000000000000000008114908115612048575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501438612041565b90601f601f19910116810190811067ffffffffffffffff82111761209557604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff811161209557601f01601f191660200190565b81601f82011215610836578035906120de826120ab565b926120ec6040519485612072565b8284526020838301011161083657816000926020809301838601378301015290565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361083657565b6064359073ffffffffffffffffffffffffffffffffffffffff8216820361083657565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361083657565b6060600319820112610836576004359067ffffffffffffffff8211610836576121a2916004016120c7565b906024359060443573ffffffffffffffffffffffffffffffffffffffff811681036108365790565b6003196040910112610836576004359060243590565b602060408183019282815284518094520192019060005b8181106122045750505090565b82517fffffffff00000000000000000000000000000000000000000000000000000000168452602093840193909201916001016121f7565b600319610280910112610836576040516000610280820167ffffffffffffffff811183821017612340576040526004358252602435602083015260443560408301526064356060830152608435608083015260a43560a083015260c43560c083015260e43560e083015261010435610100830152610124356101208301526101443561014083015261016435610160830152610184356101808301526101a4356101a08301526101c4356101c08301526101e4356101e0830152610204356102008301526102243561022083015261024435610240830152610264359073ffffffffffffffffffffffffffffffffffffffff8216820361030f575061026082015290565b602482634e487b7160e01b81526041600452fd5b9181601f840112156108365782359167ffffffffffffffff8311610836576020808501948460051b01011161083657565b9181601f840112156108365782359167ffffffffffffffff8311610836576020838186019501011161083657565b60005b8381106123c65750506000910152565b81810151838201526020016123b6565b6020906123f09282604051948386809551938492016123b3565b82019081520301902090565b90600019820191821161240b57565b634e487b7160e01b600052601160045260246000fd5b9190820391821161240b57565b9190820180921161240b57565b8051156124485760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156124485760400190565b8051600210156124485760600190565b6002111561248857565b634e487b7160e01b600052602160045260246000fd5b156124a557565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60448201527f6374696f6e0000000000000000000000000000000000000000000000000000006064820152fd5b8181029291811591840414171561240b57565b1561254357565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152fd5b90816020910312610836575180151581036108365790565b156125e657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f45524332303a207472616e73666572206661696c6564000000000000000000006044820152fd5b90601f19601f602093612662815180928187528780880191016123b3565b0116010190565b600081807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000081101561281f575b50806d04ee2d6d415b85acef8100000000600a921015612804575b662386f26fc100008110156127f0575b6305f5e1008110156127df575b6127108110156127d0575b60648110156127c2575b10156127ba575b6001810191600a60001960216127136126fd876120ab565b9661270b6040519889612072565b8088526120ab565b94601f196020880196013687378601015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a835304801561276057600019600a9192612724565b50506127b4602c60405180936127a360208301967f73746f726167652e626f6e6400000000000000000000000000000000000000008852518092858501906123b3565b81010301601f198101835282612072565b51902090565b6001016126e5565b6064600291049201916126de565b612710600491049201916126d4565b6305f5e100600891049201916126c9565b662386f26fc10000601091049201916126bc565b6d04ee2d6d415b85acef8100000000602091049201916126ac565b604092507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a612691565b9060006128578351612669565b9073ffffffffffffffffffffffffffffffffffffffff6102608501511673ffffffffffffffffffffffffffffffffffffffff6026840191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905560a084018051600584015560e0850192835115613186576102008601928684511560001461313f57610180600c910151066131175786905b6101c08201908151612f9a575b6101a08301918251612e7b575b60c084019761291a895182519061445a565b906006870191825561010086019182519161293c61012089019384519061445a565b60098a0155670de0b6b3a764000061296960408a0151809c60018d019d8e5560208c01518d55519061445a565b0460108a015560606101e08901519860128b01998a55610180810151600d8c015501519b8c9b624f1a008d60028d019e8f55019d8e811161240b578e10612df7578a90600382019e8f55805115600014612d0d575060250180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555050805460088901555b6102408d018051600103612cb45750855115612c7d57602588016203000062ff0000198254161790555b8551600e8901558351600f8901556101408d01948d8651908115159081612c6e575b50612be2575b5050612bdd98957f9cc9725ee02d8f0a4d8b30054405939f4d872cc6a5c2d677e02f5bd87e5dea2a89967f05b741eb5649daedcc851ef6f057b1bf89b49d12357d31c478c425b6eb1ce9c59e9f9a6040612bb898612b497f1ada3075f8dc673c9de9ba7c0b8e81065d996d1faa99feb6d0a648c8b7a1516d9d99612b43612b3d7f091a72ed52432e53c748925ef46b36a19f93cb874539b387d4f3b1f92aa33e119b869b601b7f8a7a5c9c34210b39b0dd6c746e4824f7af2a84c059d4dcbc168a2036d26df99099017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff815416905554935190519061445a565b82614f32565b90612421565b60078c01558d51905182519182526020820152a18a5190516101608c0151855192835260208301919091526040820152606090a18851905182519182526020820152a1855192549354905490604051948594859094939260609260808301968352602083015260408201520152565b0390a15191549254604051938493846040919493926060820195825260208201520152565b0390a1565b8e612bf461016082019283519061445a565b600a8c015551908751905191303b156102d4576040517f68aea41b000000000000000000000000000000000000000000000000000000008152600481019190915260248101919091526044810191909152818160648183305af180156102d85715612a4357612c64828092612072565b61030f5780612a43565b6101609150015115158f612a3d565b835115612c9c57602588016204000062ff000019825416179055612a1b565b602588016201000062ff000019825416179055612a1b565b8051612cce57506025880162ff0000198154169055612a1b565b517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612a1b57602588016202000062ff000019825416179055612a1b565b8051600103612d835750612d7992612d5c612d74936025612d64940160017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055825190519061242e565b90519061445a565b6703782dace9d900005b90614186565b6123fc565b60088901556129f1565b51909190600214612d97575b5050506129f1565b612dea92612d5c612ddc926025612d74950160027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055825190519061242e565b6701280f39a3485555612d6e565b6008890155388881612d8f565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f54696d657374616d702073686f756c64206265206561726c696572206f72206560448201527f7175616c20746f207468652063757272656e742074696d657374616d700000006064820152fd5b90979695949392855115600014612f4e57508151600c900615612ec0576004887fbebd2292000000000000000000000000000000000000000000000000000000008152fd5b889791929394959697518351303b156102d457604051917f2dcb118e00000000000000000000000000000000000000000000000000000000835260048301526024820152828160448183305af18015612f4357908a94939291612f24575b50612908565b8280949550612f3591939293612072565b6104bf579088929138612f1e565b6040513d85823e3d90fd5b9293949596979060018751036129085782519198979695949350906003900615612ec0576004887f4f80c6ed000000000000000000000000000000000000000000000000000000008152fd5b96959493929184511560001461305a57508051600c900615612fde576004877fdcbd8c00000000000000000000000000000000000000000000000000000000008152fd5b90919293949587518251303b156102e357604051917fee5b280a00000000000000000000000000000000000000000000000000000000835260048301526024820152818160448183305af180156102d857908993929161303f575b506128fb565b818093945061304d91612072565b61030f5790879138613039565b91929394959660018651036128fb578151909796959493925060039006156130a4576004877f07010901000000000000000000000000000000000000000000000000000000008152fd5b90919293949587518251303b156102e357604051917fee5b280a00000000000000000000000000000000000000000000000000000000835260048301526024820152818160448183305af180156102d85790828a949392613107575b50506128fb565b61311091612072565b3881613100565b807f0d38e32c0000000000000000000000000000000000000000000000000000000060049252fd5b9060018551036128ee579061018060039101510661315e5786906128ee565b807fecfbd8cf0000000000000000000000000000000000000000000000000000000060049252fd5b6004837f1de42a90000000000000000000000000000000000000000000000000000000008152fd5b8181106131b9575050565b600081556001016131ae565b805460008255806131d4575050565b6131e9916000526020600020908101906131ae565b565b80548210156124485760005260206000200190600090565b80546801000000000000000081101561209557613225916001820181556131eb565b60001982549160031b1b19169055565b80546801000000000000000081101561209557613257916001820181556131eb565b600019829392549160031b92831b921b1916179055565b9061327882612669565b600160ff601b83015460201c161515146136ed5762015180820462010bd981019062010bd982126000821290801582169115161761240b57622649650190600062253d8c8312911290801582169115161761240b578060021b60048105820361240b5762023ab19005908162023ab1029062023ab18205830361240b576003820191600060038412911290801582169115161761240b57600461331c920590615012565b9060018201600181126000841290801582169115161761240b5780610fa00290610fa082050361240b5762164b09613362910592600461335b85614fff565b0590615012565b91601f8301926000601f8512911290801582169115161761240b578260500260508105840361240b5761098f9005928361098f029061098f8205850361240b5760506133af920590615012565b92600b8105906002810190600060028312911290801582169115161761240b5781600c02600c8105830361240b576133e691615012565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf810190811360011661240b578060640290606482050361240b576134349261342f91614fe3565b614fe3565b600091602585019260ff84541660038110156136d957806136b6575050600c600d86015404935b60009483601d88019461346d866131c5565b60218901978854818a5580613697575b50805b8481106134c957505050505050505050509181604092600b7f6d7086ab13fbd1583240e1b6e62b23416e3945f952373732fc183a2a407e462d95015582519182526020820152a1565b60ff895416600381101561248857600281036135e557509091816135ac57509050600c85066135a5576001820180831161240b57905b6001860180871161240b57600c900690811561359c575b61352a61352487848661426c565b89613235565b600019850185811161240b578114613587575b895490680100000000000000008210156120955760018201808c55821015612448576001918b60005260206000208160051c019060ff60f883549260031b161b1916905501613480565b61359286838561426c565b600c8c015561353d565b600c9150613516565b81906134ff565b600c83066135df576001810180911161240b57915b6001810180911161240b57600c9006908161351657600c9150613516565b916135c1565b60006001820361367057505090811560001461363657509050600a851061362f576001820180831161240b57905b6003860180871161240b57600c900690811561359c575b613516565b8190613613565b600a81101561365e575b6003810180911161240b57600c9006908161362a57600c9150613516565b916001810180911161240b5791613640565b5061351657918261368657505081908590613516565b6001810180911161240b5791613516565b898252602082206136b091601f0160051c8101906131ae565b3861347d565b6001141590506136ce576003600d860154049361345b565b600d8501549361345b565b602482634e487b7160e01b81526021600452fd5b7fdecaae020000000000000000000000000000000000000000000000000000000060005260046000fd5b906020825491828152019160005260206000209060005b81811061373b5750505090565b825484526020909301926001928301920161372e565b61375a81612669565b90600160ff601b84015460201c161515146136ed576000600583015460ff6025850154166003811015613eec57806141665750600c600d85015404915b6137a3601c86016131c5565b6137af601e86016131c5565b6137bb601f86016131c5565b6137c7602086016131c5565b6137d3601f8601613203565b6137e4600586015460208701613235565b6137f0601c8601613203565b6137fc601e8601613203565b60058501546016860155805b83821061392357505050506138f56138ee917f2f3e3b3aaadf1f165fa7d634278fa8ee54a0548dbf8fc62a1d301da8f6aa6298604060088601548151908482526020820152a17f1cd0ec0194cd0b5111bf7154d1801ab3549a822fcff5ac188bcaa7f310aa11de601d85019160405190815260c06020820152806138df6138ce6138bd6138ac61389b60c0860189613717565b858103604087015260208c01613717565b8481036060860152601f8b01613717565b8381036080850152601c8a01613717565b82810360a0840152601e8901613717565b0390a160405192838092613717565b0382612072565b91601e61392060405161390f816138ee81601c8901613717565b936138ee6040518094819301613717565b90565b602586015491600660ff8460101c16101591826124885760ff8460101c1615600014613fed57506000925b61395c8560088a0154614f32565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561240b578160098a0154670de0b6b3a764000003670de0b6b3a7640000811161240b576139a691614f32565b936124885760ff8160101c1615600014613a4157508560001981011161240b57600192613a00613a179260001989018510600014613a23576139ea601f8c01613203565b6139f78860208d01613235565b601c8b01613235565b613a0d81601e8b01613235565b601689015461242e565b60168801550190613808565b613a2f60208c01613203565b613a3c88601f8d01613235565b6139f7565b600095919295600260ff8360101c1614600014613af257505084613aa857600192613a0060209693613a3c84613a9f8d613a96670de0b6b3a7640000613a8e613a179a600a850154614f32565b048094612421565b9b8c9101613235565b601f8d01613235565b93908560001981011161240b57600192613a00613a179260001989018514600014613ad957613a2f60208c01613203565b613ae68860208d01613235565b613a3c601f8c01613203565b9593929550600160ff8260101c1614600014613b8857508560001981011161240b57876000198701841015613b51575060019291613a00613b3686613a1794612421565b96613b448860208d01613235565b613a3c87601f8d01613235565b91613a00613a179296613a3c613b7887602088613b728260019c9b01613203565b016131eb565b90549060031b1c601f8d01613235565b6000600360ff8360101c1614600014613cb157505060ff602589015416600381101590816124885780159182613c9e575b8215613c78575b8215613c53575b505015613c3b578560001981011161240b57876000198701841015613c16575060019291613a00613bfb86613a1794612421565b96613c0987601f8d01613235565b613a3c8860208d01613235565b94613a17915091613a008493613a3c613b78600197602060009b613b72828201613203565b9360019291613a00613a1792613c09601f8c01613203565b9091506124885760021480613c6a575b3880613bc7565b50600e880154831015613c63565b50600091506001811480613c8d575b91613bc0565b506003600e8b015404851015613c87565b9150600c600e8b01540485101591613bb9565b50600460ff8260101c1614600014613d9b575060ff602589015416600381101590816124885780159182613d88575b8215613d62575b8215613d3d575b505015613d22578560001981011161240b57876000198701841015613c16575060019291613a00613bfb86613a1794612421565b935050600190613a176000613a0081613c09601f8c01613203565b9091506124885760021480613d54575b3880613cee565b50600f880154831015613d4d565b50600091506001811480613d77575b91613ce7565b506003600f8b015404851015613d71565b9150600c600f8b01540485101591613ce0565b600095919590600560ff8260101c1614613dc2575b505060019291613a00613a17926139f7565b600360ff829893981610159081613fd95760ff8116159182613fc6575b8215613f9e575b8215613f62575b505015613f485786600019810111613f3457846000198801851015613f0057613e1591612421565b94613e2385601f8b01613235565b613e308660208b01613235565b60ff60258a01541660038110159081613eec5780159182613eda575b8215613eb6575b8215613e83575b5050916001949391613a1793613e76575b509181939450613db0565b9150819050613a00613e6b565b9091506136d9579160019493916002613a17941480613ea9575b91938193959650613e5a565b50600f8b01548510613e9d565b508291506001811480613eca575b91613e53565b506003600f8c0154048610613ec4565b9150600c600f8c015404861091613e4c565b602483634e487b7160e01b81526021600452fd5b505084613f0f60208a01613203565b613f2f613f1f8560208c016131eb565b90549060031b1c601f8b01613235565b613e30565b602486634e487b7160e01b81526011600452fd5b94613f55601f8a01613203565b613f2f8660208b01613235565b909150613f8a5760ff1660021480613f7c575b3880613ded565b50600e890154841015613f75565b602487634e487b7160e01b81526021600452fd5b5087915060ff811660011480613fb5575b91613de6565b506003600e8c015404861015613faf565b9150600c600e8c01540486101591613ddf565b602488634e487b7160e01b81526021600452fd5b60009250601084901c60ff1660010361401f5750670de0b6b3a76400006140188660058a015461445a565b049261394e565b600360ff8560101c16148015614151575b156140c05750600360ff841610156124885760ff831661407257670de0b6b3a7640000614018600589015461406c600c600e8c01540489612421565b9061445a565b670de0b6b3a7640000600060ff85166001036140aa576140a160058a015461406c6003600e8d0154048a612421565b9050049261394e565b6140a160058a015461406c600e8c01548a612421565b928261248857600460ff8260101c160361394e579250600360ff841610156124885760ff831661410c57670de0b6b3a7640000614018600589015461406c600c600f8c01540489612421565b670de0b6b3a7640000600060ff851660010361413b576140a160058a015461406c6003600f8d0154048a612421565b6140a160058a015461406c600f8c01548a612421565b509150600091600560ff8560101c1614614030565b60010361417b576003600d8501540491613797565b600d84015491613797565b801580156141a55750506141a057670de0b6b3a764000090565b600090565b670de0b6b3a7640000821461425d57826141c857505050670de0b6b3a764000090565b670de0b6b3a7640000831461425757670de0b6b3a76400008211156142025750613920916141f86141fd92614536565b614f32565b614657565b61424157614227916141f86141fd926ec097ce7bc90715b34b9f100000000004614536565b8015614241576ec097ce7bc90715b34b9f10000000000490565b634e487b7160e01b600052601260045260246000fd5b50905090565b505050670de0b6b3a764000090565b906107b282106143fc577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2810181811360011661240b57600c9005916112c081019060006112c08312911290801582169115161761240b57826142ce91614fe3565b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe820191821360011661240b57600c810290808205600c149015171561240b5761431891615012565b9161432282614fff565b918361016f029361016f85050361240b576064810190600060648312911290801582169115161761240b5760649005918260030292600384050361240b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82b5820191821360011661240b576143b593600c6143a5600494856143ad950590614fe3565b910590614fe3565b910590615012565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdac274810190811360011661240b576201518081029080820462015180149015171561240b5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f596561722063616e6e6f74206265206561726c696572207468616e20313937306044820152fd5b600019670de0b6b3a7640000820991670de0b6b3a764000082029182808510940393808503941461452957818410156144ed57670de0b6b3a764000082910960018219018216809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b7f63a0577800000000000000000000000000000000000000000000000000000000600052600452670de0b6b3a764000060245260445260646000fd5b5091508115614241570490565b670de0b6b3a7640000811061462a57670de0b6b3a764000081046fffffffffffffffffffffffffffffffff811160071b90811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c9060ff821160031b91821c92600f841160021b93841c94600160038711811b96871c11961717171717171790670de0b6b3a76400008202911c670de0b6b3a76400008114614626576706f05b59d3b2000090815b6145ef57505090565b80670de0b6b3a764000091020490671bc16d674ec80000821015614618575b60011c90816145e6565b809192019160011c9061460e565b5090565b7f36d32ef00000000000000000000000000000000000000000000000000000000060005260045260246000fd5b680a688906bd8affffff8111614f0557670de0b6b3a76400009060401b047780000000000000000000000000000000000000000000000067ff000000000000008216614dd0575b670de0b6b3a76400009066ff0000000000008316614cc0575b65ff00000000008316614bb8575b64ff000000008316614ab8575b63ff00000083166149c0575b62ff000083166148d0575b61ff0083166147e8575b60ff8316614708575b029060401c60bf031c90565b608083166147d5575b604083166147c2575b602083166147af575b6010831661479c575b60088316614789575b60048316614776575b60028316614763575b60018316156146fc57680100000000000000010260401c6146fc565b680100000000000000010260401c614747565b680100000000000000030260401c61473e565b680100000000000000060260401c614735565b6801000000000000000b0260401c61472c565b680100000000000000160260401c614723565b6801000000000000002c0260401c61471a565b680100000000000000590260401c614711565b61800083166148bd575b61400083166148aa575b6120008316614897575b6110008316614884575b6108008316614871575b610400831661485e575b610200831661484b575b6101008316156146f357680100000000000000b10260401c6146f3565b680100000000000001630260401c61482e565b680100000000000002c60260401c614824565b6801000000000000058c0260401c61481a565b68010000000000000b170260401c614810565b6801000000000000162e0260401c614806565b68010000000000002c5d0260401c6147fc565b680100000000000058b90260401c6147f2565b6280000083166149ad575b62400000831661499a575b622000008316614987575b621000008316614974575b620800008316614961575b62040000831661494e575b62020000831661493b575b620100008316156146e9576801000000000000b1720260401c6146e9565b680100000000000162e40260401c61491d565b6801000000000002c5c80260401c614912565b68010000000000058b910260401c614907565b680100000000000b17210260401c6148fc565b68010000000000162e430260401c6148f1565b680100000000002c5c860260401c6148e6565b6801000000000058b90c0260401c6148db565b63800000008316614aa5575b63400000008316614a92575b63200000008316614a7f575b63100000008316614a6c575b63080000008316614a59575b63040000008316614a46575b63020000008316614a33575b63010000008316156146de5768010000000000b172180260401c6146de565b6801000000000162e4300260401c614a14565b68010000000002c5c8600260401c614a08565b680100000000058b90c00260401c6149fc565b6801000000000b17217f0260401c6149f0565b680100000000162e42ff0260401c6149e4565b6801000000002c5c85fe0260401c6149d8565b68010000000058b90bfc0260401c6149cc565b6480000000008316614ba5575b6440000000008316614b92575b6420000000008316614b7f575b6410000000008316614b6c575b6408000000008316614b59575b6404000000008316614b46575b6402000000008316614b33575b6401000000008316156146d257680100000000b17217f80260401c6146d2565b68010000000162e42ff10260401c614b13565b680100000002c5c85fe30260401c614b06565b6801000000058b90bfce0260401c614af9565b68010000000b17217fbb0260401c614aec565b6801000000162e42fff00260401c614adf565b68010000002c5c8601cc0260401c614ad2565b680100000058b90c0b490260401c614ac5565b658000000000008316614cad575b654000000000008316614c9a575b652000000000008316614c87575b651000000000008316614c74575b650800000000008316614c61575b650400000000008316614c4e575b650200000000008316614c3b575b650100000000008316156146c5576801000000b1721835510260401c6146c5565b680100000162e430e5a20260401c614c1a565b6801000002c5c863b73f0260401c614c0c565b68010000058b90cf1e6e0260401c614bfe565b680100000b1721bcfc9a0260401c614bf0565b68010000162e43f4f8310260401c614be2565b680100002c5c89d5ec6d0260401c614bd4565b6801000058b91b5bc9ae0260401c614bc6565b66800000000000008316614dbd575b66400000000000008316614daa575b66200000000000008316614d97575b66100000000000008316614d84575b66080000000000008316614d71575b66040000000000008316614d5e575b66020000000000008316614d4b575b66010000000000008316156146b75768010000b17255775c040260401c6146b7565b6801000162e525ee05470260401c614d29565b68010002c5cc37da94920260401c614d1a565b680100058ba01fb9f96d0260401c614d0b565b6801000b175effdc76ba0260401c614cfc565b680100162f3904051fa10260401c614ced565b6801002c605e2e8cec500260401c614cde565b68010058c86da1c09ea20260401c614ccf565b6780000000000000008216614ee6575b670de0b6b3a7640000906740000000000000008316614ed3575b6720000000000000008316614ec0575b6710000000000000008316614ead575b6708000000000000008316614e9a575b6704000000000000008316614e87575b6702000000000000008316614e74575b6701000000000000008316614e61575b905061469e565b680100b1afa5abcbed610260401c614e5a565b68010163da9fb33356d80260401c614e4a565b680102c9a3e778060ee70260401c614e3a565b6801059b0d31585743ae0260401c614e2a565b68010b5586cf9890f62a0260401c614e1a565b6801172b83c7d517adce0260401c614e0a565b6801306fe0a31b7152df0260401c614dfa565b5077b504f333f9de648480000000000000000000000000000000614de0565b7fb3b6ba1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b91909160001983820983820291828083109203918083039214614fd257670de0b6b3a7640000821015614fa0577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106699394670de0b6b3a7640000910990828211900360ee1b910360121c170290565b84907f5173648d0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b5050670de0b6b3a764000090049150565b9190916000838201938412911290801582169115161761240b57565b90816105b502916105b583050361240b57565b8181039291600013801582851316918412161761240b5756fea26469706673582212207cc483471c36ae49d908f8579da2e11f5013b0aac7590b7cbae2443917b5eb7664736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0x5061 SWAP1 DUP2 PUSH2 0x1B DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP1 DUP2 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0x1FD2 JUMPI POP DUP1 PUSH4 0x25830DB3 EQ PUSH2 0x1D22 JUMPI DUP1 PUSH4 0x2DCB118E EQ PUSH2 0x1CE4 JUMPI DUP1 PUSH4 0x43A19A65 EQ PUSH2 0x1C12 JUMPI DUP1 PUSH4 0x4B503F0B EQ PUSH2 0x18F7 JUMPI DUP1 PUSH4 0x60332E89 EQ PUSH2 0x1704 JUMPI DUP1 PUSH4 0x68AEA41B EQ PUSH2 0x1686 JUMPI DUP1 PUSH4 0x796B89EC EQ PUSH2 0x162A JUMPI DUP1 PUSH4 0x8C5F36BB EQ PUSH2 0x14F6 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x14A3 JUMPI DUP1 PUSH4 0x8DEA1F47 EQ PUSH2 0x1071 JUMPI DUP1 PUSH4 0x906B131A EQ PUSH2 0xD43 JUMPI DUP1 PUSH4 0x9226537E EQ PUSH2 0xAE8 JUMPI DUP1 PUSH4 0xB4105004 EQ PUSH2 0xA29 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x975 JUMPI DUP1 PUSH4 0xDE99347A EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xE3ADC7EE EQ PUSH2 0x511 JUMPI DUP1 PUSH4 0xEE5B280A EQ PUSH2 0x4C3 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x44F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x312 JUMPI PUSH4 0xF844A31C EQ PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x30F JUMPI PUSH2 0x116 CALLDATASIZE PUSH2 0x21CA JUMP JUMPDEST PUSH2 0x158 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND CALLER EQ PUSH2 0x249E JUMP JUMPDEST PUSH2 0x161 DUP3 PUSH2 0x2669 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x18 DUP5 ADD SSTORE PUSH1 0x1B DUP4 ADD PUSH1 0xFF DUP2 SLOAD PUSH1 0x20 SHR AND PUSH2 0x2E7 JUMPI PUSH2 0x183 DUP4 DUP4 PUSH2 0x326E JUMP JUMPDEST PUSH2 0x18C DUP3 PUSH2 0x3751 JUMP JUMPDEST POP POP POP PUSH5 0x100000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x25 DUP4 ADD PUSH4 0x1000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF DUP3 SLOAD AND OR SWAP1 SSTORE DUP4 PUSH1 0x17 PUSH1 0x11 DUP6 ADD SLOAD SWAP5 ADD SWAP4 DUP1 DUP6 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SLOAD AND DUP1 EXTCODESIZE ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x731133E900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE DUP3 SWAP1 DUP3 SWAP1 PUSH1 0xA4 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x2D8 JUMPI PUSH2 0x2BF JUMPI JUMPDEST POP POP SWAP2 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 ADD MSTORE PUSH32 0xB5C3204064D2AC62821E92F17E7E2C1E9971C89F07FA01B6DAB37145DB86DC55 SWAP1 DUP1 PUSH1 0x60 DUP2 ADD JUMPDEST SUB SWAP1 LOG1 DUP1 RETURN JUMPDEST DUP2 PUSH2 0x2C9 SWAP2 PUSH2 0x2072 JUMP JUMPDEST PUSH2 0x2D4 JUMPI DUP4 CODESIZE PUSH2 0x27A JUMP JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP6 PUSH32 0xDECAAE0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH2 0x32C PUSH2 0x210E JUMP JUMPDEST PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND CALLER EQ SWAP2 PUSH2 0x373 DUP4 PUSH2 0x249E JUMP JUMPDEST AND SWAP2 DUP3 ISZERO PUSH2 0x3CC JUMPI PUSH2 0x3A5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 PUSH2 0x249E JUMP JUMPDEST AND OR PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SSTORE DUP1 RETURN JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4E6577206F776E65722063616E6E6F7420626520746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH2 0x469 PUSH2 0x210E JUMP JUMPDEST POP PUSH2 0x472 PUSH2 0x2154 JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4BF JUMPI PUSH2 0x493 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2385 JUMP JUMPDEST POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST POP DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH32 0x8A7A5C9C34210B39B0DD6C746E4824F7AF2A84C059D4DCBC168A2036D26DF990 PUSH1 0x40 PUSH2 0x4F5 CALLDATASIZE PUSH2 0x21CA JUMP JUMPDEST DUP1 PUSH1 0xF PUSH2 0x501 DUP5 PUSH2 0x2669 JUMP JUMPDEST ADD SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH2 0x520 CALLDATASIZE PUSH2 0x2177 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x52B DUP2 PUSH2 0x2669 JUMP JUMPDEST SWAP3 PUSH1 0xFF PUSH1 0x1B DUP6 ADD SLOAD PUSH1 0x20 SHR AND ISZERO PUSH2 0x84E JUMPI PUSH2 0x549 PUSH1 0x24 DUP6 ADD DUP5 PUSH2 0x23D6 JUMP JUMPDEST SLOAD SWAP1 PUSH2 0x559 PUSH1 0x5 DUP7 ADD SLOAD DUP4 PUSH2 0x2529 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP2 SWAP1 PUSH1 0x20 DUP2 PUSH1 0x44 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x843 JUMPI DUP10 SWAP2 PUSH2 0x808 JUMPI JUMPDEST POP SWAP1 PUSH2 0x650 SWAP3 PUSH2 0x5D5 DUP3 PUSH1 0x20 SWAP5 LT ISZERO PUSH2 0x253C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x26 DUP11 ADD SLOAD AND DUP11 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP11 PUSH1 0x4 DUP6 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SWAP3 SWAP6 SWAP5 SWAP4 DUP2 PUSH1 0x60 DUP5 ADD SWAP8 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x7FD JUMPI PUSH2 0x66B SWAP2 DUP9 SWAP2 PUSH2 0x7CE JUMPI JUMPDEST POP PUSH2 0x25DF JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 SLOAD AND DUP1 EXTCODESIZE ISZERO PUSH2 0x4BF JUMPI DUP2 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH32 0x731133E900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 DUP4 DUP2 PUSH2 0x6FA DUP11 DUP13 DUP12 PUSH1 0x4 DUP6 ADD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xA0 SWAP5 SWAP3 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x80 DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2D8 JUMPI PUSH2 0x7AD JUMPI JUMPDEST POP PUSH32 0x99C110E7B335CFF55CAB2CFE92E319AD78396F17234DEBBB5860886AA0244CCA PUSH2 0x796 DUP7 DUP7 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 PUSH1 0x22 DUP14 DUP4 DUP4 AND PUSH1 0x0 MSTORE ADD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH1 0x80 DUP8 MSTORE PUSH1 0x80 DUP8 ADD SWAP1 PUSH2 0x2644 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP7 ADD MSTORE AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE SUB SWAP1 LOG1 DUP1 RETURN JUMPDEST DUP2 PUSH2 0x7BC SWAP2 SWAP7 SWAP6 SWAP5 SWAP4 SWAP7 PUSH2 0x2072 JUMP JUMPDEST PUSH2 0x7CA JUMPI SWAP1 SWAP2 SWAP3 DUP6 CODESIZE PUSH2 0x709 JUMP JUMPDEST DUP6 DUP1 REVERT JUMPDEST PUSH2 0x7F0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x7F6 JUMPI JUMPDEST PUSH2 0x7E8 DUP2 DUP4 PUSH2 0x2072 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x25C7 JUMP JUMPDEST CODESIZE PUSH2 0x665 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7DE JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP10 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x83B JUMPI JUMPDEST DUP2 PUSH2 0x824 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2072 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x836 JUMPI SWAP1 MLOAD PUSH2 0x650 PUSH2 0x5C1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x817 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP12 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP6 PUSH32 0xC4D5688000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x894 DUP2 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0x1B DUP2 ADD SWAP1 DUP2 SLOAD SWAP1 PUSH1 0xFF DUP3 PUSH1 0x18 SHR AND PUSH2 0x94D JUMPI PUSH1 0x2 DUP2 ADD SLOAD TIMESTAMP GT SWAP1 DUP2 ISZERO SWAP2 PUSH2 0x93D JUMPI JUMPDEST POP PUSH2 0x915 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF AND PUSH4 0x1000000 OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xAB1902EE37C92D1A78DDA53814D64B815E7E3EE287D60843A3DBD6954E3206B4 SWAP1 PUSH1 0x20 SWAP1 LOG1 DUP1 RETURN JUMPDEST PUSH1 0x4 DUP5 PUSH32 0xEBD7E12900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH1 0x3 TIMESTAMP SWAP2 ADD SLOAD GT ISZERO CODESIZE PUSH2 0x8B7 JUMP JUMPDEST PUSH1 0x4 DUP6 PUSH32 0x5CEBFD4A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH2 0x98F PUSH2 0x210E JUMP JUMPDEST POP PUSH2 0x998 PUSH2 0x2154 JUMP JUMPDEST POP PUSH1 0x44 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4BF JUMPI PUSH2 0x9B9 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2354 JUMP JUMPDEST POP POP PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4BF JUMPI PUSH2 0x9DB SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2354 JUMP JUMPDEST POP POP PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4BF JUMPI PUSH2 0x9FD SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2385 JUMP JUMPDEST POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH2 0xAE4 PUSH1 0x40 MLOAD PUSH2 0xA4B PUSH1 0x80 DUP3 PUSH2 0x2072 JUMP JUMPDEST PUSH1 0x3 DUP2 MSTORE PUSH1 0x60 CALLDATASIZE PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH32 0x8DA5CB5B00000000000000000000000000000000000000000000000000000000 PUSH2 0xA81 DUP3 PUSH2 0x243B JUMP JUMPDEST MSTORE PUSH32 0xF2FDE38B00000000000000000000000000000000000000000000000000000000 PUSH2 0xAAC DUP3 PUSH2 0x245E JUMP JUMPDEST MSTORE PUSH32 0x8C5F36BB00000000000000000000000000000000000000000000000000000000 PUSH2 0xAD7 DUP3 PUSH2 0x246E JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x21E0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH2 0xAF7 CALLDATASIZE PUSH2 0x223C JUMP JUMPDEST PUSH2 0xB01 DUP2 MLOAD PUSH2 0x2669 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x1B DUP3 ADD SLOAD PUSH1 0x20 SHR AND PUSH2 0xD1B JUMPI SWAP1 PUSH32 0x182CB671939E46D1345C30B51134E41EF7782A2113747A93B4DC3C31B91EA81E PUSH2 0xD15 SWAP3 PUSH2 0xB3F DUP4 PUSH2 0x284A JUMP JUMPDEST DUP3 MLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 ADD MSTORE PUSH32 0x5B741EB5649DAEDCC851EF6F057B1BF89B49D12357D31C478C425B6EB1CE9C5 SWAP1 PUSH1 0x60 SWAP1 LOG1 DUP3 MLOAD DUP2 SLOAD PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x12 DUP5 ADD SLOAD PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x1ADA3075F8DC673C9DE9BA7C0B8E81065D996D1FAA99FEB6D0A648C8B7A1516D SWAP1 PUSH1 0x80 SWAP1 LOG1 PUSH32 0xC64D8BE5E3585A2141489E772AD1096418B37137A76298A309A5F1095F95F1CA DUP4 MLOAD PUSH1 0xA0 DUP6 ADD MLOAD SWAP1 PUSH2 0xC7D PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xE0 DUP9 ADD MLOAD PUSH2 0x100 DUP10 ADD MLOAD PUSH2 0x120 DUP11 ADD MLOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x260 DUP13 ADD MLOAD AND SWAP4 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP8 DUP9 SWAP6 SWAP2 SWAP4 PUSH1 0xC0 SWAP6 SWAP2 SWAP9 SWAP8 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 PUSH1 0xE0 DUP10 ADD SWAP11 DUP10 MSTORE PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 DUP3 MLOAD PUSH2 0xCFC PUSH1 0x8 DUP4 ADD SLOAD SWAP3 PUSH1 0x7 DUP2 ADD SLOAD SWAP1 PUSH2 0x200 DUP8 ADD MLOAD PUSH2 0x180 DUP9 ADD MLOAD PUSH2 0x240 DUP10 ADD MLOAD SWAP2 PUSH1 0xFF PUSH1 0x25 PUSH1 0x10 DUP7 ADD SLOAD SWAP6 ADD SLOAD PUSH1 0x8 SHR AND SWAP5 PUSH2 0xCBE DUP7 PUSH2 0x247E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP9 DUP10 SWAP5 SWAP2 SWAP3 PUSH1 0xE0 SWAP7 SWAP4 SWAP10 SWAP9 SWAP8 SWAP5 SWAP2 SWAP10 PUSH2 0x100 DUP8 ADD SWAP11 DUP8 MSTORE PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 PUSH2 0xD0F DUP2 MLOAD PUSH1 0x80 DUP4 ADD MLOAD SWAP1 PUSH2 0x326E JUMP JUMPDEST MLOAD PUSH2 0x3751 JUMP JUMPDEST POP POP POP DUP1 RETURN JUMPDEST PUSH1 0x4 DUP4 PUSH32 0xDECAAE0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4BF JUMPI PUSH2 0xD75 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x20C7 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH1 0x44 CALLDATALOAD SWAP3 PUSH2 0xD85 PUSH2 0x2131 JUMP JUMPDEST SWAP3 PUSH1 0xFF PUSH1 0x1B PUSH2 0xD93 DUP6 PUSH2 0x2669 JUMP JUMPDEST ADD SLOAD PUSH1 0x18 SHR AND PUSH2 0x1049 JUMPI PUSH2 0xDA6 DUP4 PUSH2 0x2669 JUMP JUMPDEST SWAP1 PUSH1 0x10 DUP3 ADD SLOAD SWAP5 PUSH1 0x11 DUP4 ADD SWAP7 DUP8 SLOAD SWAP7 DUP8 DUP1 DUP3 GT PUSH1 0x0 EQ PUSH2 0x1040 JUMPI PUSH2 0xDC9 SWAP2 PUSH2 0x2421 JUMP JUMPDEST SWAP1 JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1038 JUMPI POP SWAP6 JUMPDEST PUSH1 0x2 DUP5 ADD SLOAD TIMESTAMP LT PUSH2 0x1010 JUMPI PUSH1 0x3 DUP5 ADD SLOAD TIMESTAMP GT PUSH2 0xFE8 JUMPI DUP7 ISZERO PUSH2 0xFC0 JUMPI PUSH1 0x23 DUP5 ADD SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH2 0xE24 DUP9 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x242E JUMP JUMPDEST PUSH1 0x12 DUP7 ADD SLOAD LT PUSH2 0xF98 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0xEDD JUMPI JUMPDEST POP PUSH1 0x40 SWAP5 PUSH1 0x24 PUSH32 0x83518B027C8ADA9071FA7643B5352E180E42CF5A021D61294E5880408643C97F SWAP8 SWAP6 PUSH1 0x20 SWAP11 SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 SWAP7 PUSH2 0xEA9 DUP9 PUSH2 0xEC9 SWAP9 PUSH2 0x242E JUMP JUMPDEST DUP10 SSTORE AND PUSH1 0x0 MSTORE DUP12 MSTORE DUP8 PUSH1 0x0 KECCAK256 PUSH2 0xEC0 DUP7 DUP3 SLOAD PUSH2 0x242E JUMP JUMPDEST SWAP1 SSTORE ADD SWAP1 PUSH2 0x23D6 JUMP JUMPDEST SSTORE SLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE DUP6 DUP3 ADD MSTORE LOG1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x14 DUP6 ADD DUP1 SLOAD SWAP2 PUSH1 0x1 DUP4 ADD DUP1 SWAP4 GT PUSH2 0xF84 JUMPI POP DUP8 SWAP6 PUSH1 0x20 SWAP11 SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 SWAP7 PUSH2 0xEA9 DUP9 PUSH2 0xEC9 SWAP9 PUSH32 0xF865AF89149AA92DD957B447226842542090F013D1C80F4F66F6EB3EA79F8E91 PUSH32 0x83518B027C8ADA9071FA7643B5352E180E42CF5A021D61294E5880408643C97F SWAP16 PUSH1 0x40 SWAP16 SWAP11 SWAP1 PUSH1 0x40 SWAP2 DUP1 PUSH1 0x24 SWAP13 SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 SWAP9 POP POP POP SWAP7 POP POP SWAP6 SWAP11 POP SWAP6 SWAP8 POP POP SWAP5 PUSH2 0xE58 JUMP JUMPDEST DUP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x24 SWAP3 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST DUP1 PUSH32 0x2B42B12200000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0x7EEC29E000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0xC32ED7000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0xF2B4A12C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP SWAP6 PUSH2 0xDD6 JUMP JUMPDEST POP POP DUP3 SWAP1 PUSH2 0xDCB JUMP JUMPDEST DUP1 PUSH32 0xA6A992DF00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4BF JUMPI PUSH2 0x10A3 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x20C7 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x44 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 DUP3 SUB PUSH2 0x149F JUMPI PUSH2 0x10CF PUSH2 0x2131 JUMP JUMPDEST SWAP1 PUSH1 0x84 CALLDATALOAD SWAP3 PUSH2 0x1116 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND CALLER EQ PUSH2 0x249E JUMP JUMPDEST PUSH2 0x111F DUP6 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x1B DUP3 ADD SLOAD PUSH1 0x20 SHR AND ISZERO PUSH2 0x1477 JUMPI PUSH1 0x44 PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 SLOAD AND PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP9 PUSH1 0x4 DUP4 ADD MSTORE DUP12 PUSH1 0x24 DUP4 ADD MSTORE GAS STATICCALL DUP1 ISZERO PUSH2 0x843 JUMPI DUP7 SWAP2 DUP11 SWAP2 PUSH2 0x143E JUMPI JUMPDEST POP LT PUSH2 0x1416 JUMPI PUSH1 0x5 PUSH2 0x11A5 SWAP2 ADD SLOAD DUP6 PUSH2 0x2529 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH1 0x20 DUP2 PUSH1 0x44 DUP2 DUP6 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x140B JUMPI DUP11 SWAP2 PUSH2 0x13CD JUMPI JUMPDEST POP SWAP1 PUSH2 0x1281 SWAP4 PUSH2 0x1221 DUP5 PUSH1 0x20 SWAP6 SWAP5 LT ISZERO PUSH2 0x253C JUMP JUMPDEST DUP11 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP12 PUSH1 0x4 DUP6 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SWAP3 SWAP6 SWAP5 SWAP4 DUP2 PUSH1 0x60 DUP5 ADD SWAP8 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x7FD JUMPI PUSH2 0x129B SWAP2 DUP9 SWAP2 PUSH2 0x7CE JUMPI POP PUSH2 0x25DF JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 SLOAD AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0x4BF JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xC4 DUP4 SWAP3 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP3 PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP9 PUSH1 0x4 DUP6 ADD MSTORE AND SWAP8 DUP9 PUSH1 0x24 DUP5 ADD MSTORE DUP11 PUSH1 0x44 DUP5 ADD MSTORE DUP10 PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD MSTORE DUP2 PUSH1 0xA4 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x7FD JUMPI PUSH2 0x138D JUMPI JUMPDEST POP SWAP2 PUSH2 0x1372 SWAP4 SWAP2 PUSH32 0x38DB1382A58023A1D5D8AAAB1581199C9B7D9ED33223C18BEEAAB57924AFF20F SWAP6 SWAP4 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH1 0xA0 DUP8 MSTORE PUSH1 0xA0 DUP8 ADD SWAP1 PUSH2 0x2644 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE SUB SWAP1 LOG1 DUP1 RETURN JUMPDEST SWAP2 DUP7 PUSH2 0x13C1 PUSH32 0x38DB1382A58023A1D5D8AAAB1581199C9B7D9ED33223C18BEEAAB57924AFF20F SWAP8 SWAP6 SWAP4 SWAP9 PUSH2 0x1372 SWAP8 SWAP6 PUSH2 0x2072 JUMP JUMPDEST SWAP7 SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 PUSH2 0x1334 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 POP PUSH1 0x20 DUP4 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1403 JUMPI JUMPDEST DUP2 PUSH2 0x13EA PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2072 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x13FF JUMPI SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x1281 PUSH2 0x120C JUMP JUMPDEST DUP10 DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x13DD JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP13 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP9 PUSH32 0x91DF618A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP2 POP POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x146F JUMPI JUMPDEST DUP2 PUSH2 0x145A PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2072 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x146B JUMPI DUP6 SWAP1 MLOAD CODESIZE PUSH2 0x1191 JUMP JUMPDEST DUP9 DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x144D JUMP JUMPDEST PUSH1 0x4 DUP9 PUSH32 0xC4D5688000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP5 DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH2 0x1510 PUSH2 0x210E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND PUSH2 0x15CC JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND OR PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SSTORE DUP1 RETURN JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E657220616C726561647920736574000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1659 PUSH2 0x210E JUMP JUMPDEST AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0x1 SLOAD AND OR PUSH1 0x1 SSTORE DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH32 0x9CC9725EE02D8F0A4D8B30054405939F4D872CC6A5C2D677E02F5BD87E5DEA2A PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD PUSH2 0x2B9 PUSH1 0x44 CALLDATALOAD PUSH2 0x16CE DUP4 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0xA PUSH8 0xDE0B6B3A7640000 PUSH2 0x16E3 DUP5 DUP9 PUSH2 0x445A JUMP JUMPDEST DIV SWAP2 ADD SSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH2 0x1713 CALLDATASIZE PUSH2 0x223C JUMP JUMPDEST ADDRESS PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 SLOAD AND OR DUP3 SSTORE PUSH2 0x1745 DUP2 MLOAD PUSH2 0x2669 JUMP JUMPDEST PUSH1 0x1B DUP2 ADD PUSH1 0xFF DUP2 SLOAD PUSH1 0x10 SHR AND PUSH2 0x18CF JUMPI DUP3 SWAP2 PUSH32 0xB42EBD0AD22561F77328EE457D5BA2A08A7C2847FF88C663CCA9DCC8C53DC086 SWAP2 PUSH2 0x1785 PUSH2 0xD15 SWAP6 PUSH2 0x284A JUMP JUMPDEST PUSH3 0x10000 PUSH3 0xFF0000 NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x1 SLOAD SWAP1 PUSH1 0x25 DUP2 ADD SWAP2 PUSH32 0xFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFF PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 DUP5 SLOAD SWAP3 PUSH1 0x20 SHL AND SWAP2 AND OR DUP1 SWAP3 SSTORE PUSH32 0xF5D1B3AF18A6E549E23801B7A43BEC54699BADCE37E0F7E96E0A4EBB65143D74 DUP5 MLOAD PUSH1 0xA0 DUP7 ADD MLOAD SWAP1 PUSH2 0x1891 PUSH1 0xC0 DUP9 ADD MLOAD PUSH1 0xE0 DUP10 ADD MLOAD PUSH2 0x100 DUP11 ADD MLOAD PUSH2 0x120 DUP12 ADD MLOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x260 DUP14 ADD MLOAD AND SWAP4 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP8 DUP9 SWAP6 SWAP2 SWAP4 PUSH1 0xC0 SWAP6 SWAP2 SWAP9 SWAP8 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 PUSH1 0xE0 DUP10 ADD SWAP11 DUP10 MSTORE PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 PUSH2 0xCFC DUP5 MLOAD SWAP2 PUSH1 0x8 DUP2 ADD SLOAD SWAP4 PUSH1 0x7 DUP3 ADD SLOAD SWAP2 PUSH2 0x200 DUP9 ADD MLOAD PUSH2 0x180 DUP10 ADD MLOAD SWAP1 PUSH1 0xFF PUSH1 0x10 PUSH2 0x240 DUP13 ADD MLOAD SWAP5 ADD SLOAD SWAP5 PUSH1 0x8 SHR AND SWAP5 PUSH2 0xCBE DUP7 PUSH2 0x247E JUMP JUMPDEST PUSH1 0x4 DUP5 PUSH32 0xE2003EBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1F NOT PUSH2 0x200 PUSH2 0x191C DUP2 DUP6 PUSH2 0x2072 JUMP JUMPDEST PUSH1 0xF DUP5 MSTORE ADD CALLDATASIZE PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH32 0x60332E8900000000000000000000000000000000000000000000000000000000 PUSH2 0x1951 DUP4 PUSH2 0x243B JUMP JUMPDEST MSTORE PUSH32 0x796B89EC00000000000000000000000000000000000000000000000000000000 PUSH2 0x197C DUP4 PUSH2 0x245E JUMP JUMPDEST MSTORE PUSH32 0x9226537E00000000000000000000000000000000000000000000000000000000 PUSH2 0x19A7 DUP4 PUSH2 0x246E JUMP JUMPDEST MSTORE DUP2 MLOAD PUSH1 0x3 LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0x68AEA41B00000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x4 LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0x2DCB118E00000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x5 LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0xEE5B280A00000000000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x6 LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0x906B131A00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x7 LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0xDE99347A00000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x8 LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0x43A19A6500000000000000000000000000000000000000000000000000000000 PUSH2 0x120 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x9 LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0x25830DB300000000000000000000000000000000000000000000000000000000 PUSH2 0x140 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0xA LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0x8DEA1F4700000000000000000000000000000000000000000000000000000000 PUSH2 0x160 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0xB LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0xE3ADC7EE00000000000000000000000000000000000000000000000000000000 PUSH2 0x180 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0xC LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0xF844A31C00000000000000000000000000000000000000000000000000000000 PUSH2 0x1A0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0xD LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 PUSH2 0x1C0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0xE LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH2 0x1E0 DUP4 ADD MSTORE PUSH1 0x40 MLOAD DUP1 PUSH2 0xAE4 DUP5 DUP3 PUSH2 0x21E0 JUMP JUMPDEST DUP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x24 SWAP3 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1C30 DUP2 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0x1B DUP2 ADD SWAP1 DUP2 SLOAD SWAP1 PUSH1 0xFF DUP3 PUSH1 0x18 SHR AND ISZERO PUSH2 0x1CBC JUMPI PUSH1 0x2 DUP2 ADD SLOAD TIMESTAMP GT SWAP1 DUP2 ISZERO SWAP2 PUSH2 0x1CAC JUMPI JUMPDEST POP PUSH2 0x915 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF AND SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x11AA0BD3FB4D9C5622C703F91610A74140A4F88A7EBC7B4FAAEAF52E3CB7AA94 SWAP1 PUSH1 0x20 SWAP1 LOG1 DUP1 RETURN JUMPDEST SWAP1 POP PUSH1 0x3 TIMESTAMP SWAP2 ADD SLOAD GT ISZERO CODESIZE PUSH2 0x1C54 JUMP JUMPDEST PUSH1 0x4 DUP6 PUSH32 0xC851109A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH32 0x91A72ED52432E53C748925EF46B36A19F93CB874539B387D4F3B1F92AA33E11 PUSH1 0x40 PUSH2 0x1D16 CALLDATASIZE PUSH2 0x21CA JUMP JUMPDEST DUP1 PUSH1 0xE PUSH2 0x501 DUP5 PUSH2 0x2669 JUMP JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH2 0x1D31 CALLDATASIZE PUSH2 0x2177 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x1D3C DUP4 PUSH2 0x2669 JUMP JUMPDEST SWAP2 PUSH1 0x11 DUP4 ADD SWAP3 DUP4 SLOAD SWAP2 PUSH1 0x24 DUP3 ADD SWAP3 PUSH2 0x1D54 DUP5 DUP7 PUSH2 0x23D6 JUMP JUMPDEST SLOAD DUP2 LT PUSH2 0x1F74 JUMPI PUSH1 0x23 DUP4 ADD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP10 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP10 KECCAK256 SLOAD PUSH2 0x1D8C DUP7 DUP9 PUSH2 0x23D6 JUMP JUMPDEST SLOAD GT PUSH2 0x1EF0 JUMPI PUSH2 0x1DBC PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 PUSH2 0x1DB5 DUP8 DUP10 PUSH2 0x23D6 JUMP JUMPDEST SLOAD SWAP1 PUSH2 0x2421 JUMP JUMPDEST DUP8 SSTORE PUSH2 0x1DC8 DUP6 DUP8 PUSH2 0x23D6 JUMP JUMPDEST SLOAD DUP3 DUP3 AND DUP11 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH2 0x1DE1 PUSH1 0x40 DUP12 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x2421 JUMP JUMPDEST SWAP1 SSTORE AND DUP8 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 DUP7 KECCAK256 SLOAD ISZERO PUSH2 0x1E8C JUMPI JUMPDEST PUSH1 0x15 ADD SWAP2 DUP3 SLOAD PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1E78 JUMPI DUP4 DUP8 PUSH2 0x1E5B PUSH1 0x40 SWAP8 SWAP6 PUSH32 0x499925BC28B60B5B11B1841F8F51318FA4484237122FB618E76C3195B37D9EB8 SWAP6 DUP10 SWAP6 PUSH32 0x83518B027C8ADA9071FA7643B5352E180E42CF5A021D61294E5880408643C97F SWAP12 SWAP10 SSTORE PUSH2 0x23D6 JUMP JUMPDEST SSTORE SLOAD DUP2 MLOAD SWAP1 DUP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 SLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 DUP1 RETURN JUMPDEST PUSH1 0x24 DUP8 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH1 0x14 DUP2 ADD DUP1 SLOAD SWAP1 PUSH1 0x0 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x1EDC JUMPI PUSH1 0x40 DUP3 PUSH1 0x15 SWAP5 SWAP4 PUSH32 0xF865AF89149AA92DD957B447226842542090F013D1C80F4F66F6EB3EA79F8E91 SWAP4 SSTORE DUP2 MLOAD SWAP1 DUP10 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 SWAP1 POP PUSH2 0x1DF4 JUMP JUMPDEST PUSH1 0x24 DUP9 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E646572666C6F773A20726573657276656420616D6F756E74206279206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E646572666C6F773A20726573657276656420616D6F756E74000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x4BF JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x4BF JUMPI PUSH1 0x4 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x2E3 JUMPI PUSH1 0x20 SWAP3 POP PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x2048 JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP2 POP EQ CODESIZE PUSH2 0x2041 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2095 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2095 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x836 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x20DE DUP3 PUSH2 0x20AB JUMP JUMPDEST SWAP3 PUSH2 0x20EC PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x2072 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x836 JUMPI DUP2 PUSH1 0x0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x836 JUMPI JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x836 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x836 JUMPI JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x836 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x836 JUMPI PUSH2 0x21A2 SWAP2 PUSH1 0x4 ADD PUSH2 0x20C7 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x836 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x40 SWAP2 ADD SLT PUSH2 0x836 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x2204 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x21F7 JUMP JUMPDEST PUSH1 0x3 NOT PUSH2 0x280 SWAP2 ADD SLT PUSH2 0x836 JUMPI PUSH1 0x40 MLOAD PUSH1 0x0 PUSH2 0x280 DUP3 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP4 DUP3 LT OR PUSH2 0x2340 JUMPI PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATALOAD DUP3 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x84 CALLDATALOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA4 CALLDATALOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC4 CALLDATALOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE4 CALLDATALOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x104 CALLDATALOAD PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x124 CALLDATALOAD PUSH2 0x120 DUP4 ADD MSTORE PUSH2 0x144 CALLDATALOAD PUSH2 0x140 DUP4 ADD MSTORE PUSH2 0x164 CALLDATALOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH2 0x184 CALLDATALOAD PUSH2 0x180 DUP4 ADD MSTORE PUSH2 0x1A4 CALLDATALOAD PUSH2 0x1A0 DUP4 ADD MSTORE PUSH2 0x1C4 CALLDATALOAD PUSH2 0x1C0 DUP4 ADD MSTORE PUSH2 0x1E4 CALLDATALOAD PUSH2 0x1E0 DUP4 ADD MSTORE PUSH2 0x204 CALLDATALOAD PUSH2 0x200 DUP4 ADD MSTORE PUSH2 0x224 CALLDATALOAD PUSH2 0x220 DUP4 ADD MSTORE PUSH2 0x244 CALLDATALOAD PUSH2 0x240 DUP4 ADD MSTORE PUSH2 0x264 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x30F JUMPI POP PUSH2 0x260 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x24 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x836 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x836 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x836 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x836 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x836 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x836 JUMPI JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x23C6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x23B6 JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x23F0 SWAP3 DUP3 PUSH1 0x40 MLOAD SWAP5 DUP4 DUP7 DUP1 SWAP6 MLOAD SWAP4 DUP5 SWAP3 ADD PUSH2 0x23B3 JUMP JUMPDEST DUP3 ADD SWAP1 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x0 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x240B JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x240B JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x240B JUMPI JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2448 JUMPI PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x2 LT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x2488 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ISZERO PUSH2 0x24A5 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920746865206F776E65722063616E2063616C6C20746869732066756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6374696F6E000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x240B JUMPI JUMP JUMPDEST ISZERO PUSH2 0x2543 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x836 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x836 JUMPI SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x25E6 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E73666572206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 SWAP4 PUSH2 0x2662 DUP2 MLOAD DUP1 SWAP3 DUP2 DUP8 MSTORE DUP8 DUP1 DUP9 ADD SWAP2 ADD PUSH2 0x23B3 JUMP JUMPDEST ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP2 LT ISZERO PUSH2 0x281F JUMPI JUMPDEST POP DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x2804 JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x27F0 JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x27DF JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x27D0 JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x27C2 JUMPI JUMPDEST LT ISZERO PUSH2 0x27BA JUMPI JUMPDEST PUSH1 0x1 DUP2 ADD SWAP2 PUSH1 0xA PUSH1 0x0 NOT PUSH1 0x21 PUSH2 0x2713 PUSH2 0x26FD DUP8 PUSH2 0x20AB JUMP JUMPDEST SWAP7 PUSH2 0x270B PUSH1 0x40 MLOAD SWAP9 DUP10 PUSH2 0x2072 JUMP JUMPDEST DUP1 DUP9 MSTORE PUSH2 0x20AB JUMP JUMPDEST SWAP5 PUSH1 0x1F NOT PUSH1 0x20 DUP9 ADD SWAP7 ADD CALLDATASIZE DUP8 CALLDATACOPY DUP7 ADD ADD JUMPDEST ADD SWAP2 PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x2760 JUMPI PUSH1 0x0 NOT PUSH1 0xA SWAP2 SWAP3 PUSH2 0x2724 JUMP JUMPDEST POP POP PUSH2 0x27B4 PUSH1 0x2C PUSH1 0x40 MLOAD DUP1 SWAP4 PUSH2 0x27A3 PUSH1 0x20 DUP4 ADD SWAP7 PUSH32 0x73746F726167652E626F6E640000000000000000000000000000000000000000 DUP9 MSTORE MLOAD DUP1 SWAP3 DUP6 DUP6 ADD SWAP1 PUSH2 0x23B3 JUMP JUMPDEST DUP2 ADD SUB ADD PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x2072 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x26E5 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP3 ADD SWAP2 PUSH2 0x26DE JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP3 ADD SWAP2 PUSH2 0x26D4 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP3 ADD SWAP2 PUSH2 0x26C9 JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP3 ADD SWAP2 PUSH2 0x26BC JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP3 ADD SWAP2 PUSH2 0x26AC JUMP JUMPDEST PUSH1 0x40 SWAP3 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 SWAP1 DIV SWAP1 POP PUSH1 0xA PUSH2 0x2691 JUMP JUMPDEST SWAP1 PUSH1 0x0 PUSH2 0x2857 DUP4 MLOAD PUSH2 0x2669 JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x260 DUP6 ADD MLOAD AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x26 DUP5 ADD SWAP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0xA0 DUP5 ADD DUP1 MLOAD PUSH1 0x5 DUP5 ADD SSTORE PUSH1 0xE0 DUP6 ADD SWAP3 DUP4 MLOAD ISZERO PUSH2 0x3186 JUMPI PUSH2 0x200 DUP7 ADD SWAP3 DUP7 DUP5 MLOAD ISZERO PUSH1 0x0 EQ PUSH2 0x313F JUMPI PUSH2 0x180 PUSH1 0xC SWAP2 ADD MLOAD MOD PUSH2 0x3117 JUMPI DUP7 SWAP1 JUMPDEST PUSH2 0x1C0 DUP3 ADD SWAP1 DUP2 MLOAD PUSH2 0x2F9A JUMPI JUMPDEST PUSH2 0x1A0 DUP4 ADD SWAP2 DUP3 MLOAD PUSH2 0x2E7B JUMPI JUMPDEST PUSH1 0xC0 DUP5 ADD SWAP8 PUSH2 0x291A DUP10 MLOAD DUP3 MLOAD SWAP1 PUSH2 0x445A JUMP JUMPDEST SWAP1 PUSH1 0x6 DUP8 ADD SWAP2 DUP3 SSTORE PUSH2 0x100 DUP7 ADD SWAP2 DUP3 MLOAD SWAP2 PUSH2 0x293C PUSH2 0x120 DUP10 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x445A JUMP JUMPDEST PUSH1 0x9 DUP11 ADD SSTORE PUSH8 0xDE0B6B3A7640000 PUSH2 0x2969 PUSH1 0x40 DUP11 ADD MLOAD DUP1 SWAP13 PUSH1 0x1 DUP14 ADD SWAP14 DUP15 SSTORE PUSH1 0x20 DUP13 ADD MLOAD DUP14 SSTORE MLOAD SWAP1 PUSH2 0x445A JUMP JUMPDEST DIV PUSH1 0x10 DUP11 ADD SSTORE PUSH1 0x60 PUSH2 0x1E0 DUP10 ADD MLOAD SWAP9 PUSH1 0x12 DUP12 ADD SWAP10 DUP11 SSTORE PUSH2 0x180 DUP2 ADD MLOAD PUSH1 0xD DUP13 ADD SSTORE ADD MLOAD SWAP12 DUP13 SWAP12 PUSH3 0x4F1A00 DUP14 PUSH1 0x2 DUP14 ADD SWAP15 DUP16 SSTORE ADD SWAP14 DUP15 DUP2 GT PUSH2 0x240B JUMPI DUP15 LT PUSH2 0x2DF7 JUMPI DUP11 SWAP1 PUSH1 0x3 DUP3 ADD SWAP15 DUP16 SSTORE DUP1 MLOAD ISZERO PUSH1 0x0 EQ PUSH2 0x2D0D JUMPI POP PUSH1 0x25 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE POP POP DUP1 SLOAD PUSH1 0x8 DUP10 ADD SSTORE JUMPDEST PUSH2 0x240 DUP14 ADD DUP1 MLOAD PUSH1 0x1 SUB PUSH2 0x2CB4 JUMPI POP DUP6 MLOAD ISZERO PUSH2 0x2C7D JUMPI PUSH1 0x25 DUP9 ADD PUSH3 0x30000 PUSH3 0xFF0000 NOT DUP3 SLOAD AND OR SWAP1 SSTORE JUMPDEST DUP6 MLOAD PUSH1 0xE DUP10 ADD SSTORE DUP4 MLOAD PUSH1 0xF DUP10 ADD SSTORE PUSH2 0x140 DUP14 ADD SWAP5 DUP14 DUP7 MLOAD SWAP1 DUP2 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x2C6E JUMPI JUMPDEST POP PUSH2 0x2BE2 JUMPI JUMPDEST POP POP PUSH2 0x2BDD SWAP9 SWAP6 PUSH32 0x9CC9725EE02D8F0A4D8B30054405939F4D872CC6A5C2D677E02F5BD87E5DEA2A DUP10 SWAP7 PUSH32 0x5B741EB5649DAEDCC851EF6F057B1BF89B49D12357D31C478C425B6EB1CE9C5 SWAP15 SWAP16 SWAP11 PUSH1 0x40 PUSH2 0x2BB8 SWAP9 PUSH2 0x2B49 PUSH32 0x1ADA3075F8DC673C9DE9BA7C0B8E81065D996D1FAA99FEB6D0A648C8B7A1516D SWAP14 SWAP10 PUSH2 0x2B43 PUSH2 0x2B3D PUSH32 0x91A72ED52432E53C748925EF46B36A19F93CB874539B387D4F3B1F92AA33E11 SWAP12 DUP7 SWAP12 PUSH1 0x1B PUSH32 0x8A7A5C9C34210B39B0DD6C746E4824F7AF2A84C059D4DCBC168A2036D26DF990 SWAP10 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF DUP2 SLOAD AND SWAP1 SSTORE SLOAD SWAP4 MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x445A JUMP JUMPDEST DUP3 PUSH2 0x4F32 JUMP JUMPDEST SWAP1 PUSH2 0x2421 JUMP JUMPDEST PUSH1 0x7 DUP13 ADD SSTORE DUP14 MLOAD SWAP1 MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 DUP11 MLOAD SWAP1 MLOAD PUSH2 0x160 DUP13 ADD MLOAD DUP6 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 SWAP1 LOG1 DUP9 MLOAD SWAP1 MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 DUP6 MLOAD SWAP3 SLOAD SWAP4 SLOAD SWAP1 SLOAD SWAP1 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 DUP6 SWAP1 SWAP5 SWAP4 SWAP3 PUSH1 0x60 SWAP3 PUSH1 0x80 DUP4 ADD SWAP7 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 MLOAD SWAP2 SLOAD SWAP3 SLOAD PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST DUP15 PUSH2 0x2BF4 PUSH2 0x160 DUP3 ADD SWAP3 DUP4 MLOAD SWAP1 PUSH2 0x445A JUMP JUMPDEST PUSH1 0xA DUP13 ADD SSTORE MLOAD SWAP1 DUP8 MLOAD SWAP1 MLOAD SWAP2 ADDRESS EXTCODESIZE ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x68AEA41B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 PUSH1 0x64 DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x2D8 JUMPI ISZERO PUSH2 0x2A43 JUMPI PUSH2 0x2C64 DUP3 DUP1 SWAP3 PUSH2 0x2072 JUMP JUMPDEST PUSH2 0x30F JUMPI DUP1 PUSH2 0x2A43 JUMP JUMPDEST PUSH2 0x160 SWAP2 POP ADD MLOAD ISZERO ISZERO DUP16 PUSH2 0x2A3D JUMP JUMPDEST DUP4 MLOAD ISZERO PUSH2 0x2C9C JUMPI PUSH1 0x25 DUP9 ADD PUSH3 0x40000 PUSH3 0xFF0000 NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x2A1B JUMP JUMPDEST PUSH1 0x25 DUP9 ADD PUSH3 0x10000 PUSH3 0xFF0000 NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x2A1B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2CCE JUMPI POP PUSH1 0x25 DUP9 ADD PUSH3 0xFF0000 NOT DUP2 SLOAD AND SWAP1 SSTORE PUSH2 0x2A1B JUMP JUMPDEST MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE ADD PUSH2 0x2A1B JUMPI PUSH1 0x25 DUP9 ADD PUSH3 0x20000 PUSH3 0xFF0000 NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x2A1B JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 SUB PUSH2 0x2D83 JUMPI POP PUSH2 0x2D79 SWAP3 PUSH2 0x2D5C PUSH2 0x2D74 SWAP4 PUSH1 0x25 PUSH2 0x2D64 SWAP5 ADD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE DUP3 MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x242E JUMP JUMPDEST SWAP1 MLOAD SWAP1 PUSH2 0x445A JUMP JUMPDEST PUSH8 0x3782DACE9D90000 JUMPDEST SWAP1 PUSH2 0x4186 JUMP JUMPDEST PUSH2 0x23FC JUMP JUMPDEST PUSH1 0x8 DUP10 ADD SSTORE PUSH2 0x29F1 JUMP JUMPDEST MLOAD SWAP1 SWAP2 SWAP1 PUSH1 0x2 EQ PUSH2 0x2D97 JUMPI JUMPDEST POP POP POP PUSH2 0x29F1 JUMP JUMPDEST PUSH2 0x2DEA SWAP3 PUSH2 0x2D5C PUSH2 0x2DDC SWAP3 PUSH1 0x25 PUSH2 0x2D74 SWAP6 ADD PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE DUP3 MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x242E JUMP JUMPDEST PUSH8 0x1280F39A3485555 PUSH2 0x2D6E JUMP JUMPDEST PUSH1 0x8 DUP10 ADD SSTORE CODESIZE DUP9 DUP2 PUSH2 0x2D8F JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x54696D657374616D702073686F756C64206265206561726C696572206F722065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7175616C20746F207468652063757272656E742074696D657374616D70000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 DUP6 MLOAD ISZERO PUSH1 0x0 EQ PUSH2 0x2F4E JUMPI POP DUP2 MLOAD PUSH1 0xC SWAP1 MOD ISZERO PUSH2 0x2EC0 JUMPI PUSH1 0x4 DUP9 PUSH32 0xBEBD229200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP9 SWAP8 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 MLOAD DUP4 MLOAD ADDRESS EXTCODESIZE ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH32 0x2DCB118E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE DUP3 DUP2 PUSH1 0x44 DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x2F43 JUMPI SWAP1 DUP11 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x2F24 JUMPI JUMPDEST POP PUSH2 0x2908 JUMP JUMPDEST DUP3 DUP1 SWAP5 SWAP6 POP PUSH2 0x2F35 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x2072 JUMP JUMPDEST PUSH2 0x4BF JUMPI SWAP1 DUP9 SWAP3 SWAP2 CODESIZE PUSH2 0x2F1E JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP6 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 SWAP1 PUSH1 0x1 DUP8 MLOAD SUB PUSH2 0x2908 JUMPI DUP3 MLOAD SWAP2 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 POP SWAP1 PUSH1 0x3 SWAP1 MOD ISZERO PUSH2 0x2EC0 JUMPI PUSH1 0x4 DUP9 PUSH32 0x4F80C6ED00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 DUP5 MLOAD ISZERO PUSH1 0x0 EQ PUSH2 0x305A JUMPI POP DUP1 MLOAD PUSH1 0xC SWAP1 MOD ISZERO PUSH2 0x2FDE JUMPI PUSH1 0x4 DUP8 PUSH32 0xDCBD8C0000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP8 MLOAD DUP3 MLOAD ADDRESS EXTCODESIZE ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH32 0xEE5B280A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE DUP2 DUP2 PUSH1 0x44 DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x2D8 JUMPI SWAP1 DUP10 SWAP4 SWAP3 SWAP2 PUSH2 0x303F JUMPI JUMPDEST POP PUSH2 0x28FB JUMP JUMPDEST DUP2 DUP1 SWAP4 SWAP5 POP PUSH2 0x304D SWAP2 PUSH2 0x2072 JUMP JUMPDEST PUSH2 0x30F JUMPI SWAP1 DUP8 SWAP2 CODESIZE PUSH2 0x3039 JUMP JUMPDEST SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 PUSH1 0x1 DUP7 MLOAD SUB PUSH2 0x28FB JUMPI DUP2 MLOAD SWAP1 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 POP PUSH1 0x3 SWAP1 MOD ISZERO PUSH2 0x30A4 JUMPI PUSH1 0x4 DUP8 PUSH32 0x701090100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP8 MLOAD DUP3 MLOAD ADDRESS EXTCODESIZE ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH32 0xEE5B280A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE DUP2 DUP2 PUSH1 0x44 DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x2D8 JUMPI SWAP1 DUP3 DUP11 SWAP5 SWAP4 SWAP3 PUSH2 0x3107 JUMPI JUMPDEST POP POP PUSH2 0x28FB JUMP JUMPDEST PUSH2 0x3110 SWAP2 PUSH2 0x2072 JUMP JUMPDEST CODESIZE DUP2 PUSH2 0x3100 JUMP JUMPDEST DUP1 PUSH32 0xD38E32C00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST SWAP1 PUSH1 0x1 DUP6 MLOAD SUB PUSH2 0x28EE JUMPI SWAP1 PUSH2 0x180 PUSH1 0x3 SWAP2 ADD MLOAD MOD PUSH2 0x315E JUMPI DUP7 SWAP1 PUSH2 0x28EE JUMP JUMPDEST DUP1 PUSH32 0xECFBD8CF00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0x1DE42A9000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP2 DUP2 LT PUSH2 0x31B9 JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x31AE JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE DUP1 PUSH2 0x31D4 JUMPI POP POP JUMP JUMPDEST PUSH2 0x31E9 SWAP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x31AE JUMP JUMPDEST JUMP JUMPDEST DUP1 SLOAD DUP3 LT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 PUSH1 0x0 SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH9 0x10000000000000000 DUP2 LT ISZERO PUSH2 0x2095 JUMPI PUSH2 0x3225 SWAP2 PUSH1 0x1 DUP3 ADD DUP2 SSTORE PUSH2 0x31EB JUMP JUMPDEST PUSH1 0x0 NOT DUP3 SLOAD SWAP2 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP1 SLOAD PUSH9 0x10000000000000000 DUP2 LT ISZERO PUSH2 0x2095 JUMPI PUSH2 0x3257 SWAP2 PUSH1 0x1 DUP3 ADD DUP2 SSTORE PUSH2 0x31EB JUMP JUMPDEST PUSH1 0x0 NOT DUP3 SWAP4 SWAP3 SLOAD SWAP2 PUSH1 0x3 SHL SWAP3 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST SWAP1 PUSH2 0x3278 DUP3 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF PUSH1 0x1B DUP4 ADD SLOAD PUSH1 0x20 SHR AND ISZERO ISZERO EQ PUSH2 0x36ED JUMPI PUSH3 0x15180 DUP3 DIV PUSH3 0x10BD9 DUP2 ADD SWAP1 PUSH3 0x10BD9 DUP3 SLT PUSH1 0x0 DUP3 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI PUSH3 0x264965 ADD SWAP1 PUSH1 0x0 PUSH3 0x253D8C DUP4 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI DUP1 PUSH1 0x2 SHL PUSH1 0x4 DUP2 SDIV DUP3 SUB PUSH2 0x240B JUMPI PUSH3 0x23AB1 SWAP1 SDIV SWAP1 DUP2 PUSH3 0x23AB1 MUL SWAP1 PUSH3 0x23AB1 DUP3 SDIV DUP4 SUB PUSH2 0x240B JUMPI PUSH1 0x3 DUP3 ADD SWAP2 PUSH1 0x0 PUSH1 0x3 DUP5 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI PUSH1 0x4 PUSH2 0x331C SWAP3 SDIV SWAP1 PUSH2 0x5012 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD PUSH1 0x1 DUP2 SLT PUSH1 0x0 DUP5 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI DUP1 PUSH2 0xFA0 MUL SWAP1 PUSH2 0xFA0 DUP3 SDIV SUB PUSH2 0x240B JUMPI PUSH3 0x164B09 PUSH2 0x3362 SWAP2 SDIV SWAP3 PUSH1 0x4 PUSH2 0x335B DUP6 PUSH2 0x4FFF JUMP JUMPDEST SDIV SWAP1 PUSH2 0x5012 JUMP JUMPDEST SWAP2 PUSH1 0x1F DUP4 ADD SWAP3 PUSH1 0x0 PUSH1 0x1F DUP6 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI DUP3 PUSH1 0x50 MUL PUSH1 0x50 DUP2 SDIV DUP5 SUB PUSH2 0x240B JUMPI PUSH2 0x98F SWAP1 SDIV SWAP3 DUP4 PUSH2 0x98F MUL SWAP1 PUSH2 0x98F DUP3 SDIV DUP6 SUB PUSH2 0x240B JUMPI PUSH1 0x50 PUSH2 0x33AF SWAP3 SDIV SWAP1 PUSH2 0x5012 JUMP JUMPDEST SWAP3 PUSH1 0xB DUP2 SDIV SWAP1 PUSH1 0x2 DUP2 ADD SWAP1 PUSH1 0x0 PUSH1 0x2 DUP4 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI DUP2 PUSH1 0xC MUL PUSH1 0xC DUP2 SDIV DUP4 SUB PUSH2 0x240B JUMPI PUSH2 0x33E6 SWAP2 PUSH2 0x5012 JUMP JUMPDEST SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF DUP2 ADD SWAP1 DUP2 SGT PUSH1 0x1 AND PUSH2 0x240B JUMPI DUP1 PUSH1 0x64 MUL SWAP1 PUSH1 0x64 DUP3 SDIV SUB PUSH2 0x240B JUMPI PUSH2 0x3434 SWAP3 PUSH2 0x342F SWAP2 PUSH2 0x4FE3 JUMP JUMPDEST PUSH2 0x4FE3 JUMP JUMPDEST PUSH1 0x0 SWAP2 PUSH1 0x25 DUP6 ADD SWAP3 PUSH1 0xFF DUP5 SLOAD AND PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x36D9 JUMPI DUP1 PUSH2 0x36B6 JUMPI POP POP PUSH1 0xC PUSH1 0xD DUP7 ADD SLOAD DIV SWAP4 JUMPDEST PUSH1 0x0 SWAP5 DUP4 PUSH1 0x1D DUP9 ADD SWAP5 PUSH2 0x346D DUP7 PUSH2 0x31C5 JUMP JUMPDEST PUSH1 0x21 DUP10 ADD SWAP8 DUP9 SLOAD DUP2 DUP11 SSTORE DUP1 PUSH2 0x3697 JUMPI JUMPDEST POP DUP1 JUMPDEST DUP5 DUP2 LT PUSH2 0x34C9 JUMPI POP POP POP POP POP POP POP POP POP POP SWAP2 DUP2 PUSH1 0x40 SWAP3 PUSH1 0xB PUSH32 0x6D7086AB13FBD1583240E1B6E62B23416E3945F952373732FC183A2A407E462D SWAP6 ADD SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 JUMP JUMPDEST PUSH1 0xFF DUP10 SLOAD AND PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x2488 JUMPI PUSH1 0x2 DUP2 SUB PUSH2 0x35E5 JUMPI POP SWAP1 SWAP2 DUP2 PUSH2 0x35AC JUMPI POP SWAP1 POP PUSH1 0xC DUP6 MOD PUSH2 0x35A5 JUMPI PUSH1 0x1 DUP3 ADD DUP1 DUP4 GT PUSH2 0x240B JUMPI SWAP1 JUMPDEST PUSH1 0x1 DUP7 ADD DUP1 DUP8 GT PUSH2 0x240B JUMPI PUSH1 0xC SWAP1 MOD SWAP1 DUP2 ISZERO PUSH2 0x359C JUMPI JUMPDEST PUSH2 0x352A PUSH2 0x3524 DUP8 DUP5 DUP7 PUSH2 0x426C JUMP JUMPDEST DUP10 PUSH2 0x3235 JUMP JUMPDEST PUSH1 0x0 NOT DUP6 ADD DUP6 DUP2 GT PUSH2 0x240B JUMPI DUP2 EQ PUSH2 0x3587 JUMPI JUMPDEST DUP10 SLOAD SWAP1 PUSH9 0x10000000000000000 DUP3 LT ISZERO PUSH2 0x2095 JUMPI PUSH1 0x1 DUP3 ADD DUP1 DUP13 SSTORE DUP3 LT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x1 SWAP2 DUP12 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 DUP2 PUSH1 0x5 SHR ADD SWAP1 PUSH1 0xFF PUSH1 0xF8 DUP4 SLOAD SWAP3 PUSH1 0x3 SHL AND SHL NOT AND SWAP1 SSTORE ADD PUSH2 0x3480 JUMP JUMPDEST PUSH2 0x3592 DUP7 DUP4 DUP6 PUSH2 0x426C JUMP JUMPDEST PUSH1 0xC DUP13 ADD SSTORE PUSH2 0x353D JUMP JUMPDEST PUSH1 0xC SWAP2 POP PUSH2 0x3516 JUMP JUMPDEST DUP2 SWAP1 PUSH2 0x34FF JUMP JUMPDEST PUSH1 0xC DUP4 MOD PUSH2 0x35DF JUMPI PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x240B JUMPI SWAP2 JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x240B JUMPI PUSH1 0xC SWAP1 MOD SWAP1 DUP2 PUSH2 0x3516 JUMPI PUSH1 0xC SWAP2 POP PUSH2 0x3516 JUMP JUMPDEST SWAP2 PUSH2 0x35C1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 SUB PUSH2 0x3670 JUMPI POP POP SWAP1 DUP2 ISZERO PUSH1 0x0 EQ PUSH2 0x3636 JUMPI POP SWAP1 POP PUSH1 0xA DUP6 LT PUSH2 0x362F JUMPI PUSH1 0x1 DUP3 ADD DUP1 DUP4 GT PUSH2 0x240B JUMPI SWAP1 JUMPDEST PUSH1 0x3 DUP7 ADD DUP1 DUP8 GT PUSH2 0x240B JUMPI PUSH1 0xC SWAP1 MOD SWAP1 DUP2 ISZERO PUSH2 0x359C JUMPI JUMPDEST PUSH2 0x3516 JUMP JUMPDEST DUP2 SWAP1 PUSH2 0x3613 JUMP JUMPDEST PUSH1 0xA DUP2 LT ISZERO PUSH2 0x365E JUMPI JUMPDEST PUSH1 0x3 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x240B JUMPI PUSH1 0xC SWAP1 MOD SWAP1 DUP2 PUSH2 0x362A JUMPI PUSH1 0xC SWAP2 POP PUSH2 0x3516 JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x240B JUMPI SWAP2 PUSH2 0x3640 JUMP JUMPDEST POP PUSH2 0x3516 JUMPI SWAP2 DUP3 PUSH2 0x3686 JUMPI POP POP DUP2 SWAP1 DUP6 SWAP1 PUSH2 0x3516 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x240B JUMPI SWAP2 PUSH2 0x3516 JUMP JUMPDEST DUP10 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH2 0x36B0 SWAP2 PUSH1 0x1F ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH2 0x31AE JUMP JUMPDEST CODESIZE PUSH2 0x347D JUMP JUMPDEST PUSH1 0x1 EQ ISZERO SWAP1 POP PUSH2 0x36CE JUMPI PUSH1 0x3 PUSH1 0xD DUP7 ADD SLOAD DIV SWAP4 PUSH2 0x345B JUMP JUMPDEST PUSH1 0xD DUP6 ADD SLOAD SWAP4 PUSH2 0x345B JUMP JUMPDEST PUSH1 0x24 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH32 0xDECAAE0200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x20 DUP3 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x373B JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 SLOAD DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x1 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x372E JUMP JUMPDEST PUSH2 0x375A DUP2 PUSH2 0x2669 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0xFF PUSH1 0x1B DUP5 ADD SLOAD PUSH1 0x20 SHR AND ISZERO ISZERO EQ PUSH2 0x36ED JUMPI PUSH1 0x0 PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0xFF PUSH1 0x25 DUP6 ADD SLOAD AND PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x3EEC JUMPI DUP1 PUSH2 0x4166 JUMPI POP PUSH1 0xC PUSH1 0xD DUP6 ADD SLOAD DIV SWAP2 JUMPDEST PUSH2 0x37A3 PUSH1 0x1C DUP7 ADD PUSH2 0x31C5 JUMP JUMPDEST PUSH2 0x37AF PUSH1 0x1E DUP7 ADD PUSH2 0x31C5 JUMP JUMPDEST PUSH2 0x37BB PUSH1 0x1F DUP7 ADD PUSH2 0x31C5 JUMP JUMPDEST PUSH2 0x37C7 PUSH1 0x20 DUP7 ADD PUSH2 0x31C5 JUMP JUMPDEST PUSH2 0x37D3 PUSH1 0x1F DUP7 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x37E4 PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x20 DUP8 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x37F0 PUSH1 0x1C DUP7 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x37FC PUSH1 0x1E DUP7 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x5 DUP6 ADD SLOAD PUSH1 0x16 DUP7 ADD SSTORE DUP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x3923 JUMPI POP POP POP POP PUSH2 0x38F5 PUSH2 0x38EE SWAP2 PUSH32 0x2F3E3B3AAADF1F165FA7D634278FA8EE54A0548DBF8FC62A1D301DA8F6AA6298 PUSH1 0x40 PUSH1 0x8 DUP7 ADD SLOAD DUP2 MLOAD SWAP1 DUP5 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 PUSH32 0x1CD0EC0194CD0B5111BF7154D1801AB3549A822FCFF5AC188BCAA7F310AA11DE PUSH1 0x1D DUP6 ADD SWAP2 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0xC0 PUSH1 0x20 DUP3 ADD MSTORE DUP1 PUSH2 0x38DF PUSH2 0x38CE PUSH2 0x38BD PUSH2 0x38AC PUSH2 0x389B PUSH1 0xC0 DUP7 ADD DUP10 PUSH2 0x3717 JUMP JUMPDEST DUP6 DUP2 SUB PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x20 DUP13 ADD PUSH2 0x3717 JUMP JUMPDEST DUP5 DUP2 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x1F DUP12 ADD PUSH2 0x3717 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0x1C DUP11 ADD PUSH2 0x3717 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x1E DUP10 ADD PUSH2 0x3717 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH2 0x3717 JUMP JUMPDEST SUB DUP3 PUSH2 0x2072 JUMP JUMPDEST SWAP2 PUSH1 0x1E PUSH2 0x3920 PUSH1 0x40 MLOAD PUSH2 0x390F DUP2 PUSH2 0x38EE DUP2 PUSH1 0x1C DUP10 ADD PUSH2 0x3717 JUMP JUMPDEST SWAP4 PUSH2 0x38EE PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 ADD PUSH2 0x3717 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x25 DUP7 ADD SLOAD SWAP2 PUSH1 0x6 PUSH1 0xFF DUP5 PUSH1 0x10 SHR AND LT ISZERO SWAP2 DUP3 PUSH2 0x2488 JUMPI PUSH1 0xFF DUP5 PUSH1 0x10 SHR AND ISZERO PUSH1 0x0 EQ PUSH2 0x3FED JUMPI POP PUSH1 0x0 SWAP3 JUMPDEST PUSH2 0x395C DUP6 PUSH1 0x8 DUP11 ADD SLOAD PUSH2 0x4F32 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 DUP3 MUL SWAP2 DUP1 DUP4 DIV PUSH8 0xDE0B6B3A7640000 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x240B JUMPI DUP2 PUSH1 0x9 DUP11 ADD SLOAD PUSH8 0xDE0B6B3A7640000 SUB PUSH8 0xDE0B6B3A7640000 DUP2 GT PUSH2 0x240B JUMPI PUSH2 0x39A6 SWAP2 PUSH2 0x4F32 JUMP JUMPDEST SWAP4 PUSH2 0x2488 JUMPI PUSH1 0xFF DUP2 PUSH1 0x10 SHR AND ISZERO PUSH1 0x0 EQ PUSH2 0x3A41 JUMPI POP DUP6 PUSH1 0x0 NOT DUP2 ADD GT PUSH2 0x240B JUMPI PUSH1 0x1 SWAP3 PUSH2 0x3A00 PUSH2 0x3A17 SWAP3 PUSH1 0x0 NOT DUP10 ADD DUP6 LT PUSH1 0x0 EQ PUSH2 0x3A23 JUMPI PUSH2 0x39EA PUSH1 0x1F DUP13 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x39F7 DUP9 PUSH1 0x20 DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH1 0x1C DUP12 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x3A0D DUP2 PUSH1 0x1E DUP12 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH1 0x16 DUP10 ADD SLOAD PUSH2 0x242E JUMP JUMPDEST PUSH1 0x16 DUP9 ADD SSTORE ADD SWAP1 PUSH2 0x3808 JUMP JUMPDEST PUSH2 0x3A2F PUSH1 0x20 DUP13 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x3A3C DUP9 PUSH1 0x1F DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x39F7 JUMP JUMPDEST PUSH1 0x0 SWAP6 SWAP2 SWAP3 SWAP6 PUSH1 0x2 PUSH1 0xFF DUP4 PUSH1 0x10 SHR AND EQ PUSH1 0x0 EQ PUSH2 0x3AF2 JUMPI POP POP DUP5 PUSH2 0x3AA8 JUMPI PUSH1 0x1 SWAP3 PUSH2 0x3A00 PUSH1 0x20 SWAP7 SWAP4 PUSH2 0x3A3C DUP5 PUSH2 0x3A9F DUP14 PUSH2 0x3A96 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3A8E PUSH2 0x3A17 SWAP11 PUSH1 0xA DUP6 ADD SLOAD PUSH2 0x4F32 JUMP JUMPDEST DIV DUP1 SWAP5 PUSH2 0x2421 JUMP JUMPDEST SWAP12 DUP13 SWAP2 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH1 0x1F DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST SWAP4 SWAP1 DUP6 PUSH1 0x0 NOT DUP2 ADD GT PUSH2 0x240B JUMPI PUSH1 0x1 SWAP3 PUSH2 0x3A00 PUSH2 0x3A17 SWAP3 PUSH1 0x0 NOT DUP10 ADD DUP6 EQ PUSH1 0x0 EQ PUSH2 0x3AD9 JUMPI PUSH2 0x3A2F PUSH1 0x20 DUP13 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x3AE6 DUP9 PUSH1 0x20 DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x3A3C PUSH1 0x1F DUP13 ADD PUSH2 0x3203 JUMP JUMPDEST SWAP6 SWAP4 SWAP3 SWAP6 POP PUSH1 0x1 PUSH1 0xFF DUP3 PUSH1 0x10 SHR AND EQ PUSH1 0x0 EQ PUSH2 0x3B88 JUMPI POP DUP6 PUSH1 0x0 NOT DUP2 ADD GT PUSH2 0x240B JUMPI DUP8 PUSH1 0x0 NOT DUP8 ADD DUP5 LT ISZERO PUSH2 0x3B51 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x3A00 PUSH2 0x3B36 DUP7 PUSH2 0x3A17 SWAP5 PUSH2 0x2421 JUMP JUMPDEST SWAP7 PUSH2 0x3B44 DUP9 PUSH1 0x20 DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x3A3C DUP8 PUSH1 0x1F DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST SWAP2 PUSH2 0x3A00 PUSH2 0x3A17 SWAP3 SWAP7 PUSH2 0x3A3C PUSH2 0x3B78 DUP8 PUSH1 0x20 DUP9 PUSH2 0x3B72 DUP3 PUSH1 0x1 SWAP13 SWAP12 ADD PUSH2 0x3203 JUMP JUMPDEST ADD PUSH2 0x31EB JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH1 0x1F DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0xFF DUP4 PUSH1 0x10 SHR AND EQ PUSH1 0x0 EQ PUSH2 0x3CB1 JUMPI POP POP PUSH1 0xFF PUSH1 0x25 DUP10 ADD SLOAD AND PUSH1 0x3 DUP2 LT ISZERO SWAP1 DUP2 PUSH2 0x2488 JUMPI DUP1 ISZERO SWAP2 DUP3 PUSH2 0x3C9E JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3C78 JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3C53 JUMPI JUMPDEST POP POP ISZERO PUSH2 0x3C3B JUMPI DUP6 PUSH1 0x0 NOT DUP2 ADD GT PUSH2 0x240B JUMPI DUP8 PUSH1 0x0 NOT DUP8 ADD DUP5 LT ISZERO PUSH2 0x3C16 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x3A00 PUSH2 0x3BFB DUP7 PUSH2 0x3A17 SWAP5 PUSH2 0x2421 JUMP JUMPDEST SWAP7 PUSH2 0x3C09 DUP8 PUSH1 0x1F DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x3A3C DUP9 PUSH1 0x20 DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST SWAP5 PUSH2 0x3A17 SWAP2 POP SWAP2 PUSH2 0x3A00 DUP5 SWAP4 PUSH2 0x3A3C PUSH2 0x3B78 PUSH1 0x1 SWAP8 PUSH1 0x20 PUSH1 0x0 SWAP12 PUSH2 0x3B72 DUP3 DUP3 ADD PUSH2 0x3203 JUMP JUMPDEST SWAP4 PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x3A00 PUSH2 0x3A17 SWAP3 PUSH2 0x3C09 PUSH1 0x1F DUP13 ADD PUSH2 0x3203 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH2 0x2488 JUMPI PUSH1 0x2 EQ DUP1 PUSH2 0x3C6A JUMPI JUMPDEST CODESIZE DUP1 PUSH2 0x3BC7 JUMP JUMPDEST POP PUSH1 0xE DUP9 ADD SLOAD DUP4 LT ISZERO PUSH2 0x3C63 JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH1 0x1 DUP2 EQ DUP1 PUSH2 0x3C8D JUMPI JUMPDEST SWAP2 PUSH2 0x3BC0 JUMP JUMPDEST POP PUSH1 0x3 PUSH1 0xE DUP12 ADD SLOAD DIV DUP6 LT ISZERO PUSH2 0x3C87 JUMP JUMPDEST SWAP2 POP PUSH1 0xC PUSH1 0xE DUP12 ADD SLOAD DIV DUP6 LT ISZERO SWAP2 PUSH2 0x3BB9 JUMP JUMPDEST POP PUSH1 0x4 PUSH1 0xFF DUP3 PUSH1 0x10 SHR AND EQ PUSH1 0x0 EQ PUSH2 0x3D9B JUMPI POP PUSH1 0xFF PUSH1 0x25 DUP10 ADD SLOAD AND PUSH1 0x3 DUP2 LT ISZERO SWAP1 DUP2 PUSH2 0x2488 JUMPI DUP1 ISZERO SWAP2 DUP3 PUSH2 0x3D88 JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3D62 JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3D3D JUMPI JUMPDEST POP POP ISZERO PUSH2 0x3D22 JUMPI DUP6 PUSH1 0x0 NOT DUP2 ADD GT PUSH2 0x240B JUMPI DUP8 PUSH1 0x0 NOT DUP8 ADD DUP5 LT ISZERO PUSH2 0x3C16 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x3A00 PUSH2 0x3BFB DUP7 PUSH2 0x3A17 SWAP5 PUSH2 0x2421 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x1 SWAP1 PUSH2 0x3A17 PUSH1 0x0 PUSH2 0x3A00 DUP2 PUSH2 0x3C09 PUSH1 0x1F DUP13 ADD PUSH2 0x3203 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH2 0x2488 JUMPI PUSH1 0x2 EQ DUP1 PUSH2 0x3D54 JUMPI JUMPDEST CODESIZE DUP1 PUSH2 0x3CEE JUMP JUMPDEST POP PUSH1 0xF DUP9 ADD SLOAD DUP4 LT ISZERO PUSH2 0x3D4D JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH1 0x1 DUP2 EQ DUP1 PUSH2 0x3D77 JUMPI JUMPDEST SWAP2 PUSH2 0x3CE7 JUMP JUMPDEST POP PUSH1 0x3 PUSH1 0xF DUP12 ADD SLOAD DIV DUP6 LT ISZERO PUSH2 0x3D71 JUMP JUMPDEST SWAP2 POP PUSH1 0xC PUSH1 0xF DUP12 ADD SLOAD DIV DUP6 LT ISZERO SWAP2 PUSH2 0x3CE0 JUMP JUMPDEST PUSH1 0x0 SWAP6 SWAP2 SWAP6 SWAP1 PUSH1 0x5 PUSH1 0xFF DUP3 PUSH1 0x10 SHR AND EQ PUSH2 0x3DC2 JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x3A00 PUSH2 0x3A17 SWAP3 PUSH2 0x39F7 JUMP JUMPDEST PUSH1 0x3 PUSH1 0xFF DUP3 SWAP9 SWAP4 SWAP9 AND LT ISZERO SWAP1 DUP2 PUSH2 0x3FD9 JUMPI PUSH1 0xFF DUP2 AND ISZERO SWAP2 DUP3 PUSH2 0x3FC6 JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3F9E JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3F62 JUMPI JUMPDEST POP POP ISZERO PUSH2 0x3F48 JUMPI DUP7 PUSH1 0x0 NOT DUP2 ADD GT PUSH2 0x3F34 JUMPI DUP5 PUSH1 0x0 NOT DUP9 ADD DUP6 LT ISZERO PUSH2 0x3F00 JUMPI PUSH2 0x3E15 SWAP2 PUSH2 0x2421 JUMP JUMPDEST SWAP5 PUSH2 0x3E23 DUP6 PUSH1 0x1F DUP12 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x3E30 DUP7 PUSH1 0x20 DUP12 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x25 DUP11 ADD SLOAD AND PUSH1 0x3 DUP2 LT ISZERO SWAP1 DUP2 PUSH2 0x3EEC JUMPI DUP1 ISZERO SWAP2 DUP3 PUSH2 0x3EDA JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3EB6 JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3E83 JUMPI JUMPDEST POP POP SWAP2 PUSH1 0x1 SWAP5 SWAP4 SWAP2 PUSH2 0x3A17 SWAP4 PUSH2 0x3E76 JUMPI JUMPDEST POP SWAP2 DUP2 SWAP4 SWAP5 POP PUSH2 0x3DB0 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP PUSH2 0x3A00 PUSH2 0x3E6B JUMP JUMPDEST SWAP1 SWAP2 POP PUSH2 0x36D9 JUMPI SWAP2 PUSH1 0x1 SWAP5 SWAP4 SWAP2 PUSH1 0x2 PUSH2 0x3A17 SWAP5 EQ DUP1 PUSH2 0x3EA9 JUMPI JUMPDEST SWAP2 SWAP4 DUP2 SWAP4 SWAP6 SWAP7 POP PUSH2 0x3E5A JUMP JUMPDEST POP PUSH1 0xF DUP12 ADD SLOAD DUP6 LT PUSH2 0x3E9D JUMP JUMPDEST POP DUP3 SWAP2 POP PUSH1 0x1 DUP2 EQ DUP1 PUSH2 0x3ECA JUMPI JUMPDEST SWAP2 PUSH2 0x3E53 JUMP JUMPDEST POP PUSH1 0x3 PUSH1 0xF DUP13 ADD SLOAD DIV DUP7 LT PUSH2 0x3EC4 JUMP JUMPDEST SWAP2 POP PUSH1 0xC PUSH1 0xF DUP13 ADD SLOAD DIV DUP7 LT SWAP2 PUSH2 0x3E4C JUMP JUMPDEST PUSH1 0x24 DUP4 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE REVERT JUMPDEST POP POP DUP5 PUSH2 0x3F0F PUSH1 0x20 DUP11 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x3F2F PUSH2 0x3F1F DUP6 PUSH1 0x20 DUP13 ADD PUSH2 0x31EB JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH1 0x1F DUP12 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x3E30 JUMP JUMPDEST PUSH1 0x24 DUP7 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST SWAP5 PUSH2 0x3F55 PUSH1 0x1F DUP11 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x3F2F DUP7 PUSH1 0x20 DUP12 ADD PUSH2 0x3235 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH2 0x3F8A JUMPI PUSH1 0xFF AND PUSH1 0x2 EQ DUP1 PUSH2 0x3F7C JUMPI JUMPDEST CODESIZE DUP1 PUSH2 0x3DED JUMP JUMPDEST POP PUSH1 0xE DUP10 ADD SLOAD DUP5 LT ISZERO PUSH2 0x3F75 JUMP JUMPDEST PUSH1 0x24 DUP8 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE REVERT JUMPDEST POP DUP8 SWAP2 POP PUSH1 0xFF DUP2 AND PUSH1 0x1 EQ DUP1 PUSH2 0x3FB5 JUMPI JUMPDEST SWAP2 PUSH2 0x3DE6 JUMP JUMPDEST POP PUSH1 0x3 PUSH1 0xE DUP13 ADD SLOAD DIV DUP7 LT ISZERO PUSH2 0x3FAF JUMP JUMPDEST SWAP2 POP PUSH1 0xC PUSH1 0xE DUP13 ADD SLOAD DIV DUP7 LT ISZERO SWAP2 PUSH2 0x3DDF JUMP JUMPDEST PUSH1 0x24 DUP9 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH1 0x0 SWAP3 POP PUSH1 0x10 DUP5 SWAP1 SHR PUSH1 0xFF AND PUSH1 0x1 SUB PUSH2 0x401F JUMPI POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x4018 DUP7 PUSH1 0x5 DUP11 ADD SLOAD PUSH2 0x445A JUMP JUMPDEST DIV SWAP3 PUSH2 0x394E JUMP JUMPDEST PUSH1 0x3 PUSH1 0xFF DUP6 PUSH1 0x10 SHR AND EQ DUP1 ISZERO PUSH2 0x4151 JUMPI JUMPDEST ISZERO PUSH2 0x40C0 JUMPI POP PUSH1 0x3 PUSH1 0xFF DUP5 AND LT ISZERO PUSH2 0x2488 JUMPI PUSH1 0xFF DUP4 AND PUSH2 0x4072 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x4018 PUSH1 0x5 DUP10 ADD SLOAD PUSH2 0x406C PUSH1 0xC PUSH1 0xE DUP13 ADD SLOAD DIV DUP10 PUSH2 0x2421 JUMP JUMPDEST SWAP1 PUSH2 0x445A JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH1 0x0 PUSH1 0xFF DUP6 AND PUSH1 0x1 SUB PUSH2 0x40AA JUMPI PUSH2 0x40A1 PUSH1 0x5 DUP11 ADD SLOAD PUSH2 0x406C PUSH1 0x3 PUSH1 0xE DUP14 ADD SLOAD DIV DUP11 PUSH2 0x2421 JUMP JUMPDEST SWAP1 POP DIV SWAP3 PUSH2 0x394E JUMP JUMPDEST PUSH2 0x40A1 PUSH1 0x5 DUP11 ADD SLOAD PUSH2 0x406C PUSH1 0xE DUP13 ADD SLOAD DUP11 PUSH2 0x2421 JUMP JUMPDEST SWAP3 DUP3 PUSH2 0x2488 JUMPI PUSH1 0x4 PUSH1 0xFF DUP3 PUSH1 0x10 SHR AND SUB PUSH2 0x394E JUMPI SWAP3 POP PUSH1 0x3 PUSH1 0xFF DUP5 AND LT ISZERO PUSH2 0x2488 JUMPI PUSH1 0xFF DUP4 AND PUSH2 0x410C JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x4018 PUSH1 0x5 DUP10 ADD SLOAD PUSH2 0x406C PUSH1 0xC PUSH1 0xF DUP13 ADD SLOAD DIV DUP10 PUSH2 0x2421 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH1 0x0 PUSH1 0xFF DUP6 AND PUSH1 0x1 SUB PUSH2 0x413B JUMPI PUSH2 0x40A1 PUSH1 0x5 DUP11 ADD SLOAD PUSH2 0x406C PUSH1 0x3 PUSH1 0xF DUP14 ADD SLOAD DIV DUP11 PUSH2 0x2421 JUMP JUMPDEST PUSH2 0x40A1 PUSH1 0x5 DUP11 ADD SLOAD PUSH2 0x406C PUSH1 0xF DUP13 ADD SLOAD DUP11 PUSH2 0x2421 JUMP JUMPDEST POP SWAP2 POP PUSH1 0x0 SWAP2 PUSH1 0x5 PUSH1 0xFF DUP6 PUSH1 0x10 SHR AND EQ PUSH2 0x4030 JUMP JUMPDEST PUSH1 0x1 SUB PUSH2 0x417B JUMPI PUSH1 0x3 PUSH1 0xD DUP6 ADD SLOAD DIV SWAP2 PUSH2 0x3797 JUMP JUMPDEST PUSH1 0xD DUP5 ADD SLOAD SWAP2 PUSH2 0x3797 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x41A5 JUMPI POP POP PUSH2 0x41A0 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP3 EQ PUSH2 0x425D JUMPI DUP3 PUSH2 0x41C8 JUMPI POP POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 EQ PUSH2 0x4257 JUMPI PUSH8 0xDE0B6B3A7640000 DUP3 GT ISZERO PUSH2 0x4202 JUMPI POP PUSH2 0x3920 SWAP2 PUSH2 0x41F8 PUSH2 0x41FD SWAP3 PUSH2 0x4536 JUMP JUMPDEST PUSH2 0x4F32 JUMP JUMPDEST PUSH2 0x4657 JUMP JUMPDEST PUSH2 0x4241 JUMPI PUSH2 0x4227 SWAP2 PUSH2 0x41F8 PUSH2 0x41FD SWAP3 PUSH15 0xC097CE7BC90715B34B9F1000000000 DIV PUSH2 0x4536 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4241 JUMPI PUSH15 0xC097CE7BC90715B34B9F1000000000 DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST POP POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x7B2 DUP3 LT PUSH2 0x43FC JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2 DUP2 ADD DUP2 DUP2 SGT PUSH1 0x1 AND PUSH2 0x240B JUMPI PUSH1 0xC SWAP1 SDIV SWAP2 PUSH2 0x12C0 DUP2 ADD SWAP1 PUSH1 0x0 PUSH2 0x12C0 DUP4 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI DUP3 PUSH2 0x42CE SWAP2 PUSH2 0x4FE3 JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE DUP3 ADD SWAP2 DUP3 SGT PUSH1 0x1 AND PUSH2 0x240B JUMPI PUSH1 0xC DUP2 MUL SWAP1 DUP1 DUP3 SDIV PUSH1 0xC EQ SWAP1 ISZERO OR ISZERO PUSH2 0x240B JUMPI PUSH2 0x4318 SWAP2 PUSH2 0x5012 JUMP JUMPDEST SWAP2 PUSH2 0x4322 DUP3 PUSH2 0x4FFF JUMP JUMPDEST SWAP2 DUP4 PUSH2 0x16F MUL SWAP4 PUSH2 0x16F DUP6 SDIV SUB PUSH2 0x240B JUMPI PUSH1 0x64 DUP2 ADD SWAP1 PUSH1 0x0 PUSH1 0x64 DUP4 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI PUSH1 0x64 SWAP1 SDIV SWAP2 DUP3 PUSH1 0x3 MUL SWAP3 PUSH1 0x3 DUP5 SDIV SUB PUSH2 0x240B JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82B5 DUP3 ADD SWAP2 DUP3 SGT PUSH1 0x1 AND PUSH2 0x240B JUMPI PUSH2 0x43B5 SWAP4 PUSH1 0xC PUSH2 0x43A5 PUSH1 0x4 SWAP5 DUP6 PUSH2 0x43AD SWAP6 SDIV SWAP1 PUSH2 0x4FE3 JUMP JUMPDEST SWAP2 SDIV SWAP1 PUSH2 0x4FE3 JUMP JUMPDEST SWAP2 SDIV SWAP1 PUSH2 0x5012 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDAC274 DUP2 ADD SWAP1 DUP2 SGT PUSH1 0x1 AND PUSH2 0x240B JUMPI PUSH3 0x15180 DUP2 MUL SWAP1 DUP1 DUP3 DIV PUSH3 0x15180 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x240B JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x596561722063616E6E6F74206265206561726C696572207468616E2031393730 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 NOT PUSH8 0xDE0B6B3A7640000 DUP3 MULMOD SWAP2 PUSH8 0xDE0B6B3A7640000 DUP3 MUL SWAP2 DUP3 DUP1 DUP6 LT SWAP5 SUB SWAP4 DUP1 DUP6 SUB SWAP5 EQ PUSH2 0x4529 JUMPI DUP2 DUP5 LT ISZERO PUSH2 0x44ED JUMPI PUSH8 0xDE0B6B3A7640000 DUP3 SWAP2 MULMOD PUSH1 0x1 DUP3 NOT ADD DUP3 AND DUP1 SWAP3 DIV PUSH1 0x2 DUP2 PUSH1 0x3 MUL XOR DUP1 DUP3 MUL PUSH1 0x2 SUB MUL DUP1 DUP3 MUL PUSH1 0x2 SUB MUL DUP1 DUP3 MUL PUSH1 0x2 SUB MUL DUP1 DUP3 MUL PUSH1 0x2 SUB MUL DUP1 DUP3 MUL PUSH1 0x2 SUB MUL DUP1 SWAP2 MUL PUSH1 0x2 SUB MUL SWAP4 PUSH1 0x1 DUP4 DUP1 PUSH1 0x0 SUB DIV ADD SWAP1 DUP5 DUP4 GT SWAP1 SUB MUL SWAP3 SUB DIV OR MUL SWAP1 JUMP JUMPDEST PUSH32 0x63A0577800000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 POP DUP2 ISZERO PUSH2 0x4241 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 LT PUSH2 0x462A JUMPI PUSH8 0xDE0B6B3A7640000 DUP2 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x7 SHL SWAP1 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR SWAP1 PUSH1 0xFF DUP3 GT PUSH1 0x3 SHL SWAP2 DUP3 SHR SWAP3 PUSH1 0xF DUP5 GT PUSH1 0x2 SHL SWAP4 DUP5 SHR SWAP5 PUSH1 0x1 PUSH1 0x3 DUP8 GT DUP2 SHL SWAP7 DUP8 SHR GT SWAP7 OR OR OR OR OR OR OR SWAP1 PUSH8 0xDE0B6B3A7640000 DUP3 MUL SWAP2 SHR PUSH8 0xDE0B6B3A7640000 DUP2 EQ PUSH2 0x4626 JUMPI PUSH8 0x6F05B59D3B20000 SWAP1 DUP2 JUMPDEST PUSH2 0x45EF JUMPI POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH8 0xDE0B6B3A7640000 SWAP2 MUL DIV SWAP1 PUSH8 0x1BC16D674EC80000 DUP3 LT ISZERO PUSH2 0x4618 JUMPI JUMPDEST PUSH1 0x1 SHR SWAP1 DUP2 PUSH2 0x45E6 JUMP JUMPDEST DUP1 SWAP2 SWAP3 ADD SWAP2 PUSH1 0x1 SHR SWAP1 PUSH2 0x460E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH32 0x36D32EF000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH9 0xA688906BD8AFFFFFF DUP2 GT PUSH2 0x4F05 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP1 PUSH1 0x40 SHL DIV PUSH24 0x800000000000000000000000000000000000000000000000 PUSH8 0xFF00000000000000 DUP3 AND PUSH2 0x4DD0 JUMPI JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP1 PUSH7 0xFF000000000000 DUP4 AND PUSH2 0x4CC0 JUMPI JUMPDEST PUSH6 0xFF0000000000 DUP4 AND PUSH2 0x4BB8 JUMPI JUMPDEST PUSH5 0xFF00000000 DUP4 AND PUSH2 0x4AB8 JUMPI JUMPDEST PUSH4 0xFF000000 DUP4 AND PUSH2 0x49C0 JUMPI JUMPDEST PUSH3 0xFF0000 DUP4 AND PUSH2 0x48D0 JUMPI JUMPDEST PUSH2 0xFF00 DUP4 AND PUSH2 0x47E8 JUMPI JUMPDEST PUSH1 0xFF DUP4 AND PUSH2 0x4708 JUMPI JUMPDEST MUL SWAP1 PUSH1 0x40 SHR PUSH1 0xBF SUB SHR SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP4 AND PUSH2 0x47D5 JUMPI JUMPDEST PUSH1 0x40 DUP4 AND PUSH2 0x47C2 JUMPI JUMPDEST PUSH1 0x20 DUP4 AND PUSH2 0x47AF JUMPI JUMPDEST PUSH1 0x10 DUP4 AND PUSH2 0x479C JUMPI JUMPDEST PUSH1 0x8 DUP4 AND PUSH2 0x4789 JUMPI JUMPDEST PUSH1 0x4 DUP4 AND PUSH2 0x4776 JUMPI JUMPDEST PUSH1 0x2 DUP4 AND PUSH2 0x4763 JUMPI JUMPDEST PUSH1 0x1 DUP4 AND ISZERO PUSH2 0x46FC JUMPI PUSH9 0x10000000000000001 MUL PUSH1 0x40 SHR PUSH2 0x46FC JUMP JUMPDEST PUSH9 0x10000000000000001 MUL PUSH1 0x40 SHR PUSH2 0x4747 JUMP JUMPDEST PUSH9 0x10000000000000003 MUL PUSH1 0x40 SHR PUSH2 0x473E JUMP JUMPDEST PUSH9 0x10000000000000006 MUL PUSH1 0x40 SHR PUSH2 0x4735 JUMP JUMPDEST PUSH9 0x1000000000000000B MUL PUSH1 0x40 SHR PUSH2 0x472C JUMP JUMPDEST PUSH9 0x10000000000000016 MUL PUSH1 0x40 SHR PUSH2 0x4723 JUMP JUMPDEST PUSH9 0x1000000000000002C MUL PUSH1 0x40 SHR PUSH2 0x471A JUMP JUMPDEST PUSH9 0x10000000000000059 MUL PUSH1 0x40 SHR PUSH2 0x4711 JUMP JUMPDEST PUSH2 0x8000 DUP4 AND PUSH2 0x48BD JUMPI JUMPDEST PUSH2 0x4000 DUP4 AND PUSH2 0x48AA JUMPI JUMPDEST PUSH2 0x2000 DUP4 AND PUSH2 0x4897 JUMPI JUMPDEST PUSH2 0x1000 DUP4 AND PUSH2 0x4884 JUMPI JUMPDEST PUSH2 0x800 DUP4 AND PUSH2 0x4871 JUMPI JUMPDEST PUSH2 0x400 DUP4 AND PUSH2 0x485E JUMPI JUMPDEST PUSH2 0x200 DUP4 AND PUSH2 0x484B JUMPI JUMPDEST PUSH2 0x100 DUP4 AND ISZERO PUSH2 0x46F3 JUMPI PUSH9 0x100000000000000B1 MUL PUSH1 0x40 SHR PUSH2 0x46F3 JUMP JUMPDEST PUSH9 0x10000000000000163 MUL PUSH1 0x40 SHR PUSH2 0x482E JUMP JUMPDEST PUSH9 0x100000000000002C6 MUL PUSH1 0x40 SHR PUSH2 0x4824 JUMP JUMPDEST PUSH9 0x1000000000000058C MUL PUSH1 0x40 SHR PUSH2 0x481A JUMP JUMPDEST PUSH9 0x10000000000000B17 MUL PUSH1 0x40 SHR PUSH2 0x4810 JUMP JUMPDEST PUSH9 0x1000000000000162E MUL PUSH1 0x40 SHR PUSH2 0x4806 JUMP JUMPDEST PUSH9 0x10000000000002C5D MUL PUSH1 0x40 SHR PUSH2 0x47FC JUMP JUMPDEST PUSH9 0x100000000000058B9 MUL PUSH1 0x40 SHR PUSH2 0x47F2 JUMP JUMPDEST PUSH3 0x800000 DUP4 AND PUSH2 0x49AD JUMPI JUMPDEST PUSH3 0x400000 DUP4 AND PUSH2 0x499A JUMPI JUMPDEST PUSH3 0x200000 DUP4 AND PUSH2 0x4987 JUMPI JUMPDEST PUSH3 0x100000 DUP4 AND PUSH2 0x4974 JUMPI JUMPDEST PUSH3 0x80000 DUP4 AND PUSH2 0x4961 JUMPI JUMPDEST PUSH3 0x40000 DUP4 AND PUSH2 0x494E JUMPI JUMPDEST PUSH3 0x20000 DUP4 AND PUSH2 0x493B JUMPI JUMPDEST PUSH3 0x10000 DUP4 AND ISZERO PUSH2 0x46E9 JUMPI PUSH9 0x1000000000000B172 MUL PUSH1 0x40 SHR PUSH2 0x46E9 JUMP JUMPDEST PUSH9 0x100000000000162E4 MUL PUSH1 0x40 SHR PUSH2 0x491D JUMP JUMPDEST PUSH9 0x1000000000002C5C8 MUL PUSH1 0x40 SHR PUSH2 0x4912 JUMP JUMPDEST PUSH9 0x10000000000058B91 MUL PUSH1 0x40 SHR PUSH2 0x4907 JUMP JUMPDEST PUSH9 0x100000000000B1721 MUL PUSH1 0x40 SHR PUSH2 0x48FC JUMP JUMPDEST PUSH9 0x10000000000162E43 MUL PUSH1 0x40 SHR PUSH2 0x48F1 JUMP JUMPDEST PUSH9 0x100000000002C5C86 MUL PUSH1 0x40 SHR PUSH2 0x48E6 JUMP JUMPDEST PUSH9 0x1000000000058B90C MUL PUSH1 0x40 SHR PUSH2 0x48DB JUMP JUMPDEST PUSH4 0x80000000 DUP4 AND PUSH2 0x4AA5 JUMPI JUMPDEST PUSH4 0x40000000 DUP4 AND PUSH2 0x4A92 JUMPI JUMPDEST PUSH4 0x20000000 DUP4 AND PUSH2 0x4A7F JUMPI JUMPDEST PUSH4 0x10000000 DUP4 AND PUSH2 0x4A6C JUMPI JUMPDEST PUSH4 0x8000000 DUP4 AND PUSH2 0x4A59 JUMPI JUMPDEST PUSH4 0x4000000 DUP4 AND PUSH2 0x4A46 JUMPI JUMPDEST PUSH4 0x2000000 DUP4 AND PUSH2 0x4A33 JUMPI JUMPDEST PUSH4 0x1000000 DUP4 AND ISZERO PUSH2 0x46DE JUMPI PUSH9 0x10000000000B17218 MUL PUSH1 0x40 SHR PUSH2 0x46DE JUMP JUMPDEST PUSH9 0x1000000000162E430 MUL PUSH1 0x40 SHR PUSH2 0x4A14 JUMP JUMPDEST PUSH9 0x10000000002C5C860 MUL PUSH1 0x40 SHR PUSH2 0x4A08 JUMP JUMPDEST PUSH9 0x100000000058B90C0 MUL PUSH1 0x40 SHR PUSH2 0x49FC JUMP JUMPDEST PUSH9 0x1000000000B17217F MUL PUSH1 0x40 SHR PUSH2 0x49F0 JUMP JUMPDEST PUSH9 0x100000000162E42FF MUL PUSH1 0x40 SHR PUSH2 0x49E4 JUMP JUMPDEST PUSH9 0x1000000002C5C85FE MUL PUSH1 0x40 SHR PUSH2 0x49D8 JUMP JUMPDEST PUSH9 0x10000000058B90BFC MUL PUSH1 0x40 SHR PUSH2 0x49CC JUMP JUMPDEST PUSH5 0x8000000000 DUP4 AND PUSH2 0x4BA5 JUMPI JUMPDEST PUSH5 0x4000000000 DUP4 AND PUSH2 0x4B92 JUMPI JUMPDEST PUSH5 0x2000000000 DUP4 AND PUSH2 0x4B7F JUMPI JUMPDEST PUSH5 0x1000000000 DUP4 AND PUSH2 0x4B6C JUMPI JUMPDEST PUSH5 0x800000000 DUP4 AND PUSH2 0x4B59 JUMPI JUMPDEST PUSH5 0x400000000 DUP4 AND PUSH2 0x4B46 JUMPI JUMPDEST PUSH5 0x200000000 DUP4 AND PUSH2 0x4B33 JUMPI JUMPDEST PUSH5 0x100000000 DUP4 AND ISZERO PUSH2 0x46D2 JUMPI PUSH9 0x100000000B17217F8 MUL PUSH1 0x40 SHR PUSH2 0x46D2 JUMP JUMPDEST PUSH9 0x10000000162E42FF1 MUL PUSH1 0x40 SHR PUSH2 0x4B13 JUMP JUMPDEST PUSH9 0x100000002C5C85FE3 MUL PUSH1 0x40 SHR PUSH2 0x4B06 JUMP JUMPDEST PUSH9 0x1000000058B90BFCE MUL PUSH1 0x40 SHR PUSH2 0x4AF9 JUMP JUMPDEST PUSH9 0x10000000B17217FBB MUL PUSH1 0x40 SHR PUSH2 0x4AEC JUMP JUMPDEST PUSH9 0x1000000162E42FFF0 MUL PUSH1 0x40 SHR PUSH2 0x4ADF JUMP JUMPDEST PUSH9 0x10000002C5C8601CC MUL PUSH1 0x40 SHR PUSH2 0x4AD2 JUMP JUMPDEST PUSH9 0x100000058B90C0B49 MUL PUSH1 0x40 SHR PUSH2 0x4AC5 JUMP JUMPDEST PUSH6 0x800000000000 DUP4 AND PUSH2 0x4CAD JUMPI JUMPDEST PUSH6 0x400000000000 DUP4 AND PUSH2 0x4C9A JUMPI JUMPDEST PUSH6 0x200000000000 DUP4 AND PUSH2 0x4C87 JUMPI JUMPDEST PUSH6 0x100000000000 DUP4 AND PUSH2 0x4C74 JUMPI JUMPDEST PUSH6 0x80000000000 DUP4 AND PUSH2 0x4C61 JUMPI JUMPDEST PUSH6 0x40000000000 DUP4 AND PUSH2 0x4C4E JUMPI JUMPDEST PUSH6 0x20000000000 DUP4 AND PUSH2 0x4C3B JUMPI JUMPDEST PUSH6 0x10000000000 DUP4 AND ISZERO PUSH2 0x46C5 JUMPI PUSH9 0x1000000B172183551 MUL PUSH1 0x40 SHR PUSH2 0x46C5 JUMP JUMPDEST PUSH9 0x100000162E430E5A2 MUL PUSH1 0x40 SHR PUSH2 0x4C1A JUMP JUMPDEST PUSH9 0x1000002C5C863B73F MUL PUSH1 0x40 SHR PUSH2 0x4C0C JUMP JUMPDEST PUSH9 0x10000058B90CF1E6E MUL PUSH1 0x40 SHR PUSH2 0x4BFE JUMP JUMPDEST PUSH9 0x100000B1721BCFC9A MUL PUSH1 0x40 SHR PUSH2 0x4BF0 JUMP JUMPDEST PUSH9 0x10000162E43F4F831 MUL PUSH1 0x40 SHR PUSH2 0x4BE2 JUMP JUMPDEST PUSH9 0x100002C5C89D5EC6D MUL PUSH1 0x40 SHR PUSH2 0x4BD4 JUMP JUMPDEST PUSH9 0x1000058B91B5BC9AE MUL PUSH1 0x40 SHR PUSH2 0x4BC6 JUMP JUMPDEST PUSH7 0x80000000000000 DUP4 AND PUSH2 0x4DBD JUMPI JUMPDEST PUSH7 0x40000000000000 DUP4 AND PUSH2 0x4DAA JUMPI JUMPDEST PUSH7 0x20000000000000 DUP4 AND PUSH2 0x4D97 JUMPI JUMPDEST PUSH7 0x10000000000000 DUP4 AND PUSH2 0x4D84 JUMPI JUMPDEST PUSH7 0x8000000000000 DUP4 AND PUSH2 0x4D71 JUMPI JUMPDEST PUSH7 0x4000000000000 DUP4 AND PUSH2 0x4D5E JUMPI JUMPDEST PUSH7 0x2000000000000 DUP4 AND PUSH2 0x4D4B JUMPI JUMPDEST PUSH7 0x1000000000000 DUP4 AND ISZERO PUSH2 0x46B7 JUMPI PUSH9 0x10000B17255775C04 MUL PUSH1 0x40 SHR PUSH2 0x46B7 JUMP JUMPDEST PUSH9 0x1000162E525EE0547 MUL PUSH1 0x40 SHR PUSH2 0x4D29 JUMP JUMPDEST PUSH9 0x10002C5CC37DA9492 MUL PUSH1 0x40 SHR PUSH2 0x4D1A JUMP JUMPDEST PUSH9 0x100058BA01FB9F96D MUL PUSH1 0x40 SHR PUSH2 0x4D0B JUMP JUMPDEST PUSH9 0x1000B175EFFDC76BA MUL PUSH1 0x40 SHR PUSH2 0x4CFC JUMP JUMPDEST PUSH9 0x100162F3904051FA1 MUL PUSH1 0x40 SHR PUSH2 0x4CED JUMP JUMPDEST PUSH9 0x1002C605E2E8CEC50 MUL PUSH1 0x40 SHR PUSH2 0x4CDE JUMP JUMPDEST PUSH9 0x10058C86DA1C09EA2 MUL PUSH1 0x40 SHR PUSH2 0x4CCF JUMP JUMPDEST PUSH8 0x8000000000000000 DUP3 AND PUSH2 0x4EE6 JUMPI JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP1 PUSH8 0x4000000000000000 DUP4 AND PUSH2 0x4ED3 JUMPI JUMPDEST PUSH8 0x2000000000000000 DUP4 AND PUSH2 0x4EC0 JUMPI JUMPDEST PUSH8 0x1000000000000000 DUP4 AND PUSH2 0x4EAD JUMPI JUMPDEST PUSH8 0x800000000000000 DUP4 AND PUSH2 0x4E9A JUMPI JUMPDEST PUSH8 0x400000000000000 DUP4 AND PUSH2 0x4E87 JUMPI JUMPDEST PUSH8 0x200000000000000 DUP4 AND PUSH2 0x4E74 JUMPI JUMPDEST PUSH8 0x100000000000000 DUP4 AND PUSH2 0x4E61 JUMPI JUMPDEST SWAP1 POP PUSH2 0x469E JUMP JUMPDEST PUSH9 0x100B1AFA5ABCBED61 MUL PUSH1 0x40 SHR PUSH2 0x4E5A JUMP JUMPDEST PUSH9 0x10163DA9FB33356D8 MUL PUSH1 0x40 SHR PUSH2 0x4E4A JUMP JUMPDEST PUSH9 0x102C9A3E778060EE7 MUL PUSH1 0x40 SHR PUSH2 0x4E3A JUMP JUMPDEST PUSH9 0x1059B0D31585743AE MUL PUSH1 0x40 SHR PUSH2 0x4E2A JUMP JUMPDEST PUSH9 0x10B5586CF9890F62A MUL PUSH1 0x40 SHR PUSH2 0x4E1A JUMP JUMPDEST PUSH9 0x1172B83C7D517ADCE MUL PUSH1 0x40 SHR PUSH2 0x4E0A JUMP JUMPDEST PUSH9 0x1306FE0A31B7152DF MUL PUSH1 0x40 SHR PUSH2 0x4DFA JUMP JUMPDEST POP PUSH24 0xB504F333F9DE648480000000000000000000000000000000 PUSH2 0x4DE0 JUMP JUMPDEST PUSH32 0xB3B6BA1F00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x0 NOT DUP4 DUP3 MULMOD DUP4 DUP3 MUL SWAP2 DUP3 DUP1 DUP4 LT SWAP3 SUB SWAP2 DUP1 DUP4 SUB SWAP3 EQ PUSH2 0x4FD2 JUMPI PUSH8 0xDE0B6B3A7640000 DUP3 LT ISZERO PUSH2 0x4FA0 JUMPI PUSH32 0xACCB18165BD6FE31AE1CF318DC5B51EEE0E1BA569B88CD74C1773B91FAC10669 SWAP4 SWAP5 PUSH8 0xDE0B6B3A7640000 SWAP2 MULMOD SWAP1 DUP3 DUP3 GT SWAP1 SUB PUSH1 0xEE SHL SWAP2 SUB PUSH1 0x12 SHR OR MUL SWAP1 JUMP JUMPDEST DUP5 SWAP1 PUSH32 0x5173648D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP2 POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x0 DUP4 DUP3 ADD SWAP4 DUP5 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x5B5 MUL SWAP2 PUSH2 0x5B5 DUP4 SDIV SUB PUSH2 0x240B JUMPI JUMP JUMPDEST DUP2 DUP2 SUB SWAP3 SWAP2 PUSH1 0x0 SGT DUP1 ISZERO DUP3 DUP6 SGT AND SWAP2 DUP5 SLT AND OR PUSH2 0x240B JUMPI JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH29 0xC483471C36AE49D908F8579DA2E11F5013B0AAC7590B7CBAE2443917B5 0xEB PUSH23 0x64736F6C634300081B0033000000000000000000000000 ",
              "sourceMap": "673:38684:55:-:0;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "abi_decode_address": {
                  "entryPoint": 8497,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_address_32576": {
                  "entryPoint": 8462,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_address_32590": {
                  "entryPoint": 8532,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_array_uint256_dyn_calldata": {
                  "entryPoint": 9044,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_bool_fromMemory": {
                  "entryPoint": 9671,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 9093,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_string": {
                  "entryPoint": 8391,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_stringt_uint256t_address": {
                  "entryPoint": 8567,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 3
                },
                "abi_decode_struct_BondInit": {
                  "entryPoint": 8764,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_uint256t_uint256": {
                  "entryPoint": 8650,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 2
                },
                "abi_encode_address_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_address_address_uint256": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_address_uint256_uint256_stringliteral_c5d2": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_array_bytes4_dyn": {
                  "entryPoint": 8672,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_uint256_dyn_storage": {
                  "entryPoint": 14103,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 9796,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_uint256_uint256_uint256": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_uint256_uint256_uint256_uint256": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_uint256_uint256_uint256_uint256_uint256_uint256_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "abi_encode_uint256_uint256_uint256_uint256_uint256_uint256_uint256_uint256": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 9,
                  "returnSlots": 1
                },
                "array_allocation_size_string": {
                  "entryPoint": 8363,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_push_from_uint256_to_array_uint256_dyn_storage_ptr": {
                  "entryPoint": 12853,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "array_push_from_uint256_to_array_uint256_dyn_storage_ptr_32717": {
                  "entryPoint": 12803,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "checked_add_int256": {
                  "entryPoint": 20451,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_uint256": {
                  "entryPoint": 9262,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_int256": {
                  "entryPoint": 20479,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_mul_uint256": {
                  "entryPoint": 9513,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_int256": {
                  "entryPoint": 20498,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_uint256": {
                  "entryPoint": 9249,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_uint256_32675": {
                  "entryPoint": 9212,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "clear_storage_range_uint256": {
                  "entryPoint": 12718,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "copy_memory_to_memory_with_cleanup": {
                  "entryPoint": 9139,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "finalize_allocation": {
                  "entryPoint": 8306,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_bondStorage": {
                  "entryPoint": 9833,
                  "id": 18599,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_exp2": {
                  "entryPoint": 18007,
                  "id": 13629,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_log2": {
                  "entryPoint": 17718,
                  "id": 13923,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_mulDiv": {
                  "entryPoint": 17498,
                  "id": 7910,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "fun_mulDiv18": {
                  "entryPoint": 20274,
                  "id": 7952,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "fun_mulDiv_32674": {
                  "entryPoint": null,
                  "id": 7910,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "fun_mulDiv_32678": {
                  "entryPoint": null,
                  "id": 7910,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "fun_pow": {
                  "entryPoint": 16774,
                  "id": 14058,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "fun_setCouponDatesFromIssueDate": {
                  "entryPoint": 12910,
                  "id": 15184,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_setCouponRates": {
                  "entryPoint": 14161,
                  "id": 16222,
                  "parameterSlots": 1,
                  "returnSlots": 3
                },
                "fun_setParameters": {
                  "entryPoint": 10314,
                  "id": 16911,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "fun_timestampFromDate": {
                  "entryPoint": 17004,
                  "id": 20913,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "memory_array_index_access_bytes4_dyn": {
                  "entryPoint": 9326,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "memory_array_index_access_bytes4_dyn_32558": {
                  "entryPoint": 9275,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "memory_array_index_access_bytes4_dyn_32559": {
                  "entryPoint": 9310,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "packed_hashed_string_uint256_to_string_uint": {
                  "entryPoint": 9174,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "require_helper_stringliteral_02c4": {
                  "entryPoint": 9374,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "require_helper_stringliteral_974d": {
                  "entryPoint": 9532,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "require_helper_stringliteral_e9e9": {
                  "entryPoint": 9695,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "storage_array_index_access_uint256_dyn_ptr": {
                  "entryPoint": 12779,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "storage_set_to_zero_array_uint256_dyn": {
                  "entryPoint": 12741,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_assert_enum_FormOfFinancing": {
                  "entryPoint": 9342,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608080604052600436101561001357600080fd5b600090813560e01c90816301ffc9a714611fd25750806325830db314611d225780632dcb118e14611ce457806343a19a6514611c125780634b503f0b146118f757806360332e891461170457806368aea41b14611686578063796b89ec1461162a5780638c5f36bb146114f65780638da5cb5b146114a35780638dea1f4714611071578063906b131a14610d435780639226537e14610ae8578063b410500414610a29578063bc197c8114610975578063de99347a14610876578063e3adc7ee14610511578063ee5b280a146104c3578063f23a6e611461044f578063f2fde38b146103125763f844a31c1461010857600080fd5b3461030f57610116366121ca565b61015873ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416331461249e565b61016182612669565b9160016018840155601b830160ff815460201c166102e757610183838361326e565b61018c82613751565b5050506401000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff8254161790556025830163010000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff825416179055836017601185015494019380855573ffffffffffffffffffffffffffffffffffffffff825416803b156102e3576040517f731133e900000000000000000000000000000000000000000000000000000000815230600482015260248101859052604481019290925260806064830152600060848301528290829060a490829084905af180156102d8576102bf575b50509154604080519384526020840192909252908201527fb5c3204064d2ac62821e92f17e7e2c1e9971c89f07fa01b6dab37145db86dc559080606081015b0390a180f35b816102c991612072565b6102d457833861027a565b8380fd5b6040513d84823e3d90fd5b8280fd5b6004857fdecaae02000000000000000000000000000000000000000000000000000000008152fd5b80fd5b503461030f57602060031936011261030f5761032c61210e565b7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c549073ffffffffffffffffffffffffffffffffffffffff8083163314916103738361249e565b169182156103cc576103a57fffffffffffffffffffffffff00000000000000000000000000000000000000009261249e565b16177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5580f35b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b503461030f5760a060031936011261030f5761046961210e565b50610472612154565b5060843567ffffffffffffffff81116104bf57610493903690600401612385565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b5080fd5b503461030f577f8a7a5c9c34210b39b0dd6c746e4824f7af2a84c059d4dcbc168a2036d26df99060406104f5366121ca565b80600f61050184612669565b015582519182526020820152a180f35b503461030f5761052036612177565b919061052b81612669565b9260ff601b85015460201c161561084e5761054960248501846123d6565b5490610559600586015483612529565b6001546040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301523060248301529091169190602081604481865afa908115610843578991610808575b5090610650926105d582602094101561253c565b73ffffffffffffffffffffffffffffffffffffffff60268a0154168a6040518096819582947f23b872dd0000000000000000000000000000000000000000000000000000000084528a6004850173ffffffffffffffffffffffffffffffffffffffff6040929594938160608401971683521660208201520152565b03925af180156107fd5761066b9188916107ce575b506125df565b8573ffffffffffffffffffffffffffffffffffffffff815416803b156104bf578160405180927f731133e90000000000000000000000000000000000000000000000000000000082528183816106fa8a8c8b600485019173ffffffffffffffffffffffffffffffffffffffff60a094921683526020830152604082015260806060820152600060808201520190565b03925af180156102d8576107ad575b507f99c110e7b335cff55cab2cfe92e319ad78396f17234debbb5860886aa0244cca61079686868673ffffffffffffffffffffffffffffffffffffffff8760228d83831660005201602052604060002060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055604051958695608087526080870190612644565b93602086015216604084015260608301520390a180f35b816107bc919695949396612072565b6107ca579091928538610709565b8580fd5b6107f0915060203d6020116107f6575b6107e88183612072565b8101906125c7565b38610665565b503d6107de565b6040513d89823e3d90fd5b9190506020823d60201161083b575b8161082460209383612072565b810103126108365790516106506105c1565b600080fd5b3d9150610817565b6040513d8b823e3d90fd5b6004857fc4d56880000000000000000000000000000000000000000000000000000000008152fd5b503461030f57602060031936011261030f5760043561089481612669565b601b81019081549060ff8260181c1661094d57600281015442119081159161093d575b50610915577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1663010000001790556040519081527fab1902ee37c92d1a78dda53814d64b815e7e3ee287d60843a3dbd6954e3206b490602090a180f35b6004847febd7e129000000000000000000000000000000000000000000000000000000008152fd5b90506003429101541115386108b7565b6004857f5cebfd4a000000000000000000000000000000000000000000000000000000008152fd5b503461030f5760a060031936011261030f5761098f61210e565b50610998612154565b5060443567ffffffffffffffff81116104bf576109b9903690600401612354565b505060643567ffffffffffffffff81116104bf576109db903690600401612354565b505060843567ffffffffffffffff81116104bf576109fd903690600401612385565b505060206040517fbc197c81000000000000000000000000000000000000000000000000000000008152f35b503461030f578060031936011261030f57610ae4604051610a4b608082612072565b6003815260603660208301377f8da5cb5b00000000000000000000000000000000000000000000000000000000610a818261243b565b527ff2fde38b00000000000000000000000000000000000000000000000000000000610aac8261245e565b527f8c5f36bb00000000000000000000000000000000000000000000000000000000610ad78261246e565b52604051918291826121e0565b0390f35b503461030f57610af73661223c565b610b018151612669565b60ff601b82015460201c16610d1b57907f182cb671939e46d1345c30b51134e41ef7782a2113747a93b4dc3c31b91ea81e610d1592610b3f8361284a565b825160028201546003830154604080519384526020840192909252908201527f05b741eb5649daedcc851ef6f057b1bf89b49d12357d31c478c425b6eb1ce9c590606090a182518154600183015460128401546040805194855260208501939093529183015260608201527f1ada3075f8dc673c9de9ba7c0b8e81065d996d1faa99feb6d0a648c8b7a1516d90608090a17fc64d8be5e3585a2141489e772ad1096418b37137a76298a309a5f1095f95f1ca835160a085015190610c7d60c087015160e08801516101008901516101208a01519173ffffffffffffffffffffffffffffffffffffffff6102608c015116936040519788978895919360c0959198979373ffffffffffffffffffffffffffffffffffffffff9560e089019a8952602089015260408801526060870152608086015260a085015216910152565b0390a18251610cfc6008830154926007810154906102008701516101808801516102408901519160ff6025601086015495015460081c1694610cbe8661247e565b6040519889988994919260e0969399989794919961010087019a8752602087015260408601526060850152608084015260a083015260c08201520152565b0390a1610d0f815160808301519061326e565b51613751565b50505080f35b6004837fdecaae02000000000000000000000000000000000000000000000000000000008152fd5b503461030f57608060031936011261030f5760043567ffffffffffffffff81116104bf57610d759036906004016120c7565b9060243560443592610d85612131565b9260ff601b610d9385612669565b015460181c1661104957610da683612669565b9060108201549460118301968754968780821160001461104057610dc991612421565b905b818111156110385750955b600284015442106110105760038401544211610fe8578615610fc057602384019273ffffffffffffffffffffffffffffffffffffffff831660005283602052610e248860406000205461242e565b601286015410610f985773ffffffffffffffffffffffffffffffffffffffff83166000528360205260406000205415610edd575b5060409460247f83518b027c8ada9071fa7643b5352e180e42cf5a021d61294e5880408643c97f979560209a9573ffffffffffffffffffffffffffffffffffffffff8b96610ea988610ec99861242e565b8955166000528b5287600020610ec086825461242e565b905501906123d6565b5554825191825285820152a1604051908152f35b6014850180549160018301809311610f845750879560209a9573ffffffffffffffffffffffffffffffffffffffff8b96610ea988610ec9987ff865af89149aa92dd957b447226842542090f013d1c80f4f66f6eb3ea79f8e917f83518b027c8ada9071fa7643b5352e180e42cf5a021d61294e5880408643c97f9f60409f9a906040918060249c5582519182526020820152a198505050965050959a509597505094610e58565b80634e487b7160e01b602492526011600452fd5b807f2b42b1220000000000000000000000000000000000000000000000000000000060049252fd5b6004837f7eec29e0000000000000000000000000000000000000000000000000000000008152fd5b6004837f0c32ed70000000000000000000000000000000000000000000000000000000008152fd5b6004837ff2b4a12c000000000000000000000000000000000000000000000000000000008152fd5b905095610dd6565b50508290610dcb565b807fa6a992df0000000000000000000000000000000000000000000000000000000060049252fd5b503461030f5760a060031936011261030f5760043567ffffffffffffffff81116104bf576110a39036906004016120c7565b60243560443573ffffffffffffffffffffffffffffffffffffffff811680820361149f576110cf612131565b906084359261111673ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416331461249e565b61111f85612669565b60ff601b82015460201c1615611477576044602073ffffffffffffffffffffffffffffffffffffffff8a5416604051928380927efdd58e0000000000000000000000000000000000000000000000000000000082528860048301528b60248301525afa80156108435786918a9161143e575b50106114165760056111a591015485612529565b6001546040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015230602483015290911690602081604481855afa90811561140b578a916113cd575b5090611281936112218460209594101561253c565b8a6040518096819582947f23b872dd0000000000000000000000000000000000000000000000000000000084528b6004850173ffffffffffffffffffffffffffffffffffffffff6040929594938160608401971683521660208201520152565b03925af180156107fd5761129b9188916107ce57506125df565b8573ffffffffffffffffffffffffffffffffffffffff81541692833b156104bf5773ffffffffffffffffffffffffffffffffffffffff60c4839260405194859384927ff242432a00000000000000000000000000000000000000000000000000000000845288600485015216978860248401528a604484015289606484015260a060848401528160a48401525af180156107fd5761138d575b509161137293917f38db1382a58023a1d5d8aaab1581199c9b7d9ed33223c18beeaab57924aff20f959360405195869560a0875260a0870190612644565b9360208601526040850152606084015260808301520390a180f35b91866113c17f38db1382a58023a1d5d8aaab1581199c9b7d9ed33223c18beeaab57924aff20f979593986113729795612072565b96919395509193611334565b929190506020833d602011611403575b816113ea60209383612072565b810103126113ff57915190919061128161120c565b8980fd5b3d91506113dd565b6040513d8c823e3d90fd5b6004887f91df618a000000000000000000000000000000000000000000000000000000008152fd5b9150506020813d60201161146f575b8161145a60209383612072565b8101031261146b5785905138611191565b8880fd5b3d915061144d565b6004887fc4d56880000000000000000000000000000000000000000000000000000000008152fd5b8480fd5b503461030f578060031936011261030f57602073ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416604051908152f35b503461030f57602060031936011261030f5761151061210e565b73ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c54166115cc5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000007f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5580f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f776e657220616c7265616479207365740000000000000000000000000000006044820152fd5b503461030f57602060031936011261030f5773ffffffffffffffffffffffffffffffffffffffff61165961210e565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600154161760015580f35b503461030f57606060031936011261030f577f9cc9725ee02d8f0a4d8b30054405939f4d872cc6a5c2d677e02f5bd87e5dea2a6024356004356102b96044356116ce83612669565b600a670de0b6b3a76400006116e3848861445a565b04910155604051938493846040919493926060820195825260208201520152565b503461030f576117133661223c565b307fffffffffffffffffffffffff00000000000000000000000000000000000000008354161782556117458151612669565b601b810160ff815460101c166118cf5782917fb42ebd0ad22561f77328ee457d5ba2a08a7c2847ff88c663cca9dcc8c53dc08691611785610d159561284a565b6201000062ff0000198254161790556001549060258101917fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000084549260201b169116178092557ff5d1b3af18a6e549e23801b7a43bec54699badce37e0f7e96e0a4ebb65143d74845160a08601519061189160c088015160e08901516101008a01516101208b01519173ffffffffffffffffffffffffffffffffffffffff6102608d015116936040519788978895919360c0959198979373ffffffffffffffffffffffffffffffffffffffff9560e089019a8952602089015260408801526060870152608086015260a085015216910152565b0390a1610cfc8451916008810154936007820154916102008801516101808901519060ff60106102408c01519401549460081c1694610cbe8661247e565b6004847fe2003eba000000000000000000000000000000000000000000000000000000008152fd5b503461030f578060031936011261030f5760405190601f1961020061191c8185612072565b600f8452013660208401377f60332e89000000000000000000000000000000000000000000000000000000006119518361243b565b527f796b89ec0000000000000000000000000000000000000000000000000000000061197c8361245e565b527f9226537e000000000000000000000000000000000000000000000000000000006119a78361246e565b52815160031015611bfe577f68aea41b000000000000000000000000000000000000000000000000000000006080830152815160041015611bfe577f2dcb118e0000000000000000000000000000000000000000000000000000000060a0830152815160051015611bfe577fee5b280a0000000000000000000000000000000000000000000000000000000060c0830152815160061015611bfe577f906b131a0000000000000000000000000000000000000000000000000000000060e0830152815160071015611bfe577fde99347a00000000000000000000000000000000000000000000000000000000610100830152815160081015611bfe577f43a19a6500000000000000000000000000000000000000000000000000000000610120830152815160091015611bfe577f25830db3000000000000000000000000000000000000000000000000000000006101408301528151600a1015611bfe577f8dea1f47000000000000000000000000000000000000000000000000000000006101608301528151600b1015611bfe577fe3adc7ee000000000000000000000000000000000000000000000000000000006101808301528151600c1015611bfe577ff844a31c000000000000000000000000000000000000000000000000000000006101a08301528151600d1015611bfe577ff23a6e61000000000000000000000000000000000000000000000000000000006101c08301528151600e1015611bfe577fbc197c81000000000000000000000000000000000000000000000000000000006101e083015260405180610ae484826121e0565b80634e487b7160e01b602492526032600452fd5b503461030f57602060031936011261030f57600435611c3081612669565b601b81019081549060ff8260181c1615611cbc576002810154421190811591611cac575b50610915577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1690556040519081527f11aa0bd3fb4d9c5622c703f91610a74140a4f88a7ebc7b4faaeaf52e3cb7aa9490602090a180f35b9050600342910154111538611c54565b6004857fc851109a000000000000000000000000000000000000000000000000000000008152fd5b503461030f577f091a72ed52432e53c748925ef46b36a19f93cb874539b387d4f3b1f92aa33e116040611d16366121ca565b80600e61050184612669565b503461030f57611d3136612177565b9091611d3c83612669565b9160118301928354916024820192611d5484866123d6565b548110611f7457602383019173ffffffffffffffffffffffffffffffffffffffff81168952826020526040892054611d8c86886123d6565b5411611ef057611dbc73ffffffffffffffffffffffffffffffffffffffff92611db587896123d6565b5490612421565b8755611dc885876123d6565b548282168a5283602052611de160408b20918254612421565b9055168752602052604086205415611e8c575b60150191825460018101809111611e78578387611e5b604097957f499925bc28b60b5b11b1841f8f51318fa4484237122fb618e76c3195b37d9eb89589957f83518b027c8ada9071fa7643b5352e180e42cf5a021d61294e5880408643c97f9b99556123d6565b55548151908582526020820152a15482519182526020820152a180f35b602487634e487b7160e01b81526011600452fd5b601481018054906000198201918211611edc57604082601594937ff865af89149aa92dd957b447226842542090f013d1c80f4f66f6eb3ea79f8e9193558151908982526020820152a19050611df4565b602488634e487b7160e01b81526011600452fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e646572666c6f773a20726573657276656420616d6f756e7420627920616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e646572666c6f773a20726573657276656420616d6f756e740000000000006044820152fd5b9050346104bf5760206003193601126104bf576004357fffffffff0000000000000000000000000000000000000000000000000000000081168091036102e357602092507f4e2312e0000000000000000000000000000000000000000000000000000000008114908115612048575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501438612041565b90601f601f19910116810190811067ffffffffffffffff82111761209557604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff811161209557601f01601f191660200190565b81601f82011215610836578035906120de826120ab565b926120ec6040519485612072565b8284526020838301011161083657816000926020809301838601378301015290565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361083657565b6064359073ffffffffffffffffffffffffffffffffffffffff8216820361083657565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361083657565b6060600319820112610836576004359067ffffffffffffffff8211610836576121a2916004016120c7565b906024359060443573ffffffffffffffffffffffffffffffffffffffff811681036108365790565b6003196040910112610836576004359060243590565b602060408183019282815284518094520192019060005b8181106122045750505090565b82517fffffffff00000000000000000000000000000000000000000000000000000000168452602093840193909201916001016121f7565b600319610280910112610836576040516000610280820167ffffffffffffffff811183821017612340576040526004358252602435602083015260443560408301526064356060830152608435608083015260a43560a083015260c43560c083015260e43560e083015261010435610100830152610124356101208301526101443561014083015261016435610160830152610184356101808301526101a4356101a08301526101c4356101c08301526101e4356101e0830152610204356102008301526102243561022083015261024435610240830152610264359073ffffffffffffffffffffffffffffffffffffffff8216820361030f575061026082015290565b602482634e487b7160e01b81526041600452fd5b9181601f840112156108365782359167ffffffffffffffff8311610836576020808501948460051b01011161083657565b9181601f840112156108365782359167ffffffffffffffff8311610836576020838186019501011161083657565b60005b8381106123c65750506000910152565b81810151838201526020016123b6565b6020906123f09282604051948386809551938492016123b3565b82019081520301902090565b90600019820191821161240b57565b634e487b7160e01b600052601160045260246000fd5b9190820391821161240b57565b9190820180921161240b57565b8051156124485760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156124485760400190565b8051600210156124485760600190565b6002111561248857565b634e487b7160e01b600052602160045260246000fd5b156124a557565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60448201527f6374696f6e0000000000000000000000000000000000000000000000000000006064820152fd5b8181029291811591840414171561240b57565b1561254357565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152fd5b90816020910312610836575180151581036108365790565b156125e657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f45524332303a207472616e73666572206661696c6564000000000000000000006044820152fd5b90601f19601f602093612662815180928187528780880191016123b3565b0116010190565b600081807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000081101561281f575b50806d04ee2d6d415b85acef8100000000600a921015612804575b662386f26fc100008110156127f0575b6305f5e1008110156127df575b6127108110156127d0575b60648110156127c2575b10156127ba575b6001810191600a60001960216127136126fd876120ab565b9661270b6040519889612072565b8088526120ab565b94601f196020880196013687378601015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a835304801561276057600019600a9192612724565b50506127b4602c60405180936127a360208301967f73746f726167652e626f6e6400000000000000000000000000000000000000008852518092858501906123b3565b81010301601f198101835282612072565b51902090565b6001016126e5565b6064600291049201916126de565b612710600491049201916126d4565b6305f5e100600891049201916126c9565b662386f26fc10000601091049201916126bc565b6d04ee2d6d415b85acef8100000000602091049201916126ac565b604092507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a612691565b9060006128578351612669565b9073ffffffffffffffffffffffffffffffffffffffff6102608501511673ffffffffffffffffffffffffffffffffffffffff6026840191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905560a084018051600584015560e0850192835115613186576102008601928684511560001461313f57610180600c910151066131175786905b6101c08201908151612f9a575b6101a08301918251612e7b575b60c084019761291a895182519061445a565b906006870191825561010086019182519161293c61012089019384519061445a565b60098a0155670de0b6b3a764000061296960408a0151809c60018d019d8e5560208c01518d55519061445a565b0460108a015560606101e08901519860128b01998a55610180810151600d8c015501519b8c9b624f1a008d60028d019e8f55019d8e811161240b578e10612df7578a90600382019e8f55805115600014612d0d575060250180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555050805460088901555b6102408d018051600103612cb45750855115612c7d57602588016203000062ff0000198254161790555b8551600e8901558351600f8901556101408d01948d8651908115159081612c6e575b50612be2575b5050612bdd98957f9cc9725ee02d8f0a4d8b30054405939f4d872cc6a5c2d677e02f5bd87e5dea2a89967f05b741eb5649daedcc851ef6f057b1bf89b49d12357d31c478c425b6eb1ce9c59e9f9a6040612bb898612b497f1ada3075f8dc673c9de9ba7c0b8e81065d996d1faa99feb6d0a648c8b7a1516d9d99612b43612b3d7f091a72ed52432e53c748925ef46b36a19f93cb874539b387d4f3b1f92aa33e119b869b601b7f8a7a5c9c34210b39b0dd6c746e4824f7af2a84c059d4dcbc168a2036d26df99099017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff815416905554935190519061445a565b82614f32565b90612421565b60078c01558d51905182519182526020820152a18a5190516101608c0151855192835260208301919091526040820152606090a18851905182519182526020820152a1855192549354905490604051948594859094939260609260808301968352602083015260408201520152565b0390a15191549254604051938493846040919493926060820195825260208201520152565b0390a1565b8e612bf461016082019283519061445a565b600a8c015551908751905191303b156102d4576040517f68aea41b000000000000000000000000000000000000000000000000000000008152600481019190915260248101919091526044810191909152818160648183305af180156102d85715612a4357612c64828092612072565b61030f5780612a43565b6101609150015115158f612a3d565b835115612c9c57602588016204000062ff000019825416179055612a1b565b602588016201000062ff000019825416179055612a1b565b8051612cce57506025880162ff0000198154169055612a1b565b517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612a1b57602588016202000062ff000019825416179055612a1b565b8051600103612d835750612d7992612d5c612d74936025612d64940160017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055825190519061242e565b90519061445a565b6703782dace9d900005b90614186565b6123fc565b60088901556129f1565b51909190600214612d97575b5050506129f1565b612dea92612d5c612ddc926025612d74950160027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055825190519061242e565b6701280f39a3485555612d6e565b6008890155388881612d8f565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f54696d657374616d702073686f756c64206265206561726c696572206f72206560448201527f7175616c20746f207468652063757272656e742074696d657374616d700000006064820152fd5b90979695949392855115600014612f4e57508151600c900615612ec0576004887fbebd2292000000000000000000000000000000000000000000000000000000008152fd5b889791929394959697518351303b156102d457604051917f2dcb118e00000000000000000000000000000000000000000000000000000000835260048301526024820152828160448183305af18015612f4357908a94939291612f24575b50612908565b8280949550612f3591939293612072565b6104bf579088929138612f1e565b6040513d85823e3d90fd5b9293949596979060018751036129085782519198979695949350906003900615612ec0576004887f4f80c6ed000000000000000000000000000000000000000000000000000000008152fd5b96959493929184511560001461305a57508051600c900615612fde576004877fdcbd8c00000000000000000000000000000000000000000000000000000000008152fd5b90919293949587518251303b156102e357604051917fee5b280a00000000000000000000000000000000000000000000000000000000835260048301526024820152818160448183305af180156102d857908993929161303f575b506128fb565b818093945061304d91612072565b61030f5790879138613039565b91929394959660018651036128fb578151909796959493925060039006156130a4576004877f07010901000000000000000000000000000000000000000000000000000000008152fd5b90919293949587518251303b156102e357604051917fee5b280a00000000000000000000000000000000000000000000000000000000835260048301526024820152818160448183305af180156102d85790828a949392613107575b50506128fb565b61311091612072565b3881613100565b807f0d38e32c0000000000000000000000000000000000000000000000000000000060049252fd5b9060018551036128ee579061018060039101510661315e5786906128ee565b807fecfbd8cf0000000000000000000000000000000000000000000000000000000060049252fd5b6004837f1de42a90000000000000000000000000000000000000000000000000000000008152fd5b8181106131b9575050565b600081556001016131ae565b805460008255806131d4575050565b6131e9916000526020600020908101906131ae565b565b80548210156124485760005260206000200190600090565b80546801000000000000000081101561209557613225916001820181556131eb565b60001982549160031b1b19169055565b80546801000000000000000081101561209557613257916001820181556131eb565b600019829392549160031b92831b921b1916179055565b9061327882612669565b600160ff601b83015460201c161515146136ed5762015180820462010bd981019062010bd982126000821290801582169115161761240b57622649650190600062253d8c8312911290801582169115161761240b578060021b60048105820361240b5762023ab19005908162023ab1029062023ab18205830361240b576003820191600060038412911290801582169115161761240b57600461331c920590615012565b9060018201600181126000841290801582169115161761240b5780610fa00290610fa082050361240b5762164b09613362910592600461335b85614fff565b0590615012565b91601f8301926000601f8512911290801582169115161761240b578260500260508105840361240b5761098f9005928361098f029061098f8205850361240b5760506133af920590615012565b92600b8105906002810190600060028312911290801582169115161761240b5781600c02600c8105830361240b576133e691615012565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf810190811360011661240b578060640290606482050361240b576134349261342f91614fe3565b614fe3565b600091602585019260ff84541660038110156136d957806136b6575050600c600d86015404935b60009483601d88019461346d866131c5565b60218901978854818a5580613697575b50805b8481106134c957505050505050505050509181604092600b7f6d7086ab13fbd1583240e1b6e62b23416e3945f952373732fc183a2a407e462d95015582519182526020820152a1565b60ff895416600381101561248857600281036135e557509091816135ac57509050600c85066135a5576001820180831161240b57905b6001860180871161240b57600c900690811561359c575b61352a61352487848661426c565b89613235565b600019850185811161240b578114613587575b895490680100000000000000008210156120955760018201808c55821015612448576001918b60005260206000208160051c019060ff60f883549260031b161b1916905501613480565b61359286838561426c565b600c8c015561353d565b600c9150613516565b81906134ff565b600c83066135df576001810180911161240b57915b6001810180911161240b57600c9006908161351657600c9150613516565b916135c1565b60006001820361367057505090811560001461363657509050600a851061362f576001820180831161240b57905b6003860180871161240b57600c900690811561359c575b613516565b8190613613565b600a81101561365e575b6003810180911161240b57600c9006908161362a57600c9150613516565b916001810180911161240b5791613640565b5061351657918261368657505081908590613516565b6001810180911161240b5791613516565b898252602082206136b091601f0160051c8101906131ae565b3861347d565b6001141590506136ce576003600d860154049361345b565b600d8501549361345b565b602482634e487b7160e01b81526021600452fd5b7fdecaae020000000000000000000000000000000000000000000000000000000060005260046000fd5b906020825491828152019160005260206000209060005b81811061373b5750505090565b825484526020909301926001928301920161372e565b61375a81612669565b90600160ff601b84015460201c161515146136ed576000600583015460ff6025850154166003811015613eec57806141665750600c600d85015404915b6137a3601c86016131c5565b6137af601e86016131c5565b6137bb601f86016131c5565b6137c7602086016131c5565b6137d3601f8601613203565b6137e4600586015460208701613235565b6137f0601c8601613203565b6137fc601e8601613203565b60058501546016860155805b83821061392357505050506138f56138ee917f2f3e3b3aaadf1f165fa7d634278fa8ee54a0548dbf8fc62a1d301da8f6aa6298604060088601548151908482526020820152a17f1cd0ec0194cd0b5111bf7154d1801ab3549a822fcff5ac188bcaa7f310aa11de601d85019160405190815260c06020820152806138df6138ce6138bd6138ac61389b60c0860189613717565b858103604087015260208c01613717565b8481036060860152601f8b01613717565b8381036080850152601c8a01613717565b82810360a0840152601e8901613717565b0390a160405192838092613717565b0382612072565b91601e61392060405161390f816138ee81601c8901613717565b936138ee6040518094819301613717565b90565b602586015491600660ff8460101c16101591826124885760ff8460101c1615600014613fed57506000925b61395c8560088a0154614f32565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561240b578160098a0154670de0b6b3a764000003670de0b6b3a7640000811161240b576139a691614f32565b936124885760ff8160101c1615600014613a4157508560001981011161240b57600192613a00613a179260001989018510600014613a23576139ea601f8c01613203565b6139f78860208d01613235565b601c8b01613235565b613a0d81601e8b01613235565b601689015461242e565b60168801550190613808565b613a2f60208c01613203565b613a3c88601f8d01613235565b6139f7565b600095919295600260ff8360101c1614600014613af257505084613aa857600192613a0060209693613a3c84613a9f8d613a96670de0b6b3a7640000613a8e613a179a600a850154614f32565b048094612421565b9b8c9101613235565b601f8d01613235565b93908560001981011161240b57600192613a00613a179260001989018514600014613ad957613a2f60208c01613203565b613ae68860208d01613235565b613a3c601f8c01613203565b9593929550600160ff8260101c1614600014613b8857508560001981011161240b57876000198701841015613b51575060019291613a00613b3686613a1794612421565b96613b448860208d01613235565b613a3c87601f8d01613235565b91613a00613a179296613a3c613b7887602088613b728260019c9b01613203565b016131eb565b90549060031b1c601f8d01613235565b6000600360ff8360101c1614600014613cb157505060ff602589015416600381101590816124885780159182613c9e575b8215613c78575b8215613c53575b505015613c3b578560001981011161240b57876000198701841015613c16575060019291613a00613bfb86613a1794612421565b96613c0987601f8d01613235565b613a3c8860208d01613235565b94613a17915091613a008493613a3c613b78600197602060009b613b72828201613203565b9360019291613a00613a1792613c09601f8c01613203565b9091506124885760021480613c6a575b3880613bc7565b50600e880154831015613c63565b50600091506001811480613c8d575b91613bc0565b506003600e8b015404851015613c87565b9150600c600e8b01540485101591613bb9565b50600460ff8260101c1614600014613d9b575060ff602589015416600381101590816124885780159182613d88575b8215613d62575b8215613d3d575b505015613d22578560001981011161240b57876000198701841015613c16575060019291613a00613bfb86613a1794612421565b935050600190613a176000613a0081613c09601f8c01613203565b9091506124885760021480613d54575b3880613cee565b50600f880154831015613d4d565b50600091506001811480613d77575b91613ce7565b506003600f8b015404851015613d71565b9150600c600f8b01540485101591613ce0565b600095919590600560ff8260101c1614613dc2575b505060019291613a00613a17926139f7565b600360ff829893981610159081613fd95760ff8116159182613fc6575b8215613f9e575b8215613f62575b505015613f485786600019810111613f3457846000198801851015613f0057613e1591612421565b94613e2385601f8b01613235565b613e308660208b01613235565b60ff60258a01541660038110159081613eec5780159182613eda575b8215613eb6575b8215613e83575b5050916001949391613a1793613e76575b509181939450613db0565b9150819050613a00613e6b565b9091506136d9579160019493916002613a17941480613ea9575b91938193959650613e5a565b50600f8b01548510613e9d565b508291506001811480613eca575b91613e53565b506003600f8c0154048610613ec4565b9150600c600f8c015404861091613e4c565b602483634e487b7160e01b81526021600452fd5b505084613f0f60208a01613203565b613f2f613f1f8560208c016131eb565b90549060031b1c601f8b01613235565b613e30565b602486634e487b7160e01b81526011600452fd5b94613f55601f8a01613203565b613f2f8660208b01613235565b909150613f8a5760ff1660021480613f7c575b3880613ded565b50600e890154841015613f75565b602487634e487b7160e01b81526021600452fd5b5087915060ff811660011480613fb5575b91613de6565b506003600e8c015404861015613faf565b9150600c600e8c01540486101591613ddf565b602488634e487b7160e01b81526021600452fd5b60009250601084901c60ff1660010361401f5750670de0b6b3a76400006140188660058a015461445a565b049261394e565b600360ff8560101c16148015614151575b156140c05750600360ff841610156124885760ff831661407257670de0b6b3a7640000614018600589015461406c600c600e8c01540489612421565b9061445a565b670de0b6b3a7640000600060ff85166001036140aa576140a160058a015461406c6003600e8d0154048a612421565b9050049261394e565b6140a160058a015461406c600e8c01548a612421565b928261248857600460ff8260101c160361394e579250600360ff841610156124885760ff831661410c57670de0b6b3a7640000614018600589015461406c600c600f8c01540489612421565b670de0b6b3a7640000600060ff851660010361413b576140a160058a015461406c6003600f8d0154048a612421565b6140a160058a015461406c600f8c01548a612421565b509150600091600560ff8560101c1614614030565b60010361417b576003600d8501540491613797565b600d84015491613797565b801580156141a55750506141a057670de0b6b3a764000090565b600090565b670de0b6b3a7640000821461425d57826141c857505050670de0b6b3a764000090565b670de0b6b3a7640000831461425757670de0b6b3a76400008211156142025750613920916141f86141fd92614536565b614f32565b614657565b61424157614227916141f86141fd926ec097ce7bc90715b34b9f100000000004614536565b8015614241576ec097ce7bc90715b34b9f10000000000490565b634e487b7160e01b600052601260045260246000fd5b50905090565b505050670de0b6b3a764000090565b906107b282106143fc577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2810181811360011661240b57600c9005916112c081019060006112c08312911290801582169115161761240b57826142ce91614fe3565b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe820191821360011661240b57600c810290808205600c149015171561240b5761431891615012565b9161432282614fff565b918361016f029361016f85050361240b576064810190600060648312911290801582169115161761240b5760649005918260030292600384050361240b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82b5820191821360011661240b576143b593600c6143a5600494856143ad950590614fe3565b910590614fe3565b910590615012565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdac274810190811360011661240b576201518081029080820462015180149015171561240b5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f596561722063616e6e6f74206265206561726c696572207468616e20313937306044820152fd5b600019670de0b6b3a7640000820991670de0b6b3a764000082029182808510940393808503941461452957818410156144ed57670de0b6b3a764000082910960018219018216809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b7f63a0577800000000000000000000000000000000000000000000000000000000600052600452670de0b6b3a764000060245260445260646000fd5b5091508115614241570490565b670de0b6b3a7640000811061462a57670de0b6b3a764000081046fffffffffffffffffffffffffffffffff811160071b90811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c9060ff821160031b91821c92600f841160021b93841c94600160038711811b96871c11961717171717171790670de0b6b3a76400008202911c670de0b6b3a76400008114614626576706f05b59d3b2000090815b6145ef57505090565b80670de0b6b3a764000091020490671bc16d674ec80000821015614618575b60011c90816145e6565b809192019160011c9061460e565b5090565b7f36d32ef00000000000000000000000000000000000000000000000000000000060005260045260246000fd5b680a688906bd8affffff8111614f0557670de0b6b3a76400009060401b047780000000000000000000000000000000000000000000000067ff000000000000008216614dd0575b670de0b6b3a76400009066ff0000000000008316614cc0575b65ff00000000008316614bb8575b64ff000000008316614ab8575b63ff00000083166149c0575b62ff000083166148d0575b61ff0083166147e8575b60ff8316614708575b029060401c60bf031c90565b608083166147d5575b604083166147c2575b602083166147af575b6010831661479c575b60088316614789575b60048316614776575b60028316614763575b60018316156146fc57680100000000000000010260401c6146fc565b680100000000000000010260401c614747565b680100000000000000030260401c61473e565b680100000000000000060260401c614735565b6801000000000000000b0260401c61472c565b680100000000000000160260401c614723565b6801000000000000002c0260401c61471a565b680100000000000000590260401c614711565b61800083166148bd575b61400083166148aa575b6120008316614897575b6110008316614884575b6108008316614871575b610400831661485e575b610200831661484b575b6101008316156146f357680100000000000000b10260401c6146f3565b680100000000000001630260401c61482e565b680100000000000002c60260401c614824565b6801000000000000058c0260401c61481a565b68010000000000000b170260401c614810565b6801000000000000162e0260401c614806565b68010000000000002c5d0260401c6147fc565b680100000000000058b90260401c6147f2565b6280000083166149ad575b62400000831661499a575b622000008316614987575b621000008316614974575b620800008316614961575b62040000831661494e575b62020000831661493b575b620100008316156146e9576801000000000000b1720260401c6146e9565b680100000000000162e40260401c61491d565b6801000000000002c5c80260401c614912565b68010000000000058b910260401c614907565b680100000000000b17210260401c6148fc565b68010000000000162e430260401c6148f1565b680100000000002c5c860260401c6148e6565b6801000000000058b90c0260401c6148db565b63800000008316614aa5575b63400000008316614a92575b63200000008316614a7f575b63100000008316614a6c575b63080000008316614a59575b63040000008316614a46575b63020000008316614a33575b63010000008316156146de5768010000000000b172180260401c6146de565b6801000000000162e4300260401c614a14565b68010000000002c5c8600260401c614a08565b680100000000058b90c00260401c6149fc565b6801000000000b17217f0260401c6149f0565b680100000000162e42ff0260401c6149e4565b6801000000002c5c85fe0260401c6149d8565b68010000000058b90bfc0260401c6149cc565b6480000000008316614ba5575b6440000000008316614b92575b6420000000008316614b7f575b6410000000008316614b6c575b6408000000008316614b59575b6404000000008316614b46575b6402000000008316614b33575b6401000000008316156146d257680100000000b17217f80260401c6146d2565b68010000000162e42ff10260401c614b13565b680100000002c5c85fe30260401c614b06565b6801000000058b90bfce0260401c614af9565b68010000000b17217fbb0260401c614aec565b6801000000162e42fff00260401c614adf565b68010000002c5c8601cc0260401c614ad2565b680100000058b90c0b490260401c614ac5565b658000000000008316614cad575b654000000000008316614c9a575b652000000000008316614c87575b651000000000008316614c74575b650800000000008316614c61575b650400000000008316614c4e575b650200000000008316614c3b575b650100000000008316156146c5576801000000b1721835510260401c6146c5565b680100000162e430e5a20260401c614c1a565b6801000002c5c863b73f0260401c614c0c565b68010000058b90cf1e6e0260401c614bfe565b680100000b1721bcfc9a0260401c614bf0565b68010000162e43f4f8310260401c614be2565b680100002c5c89d5ec6d0260401c614bd4565b6801000058b91b5bc9ae0260401c614bc6565b66800000000000008316614dbd575b66400000000000008316614daa575b66200000000000008316614d97575b66100000000000008316614d84575b66080000000000008316614d71575b66040000000000008316614d5e575b66020000000000008316614d4b575b66010000000000008316156146b75768010000b17255775c040260401c6146b7565b6801000162e525ee05470260401c614d29565b68010002c5cc37da94920260401c614d1a565b680100058ba01fb9f96d0260401c614d0b565b6801000b175effdc76ba0260401c614cfc565b680100162f3904051fa10260401c614ced565b6801002c605e2e8cec500260401c614cde565b68010058c86da1c09ea20260401c614ccf565b6780000000000000008216614ee6575b670de0b6b3a7640000906740000000000000008316614ed3575b6720000000000000008316614ec0575b6710000000000000008316614ead575b6708000000000000008316614e9a575b6704000000000000008316614e87575b6702000000000000008316614e74575b6701000000000000008316614e61575b905061469e565b680100b1afa5abcbed610260401c614e5a565b68010163da9fb33356d80260401c614e4a565b680102c9a3e778060ee70260401c614e3a565b6801059b0d31585743ae0260401c614e2a565b68010b5586cf9890f62a0260401c614e1a565b6801172b83c7d517adce0260401c614e0a565b6801306fe0a31b7152df0260401c614dfa565b5077b504f333f9de648480000000000000000000000000000000614de0565b7fb3b6ba1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b91909160001983820983820291828083109203918083039214614fd257670de0b6b3a7640000821015614fa0577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106699394670de0b6b3a7640000910990828211900360ee1b910360121c170290565b84907f5173648d0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b5050670de0b6b3a764000090049150565b9190916000838201938412911290801582169115161761240b57565b90816105b502916105b583050361240b57565b8181039291600013801582851316918412161761240b5756fea26469706673582212207cc483471c36ae49d908f8579da2e11f5013b0aac7590b7cbae2443917b5eb7664736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP1 DUP2 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0x1FD2 JUMPI POP DUP1 PUSH4 0x25830DB3 EQ PUSH2 0x1D22 JUMPI DUP1 PUSH4 0x2DCB118E EQ PUSH2 0x1CE4 JUMPI DUP1 PUSH4 0x43A19A65 EQ PUSH2 0x1C12 JUMPI DUP1 PUSH4 0x4B503F0B EQ PUSH2 0x18F7 JUMPI DUP1 PUSH4 0x60332E89 EQ PUSH2 0x1704 JUMPI DUP1 PUSH4 0x68AEA41B EQ PUSH2 0x1686 JUMPI DUP1 PUSH4 0x796B89EC EQ PUSH2 0x162A JUMPI DUP1 PUSH4 0x8C5F36BB EQ PUSH2 0x14F6 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x14A3 JUMPI DUP1 PUSH4 0x8DEA1F47 EQ PUSH2 0x1071 JUMPI DUP1 PUSH4 0x906B131A EQ PUSH2 0xD43 JUMPI DUP1 PUSH4 0x9226537E EQ PUSH2 0xAE8 JUMPI DUP1 PUSH4 0xB4105004 EQ PUSH2 0xA29 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x975 JUMPI DUP1 PUSH4 0xDE99347A EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xE3ADC7EE EQ PUSH2 0x511 JUMPI DUP1 PUSH4 0xEE5B280A EQ PUSH2 0x4C3 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x44F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x312 JUMPI PUSH4 0xF844A31C EQ PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x30F JUMPI PUSH2 0x116 CALLDATASIZE PUSH2 0x21CA JUMP JUMPDEST PUSH2 0x158 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND CALLER EQ PUSH2 0x249E JUMP JUMPDEST PUSH2 0x161 DUP3 PUSH2 0x2669 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x18 DUP5 ADD SSTORE PUSH1 0x1B DUP4 ADD PUSH1 0xFF DUP2 SLOAD PUSH1 0x20 SHR AND PUSH2 0x2E7 JUMPI PUSH2 0x183 DUP4 DUP4 PUSH2 0x326E JUMP JUMPDEST PUSH2 0x18C DUP3 PUSH2 0x3751 JUMP JUMPDEST POP POP POP PUSH5 0x100000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x25 DUP4 ADD PUSH4 0x1000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF DUP3 SLOAD AND OR SWAP1 SSTORE DUP4 PUSH1 0x17 PUSH1 0x11 DUP6 ADD SLOAD SWAP5 ADD SWAP4 DUP1 DUP6 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SLOAD AND DUP1 EXTCODESIZE ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x731133E900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE DUP3 SWAP1 DUP3 SWAP1 PUSH1 0xA4 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x2D8 JUMPI PUSH2 0x2BF JUMPI JUMPDEST POP POP SWAP2 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 ADD MSTORE PUSH32 0xB5C3204064D2AC62821E92F17E7E2C1E9971C89F07FA01B6DAB37145DB86DC55 SWAP1 DUP1 PUSH1 0x60 DUP2 ADD JUMPDEST SUB SWAP1 LOG1 DUP1 RETURN JUMPDEST DUP2 PUSH2 0x2C9 SWAP2 PUSH2 0x2072 JUMP JUMPDEST PUSH2 0x2D4 JUMPI DUP4 CODESIZE PUSH2 0x27A JUMP JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP6 PUSH32 0xDECAAE0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH2 0x32C PUSH2 0x210E JUMP JUMPDEST PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND CALLER EQ SWAP2 PUSH2 0x373 DUP4 PUSH2 0x249E JUMP JUMPDEST AND SWAP2 DUP3 ISZERO PUSH2 0x3CC JUMPI PUSH2 0x3A5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 PUSH2 0x249E JUMP JUMPDEST AND OR PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SSTORE DUP1 RETURN JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4E6577206F776E65722063616E6E6F7420626520746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH2 0x469 PUSH2 0x210E JUMP JUMPDEST POP PUSH2 0x472 PUSH2 0x2154 JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4BF JUMPI PUSH2 0x493 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2385 JUMP JUMPDEST POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST POP DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH32 0x8A7A5C9C34210B39B0DD6C746E4824F7AF2A84C059D4DCBC168A2036D26DF990 PUSH1 0x40 PUSH2 0x4F5 CALLDATASIZE PUSH2 0x21CA JUMP JUMPDEST DUP1 PUSH1 0xF PUSH2 0x501 DUP5 PUSH2 0x2669 JUMP JUMPDEST ADD SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH2 0x520 CALLDATASIZE PUSH2 0x2177 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x52B DUP2 PUSH2 0x2669 JUMP JUMPDEST SWAP3 PUSH1 0xFF PUSH1 0x1B DUP6 ADD SLOAD PUSH1 0x20 SHR AND ISZERO PUSH2 0x84E JUMPI PUSH2 0x549 PUSH1 0x24 DUP6 ADD DUP5 PUSH2 0x23D6 JUMP JUMPDEST SLOAD SWAP1 PUSH2 0x559 PUSH1 0x5 DUP7 ADD SLOAD DUP4 PUSH2 0x2529 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP2 SWAP1 PUSH1 0x20 DUP2 PUSH1 0x44 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x843 JUMPI DUP10 SWAP2 PUSH2 0x808 JUMPI JUMPDEST POP SWAP1 PUSH2 0x650 SWAP3 PUSH2 0x5D5 DUP3 PUSH1 0x20 SWAP5 LT ISZERO PUSH2 0x253C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x26 DUP11 ADD SLOAD AND DUP11 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP11 PUSH1 0x4 DUP6 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SWAP3 SWAP6 SWAP5 SWAP4 DUP2 PUSH1 0x60 DUP5 ADD SWAP8 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x7FD JUMPI PUSH2 0x66B SWAP2 DUP9 SWAP2 PUSH2 0x7CE JUMPI JUMPDEST POP PUSH2 0x25DF JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 SLOAD AND DUP1 EXTCODESIZE ISZERO PUSH2 0x4BF JUMPI DUP2 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH32 0x731133E900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 DUP4 DUP2 PUSH2 0x6FA DUP11 DUP13 DUP12 PUSH1 0x4 DUP6 ADD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xA0 SWAP5 SWAP3 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x80 DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2D8 JUMPI PUSH2 0x7AD JUMPI JUMPDEST POP PUSH32 0x99C110E7B335CFF55CAB2CFE92E319AD78396F17234DEBBB5860886AA0244CCA PUSH2 0x796 DUP7 DUP7 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 PUSH1 0x22 DUP14 DUP4 DUP4 AND PUSH1 0x0 MSTORE ADD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH1 0x80 DUP8 MSTORE PUSH1 0x80 DUP8 ADD SWAP1 PUSH2 0x2644 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP7 ADD MSTORE AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE SUB SWAP1 LOG1 DUP1 RETURN JUMPDEST DUP2 PUSH2 0x7BC SWAP2 SWAP7 SWAP6 SWAP5 SWAP4 SWAP7 PUSH2 0x2072 JUMP JUMPDEST PUSH2 0x7CA JUMPI SWAP1 SWAP2 SWAP3 DUP6 CODESIZE PUSH2 0x709 JUMP JUMPDEST DUP6 DUP1 REVERT JUMPDEST PUSH2 0x7F0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x7F6 JUMPI JUMPDEST PUSH2 0x7E8 DUP2 DUP4 PUSH2 0x2072 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x25C7 JUMP JUMPDEST CODESIZE PUSH2 0x665 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7DE JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP10 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x83B JUMPI JUMPDEST DUP2 PUSH2 0x824 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2072 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x836 JUMPI SWAP1 MLOAD PUSH2 0x650 PUSH2 0x5C1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x817 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP12 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP6 PUSH32 0xC4D5688000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x894 DUP2 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0x1B DUP2 ADD SWAP1 DUP2 SLOAD SWAP1 PUSH1 0xFF DUP3 PUSH1 0x18 SHR AND PUSH2 0x94D JUMPI PUSH1 0x2 DUP2 ADD SLOAD TIMESTAMP GT SWAP1 DUP2 ISZERO SWAP2 PUSH2 0x93D JUMPI JUMPDEST POP PUSH2 0x915 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF AND PUSH4 0x1000000 OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xAB1902EE37C92D1A78DDA53814D64B815E7E3EE287D60843A3DBD6954E3206B4 SWAP1 PUSH1 0x20 SWAP1 LOG1 DUP1 RETURN JUMPDEST PUSH1 0x4 DUP5 PUSH32 0xEBD7E12900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH1 0x3 TIMESTAMP SWAP2 ADD SLOAD GT ISZERO CODESIZE PUSH2 0x8B7 JUMP JUMPDEST PUSH1 0x4 DUP6 PUSH32 0x5CEBFD4A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH2 0x98F PUSH2 0x210E JUMP JUMPDEST POP PUSH2 0x998 PUSH2 0x2154 JUMP JUMPDEST POP PUSH1 0x44 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4BF JUMPI PUSH2 0x9B9 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2354 JUMP JUMPDEST POP POP PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4BF JUMPI PUSH2 0x9DB SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2354 JUMP JUMPDEST POP POP PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4BF JUMPI PUSH2 0x9FD SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2385 JUMP JUMPDEST POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH2 0xAE4 PUSH1 0x40 MLOAD PUSH2 0xA4B PUSH1 0x80 DUP3 PUSH2 0x2072 JUMP JUMPDEST PUSH1 0x3 DUP2 MSTORE PUSH1 0x60 CALLDATASIZE PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH32 0x8DA5CB5B00000000000000000000000000000000000000000000000000000000 PUSH2 0xA81 DUP3 PUSH2 0x243B JUMP JUMPDEST MSTORE PUSH32 0xF2FDE38B00000000000000000000000000000000000000000000000000000000 PUSH2 0xAAC DUP3 PUSH2 0x245E JUMP JUMPDEST MSTORE PUSH32 0x8C5F36BB00000000000000000000000000000000000000000000000000000000 PUSH2 0xAD7 DUP3 PUSH2 0x246E JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x21E0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH2 0xAF7 CALLDATASIZE PUSH2 0x223C JUMP JUMPDEST PUSH2 0xB01 DUP2 MLOAD PUSH2 0x2669 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x1B DUP3 ADD SLOAD PUSH1 0x20 SHR AND PUSH2 0xD1B JUMPI SWAP1 PUSH32 0x182CB671939E46D1345C30B51134E41EF7782A2113747A93B4DC3C31B91EA81E PUSH2 0xD15 SWAP3 PUSH2 0xB3F DUP4 PUSH2 0x284A JUMP JUMPDEST DUP3 MLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 ADD MSTORE PUSH32 0x5B741EB5649DAEDCC851EF6F057B1BF89B49D12357D31C478C425B6EB1CE9C5 SWAP1 PUSH1 0x60 SWAP1 LOG1 DUP3 MLOAD DUP2 SLOAD PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x12 DUP5 ADD SLOAD PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x1ADA3075F8DC673C9DE9BA7C0B8E81065D996D1FAA99FEB6D0A648C8B7A1516D SWAP1 PUSH1 0x80 SWAP1 LOG1 PUSH32 0xC64D8BE5E3585A2141489E772AD1096418B37137A76298A309A5F1095F95F1CA DUP4 MLOAD PUSH1 0xA0 DUP6 ADD MLOAD SWAP1 PUSH2 0xC7D PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0xE0 DUP9 ADD MLOAD PUSH2 0x100 DUP10 ADD MLOAD PUSH2 0x120 DUP11 ADD MLOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x260 DUP13 ADD MLOAD AND SWAP4 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP8 DUP9 SWAP6 SWAP2 SWAP4 PUSH1 0xC0 SWAP6 SWAP2 SWAP9 SWAP8 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 PUSH1 0xE0 DUP10 ADD SWAP11 DUP10 MSTORE PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 DUP3 MLOAD PUSH2 0xCFC PUSH1 0x8 DUP4 ADD SLOAD SWAP3 PUSH1 0x7 DUP2 ADD SLOAD SWAP1 PUSH2 0x200 DUP8 ADD MLOAD PUSH2 0x180 DUP9 ADD MLOAD PUSH2 0x240 DUP10 ADD MLOAD SWAP2 PUSH1 0xFF PUSH1 0x25 PUSH1 0x10 DUP7 ADD SLOAD SWAP6 ADD SLOAD PUSH1 0x8 SHR AND SWAP5 PUSH2 0xCBE DUP7 PUSH2 0x247E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP9 DUP10 SWAP5 SWAP2 SWAP3 PUSH1 0xE0 SWAP7 SWAP4 SWAP10 SWAP9 SWAP8 SWAP5 SWAP2 SWAP10 PUSH2 0x100 DUP8 ADD SWAP11 DUP8 MSTORE PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 PUSH2 0xD0F DUP2 MLOAD PUSH1 0x80 DUP4 ADD MLOAD SWAP1 PUSH2 0x326E JUMP JUMPDEST MLOAD PUSH2 0x3751 JUMP JUMPDEST POP POP POP DUP1 RETURN JUMPDEST PUSH1 0x4 DUP4 PUSH32 0xDECAAE0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4BF JUMPI PUSH2 0xD75 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x20C7 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH1 0x44 CALLDATALOAD SWAP3 PUSH2 0xD85 PUSH2 0x2131 JUMP JUMPDEST SWAP3 PUSH1 0xFF PUSH1 0x1B PUSH2 0xD93 DUP6 PUSH2 0x2669 JUMP JUMPDEST ADD SLOAD PUSH1 0x18 SHR AND PUSH2 0x1049 JUMPI PUSH2 0xDA6 DUP4 PUSH2 0x2669 JUMP JUMPDEST SWAP1 PUSH1 0x10 DUP3 ADD SLOAD SWAP5 PUSH1 0x11 DUP4 ADD SWAP7 DUP8 SLOAD SWAP7 DUP8 DUP1 DUP3 GT PUSH1 0x0 EQ PUSH2 0x1040 JUMPI PUSH2 0xDC9 SWAP2 PUSH2 0x2421 JUMP JUMPDEST SWAP1 JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1038 JUMPI POP SWAP6 JUMPDEST PUSH1 0x2 DUP5 ADD SLOAD TIMESTAMP LT PUSH2 0x1010 JUMPI PUSH1 0x3 DUP5 ADD SLOAD TIMESTAMP GT PUSH2 0xFE8 JUMPI DUP7 ISZERO PUSH2 0xFC0 JUMPI PUSH1 0x23 DUP5 ADD SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH2 0xE24 DUP9 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x242E JUMP JUMPDEST PUSH1 0x12 DUP7 ADD SLOAD LT PUSH2 0xF98 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0xEDD JUMPI JUMPDEST POP PUSH1 0x40 SWAP5 PUSH1 0x24 PUSH32 0x83518B027C8ADA9071FA7643B5352E180E42CF5A021D61294E5880408643C97F SWAP8 SWAP6 PUSH1 0x20 SWAP11 SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 SWAP7 PUSH2 0xEA9 DUP9 PUSH2 0xEC9 SWAP9 PUSH2 0x242E JUMP JUMPDEST DUP10 SSTORE AND PUSH1 0x0 MSTORE DUP12 MSTORE DUP8 PUSH1 0x0 KECCAK256 PUSH2 0xEC0 DUP7 DUP3 SLOAD PUSH2 0x242E JUMP JUMPDEST SWAP1 SSTORE ADD SWAP1 PUSH2 0x23D6 JUMP JUMPDEST SSTORE SLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE DUP6 DUP3 ADD MSTORE LOG1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x14 DUP6 ADD DUP1 SLOAD SWAP2 PUSH1 0x1 DUP4 ADD DUP1 SWAP4 GT PUSH2 0xF84 JUMPI POP DUP8 SWAP6 PUSH1 0x20 SWAP11 SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 SWAP7 PUSH2 0xEA9 DUP9 PUSH2 0xEC9 SWAP9 PUSH32 0xF865AF89149AA92DD957B447226842542090F013D1C80F4F66F6EB3EA79F8E91 PUSH32 0x83518B027C8ADA9071FA7643B5352E180E42CF5A021D61294E5880408643C97F SWAP16 PUSH1 0x40 SWAP16 SWAP11 SWAP1 PUSH1 0x40 SWAP2 DUP1 PUSH1 0x24 SWAP13 SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 SWAP9 POP POP POP SWAP7 POP POP SWAP6 SWAP11 POP SWAP6 SWAP8 POP POP SWAP5 PUSH2 0xE58 JUMP JUMPDEST DUP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x24 SWAP3 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST DUP1 PUSH32 0x2B42B12200000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0x7EEC29E000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0xC32ED7000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0xF2B4A12C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP SWAP6 PUSH2 0xDD6 JUMP JUMPDEST POP POP DUP3 SWAP1 PUSH2 0xDCB JUMP JUMPDEST DUP1 PUSH32 0xA6A992DF00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4BF JUMPI PUSH2 0x10A3 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x20C7 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x44 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 DUP3 SUB PUSH2 0x149F JUMPI PUSH2 0x10CF PUSH2 0x2131 JUMP JUMPDEST SWAP1 PUSH1 0x84 CALLDATALOAD SWAP3 PUSH2 0x1116 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND CALLER EQ PUSH2 0x249E JUMP JUMPDEST PUSH2 0x111F DUP6 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x1B DUP3 ADD SLOAD PUSH1 0x20 SHR AND ISZERO PUSH2 0x1477 JUMPI PUSH1 0x44 PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 SLOAD AND PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP9 PUSH1 0x4 DUP4 ADD MSTORE DUP12 PUSH1 0x24 DUP4 ADD MSTORE GAS STATICCALL DUP1 ISZERO PUSH2 0x843 JUMPI DUP7 SWAP2 DUP11 SWAP2 PUSH2 0x143E JUMPI JUMPDEST POP LT PUSH2 0x1416 JUMPI PUSH1 0x5 PUSH2 0x11A5 SWAP2 ADD SLOAD DUP6 PUSH2 0x2529 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH1 0x20 DUP2 PUSH1 0x44 DUP2 DUP6 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x140B JUMPI DUP11 SWAP2 PUSH2 0x13CD JUMPI JUMPDEST POP SWAP1 PUSH2 0x1281 SWAP4 PUSH2 0x1221 DUP5 PUSH1 0x20 SWAP6 SWAP5 LT ISZERO PUSH2 0x253C JUMP JUMPDEST DUP11 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP12 PUSH1 0x4 DUP6 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SWAP3 SWAP6 SWAP5 SWAP4 DUP2 PUSH1 0x60 DUP5 ADD SWAP8 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x7FD JUMPI PUSH2 0x129B SWAP2 DUP9 SWAP2 PUSH2 0x7CE JUMPI POP PUSH2 0x25DF JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 SLOAD AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0x4BF JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xC4 DUP4 SWAP3 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP3 PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP9 PUSH1 0x4 DUP6 ADD MSTORE AND SWAP8 DUP9 PUSH1 0x24 DUP5 ADD MSTORE DUP11 PUSH1 0x44 DUP5 ADD MSTORE DUP10 PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD MSTORE DUP2 PUSH1 0xA4 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x7FD JUMPI PUSH2 0x138D JUMPI JUMPDEST POP SWAP2 PUSH2 0x1372 SWAP4 SWAP2 PUSH32 0x38DB1382A58023A1D5D8AAAB1581199C9B7D9ED33223C18BEEAAB57924AFF20F SWAP6 SWAP4 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH1 0xA0 DUP8 MSTORE PUSH1 0xA0 DUP8 ADD SWAP1 PUSH2 0x2644 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE SUB SWAP1 LOG1 DUP1 RETURN JUMPDEST SWAP2 DUP7 PUSH2 0x13C1 PUSH32 0x38DB1382A58023A1D5D8AAAB1581199C9B7D9ED33223C18BEEAAB57924AFF20F SWAP8 SWAP6 SWAP4 SWAP9 PUSH2 0x1372 SWAP8 SWAP6 PUSH2 0x2072 JUMP JUMPDEST SWAP7 SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 PUSH2 0x1334 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 POP PUSH1 0x20 DUP4 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1403 JUMPI JUMPDEST DUP2 PUSH2 0x13EA PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2072 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x13FF JUMPI SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x1281 PUSH2 0x120C JUMP JUMPDEST DUP10 DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x13DD JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP13 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP9 PUSH32 0x91DF618A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP2 POP POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x146F JUMPI JUMPDEST DUP2 PUSH2 0x145A PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2072 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x146B JUMPI DUP6 SWAP1 MLOAD CODESIZE PUSH2 0x1191 JUMP JUMPDEST DUP9 DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x144D JUMP JUMPDEST PUSH1 0x4 DUP9 PUSH32 0xC4D5688000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP5 DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH2 0x1510 PUSH2 0x210E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND PUSH2 0x15CC JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND OR PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SSTORE DUP1 RETURN JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E657220616C726561647920736574000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1659 PUSH2 0x210E JUMP JUMPDEST AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0x1 SLOAD AND OR PUSH1 0x1 SSTORE DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH32 0x9CC9725EE02D8F0A4D8B30054405939F4D872CC6A5C2D677E02F5BD87E5DEA2A PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD PUSH2 0x2B9 PUSH1 0x44 CALLDATALOAD PUSH2 0x16CE DUP4 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0xA PUSH8 0xDE0B6B3A7640000 PUSH2 0x16E3 DUP5 DUP9 PUSH2 0x445A JUMP JUMPDEST DIV SWAP2 ADD SSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH2 0x1713 CALLDATASIZE PUSH2 0x223C JUMP JUMPDEST ADDRESS PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 SLOAD AND OR DUP3 SSTORE PUSH2 0x1745 DUP2 MLOAD PUSH2 0x2669 JUMP JUMPDEST PUSH1 0x1B DUP2 ADD PUSH1 0xFF DUP2 SLOAD PUSH1 0x10 SHR AND PUSH2 0x18CF JUMPI DUP3 SWAP2 PUSH32 0xB42EBD0AD22561F77328EE457D5BA2A08A7C2847FF88C663CCA9DCC8C53DC086 SWAP2 PUSH2 0x1785 PUSH2 0xD15 SWAP6 PUSH2 0x284A JUMP JUMPDEST PUSH3 0x10000 PUSH3 0xFF0000 NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x1 SLOAD SWAP1 PUSH1 0x25 DUP2 ADD SWAP2 PUSH32 0xFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFF PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 DUP5 SLOAD SWAP3 PUSH1 0x20 SHL AND SWAP2 AND OR DUP1 SWAP3 SSTORE PUSH32 0xF5D1B3AF18A6E549E23801B7A43BEC54699BADCE37E0F7E96E0A4EBB65143D74 DUP5 MLOAD PUSH1 0xA0 DUP7 ADD MLOAD SWAP1 PUSH2 0x1891 PUSH1 0xC0 DUP9 ADD MLOAD PUSH1 0xE0 DUP10 ADD MLOAD PUSH2 0x100 DUP11 ADD MLOAD PUSH2 0x120 DUP12 ADD MLOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x260 DUP14 ADD MLOAD AND SWAP4 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP8 DUP9 SWAP6 SWAP2 SWAP4 PUSH1 0xC0 SWAP6 SWAP2 SWAP9 SWAP8 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 PUSH1 0xE0 DUP10 ADD SWAP11 DUP10 MSTORE PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 PUSH2 0xCFC DUP5 MLOAD SWAP2 PUSH1 0x8 DUP2 ADD SLOAD SWAP4 PUSH1 0x7 DUP3 ADD SLOAD SWAP2 PUSH2 0x200 DUP9 ADD MLOAD PUSH2 0x180 DUP10 ADD MLOAD SWAP1 PUSH1 0xFF PUSH1 0x10 PUSH2 0x240 DUP13 ADD MLOAD SWAP5 ADD SLOAD SWAP5 PUSH1 0x8 SHR AND SWAP5 PUSH2 0xCBE DUP7 PUSH2 0x247E JUMP JUMPDEST PUSH1 0x4 DUP5 PUSH32 0xE2003EBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1F NOT PUSH2 0x200 PUSH2 0x191C DUP2 DUP6 PUSH2 0x2072 JUMP JUMPDEST PUSH1 0xF DUP5 MSTORE ADD CALLDATASIZE PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH32 0x60332E8900000000000000000000000000000000000000000000000000000000 PUSH2 0x1951 DUP4 PUSH2 0x243B JUMP JUMPDEST MSTORE PUSH32 0x796B89EC00000000000000000000000000000000000000000000000000000000 PUSH2 0x197C DUP4 PUSH2 0x245E JUMP JUMPDEST MSTORE PUSH32 0x9226537E00000000000000000000000000000000000000000000000000000000 PUSH2 0x19A7 DUP4 PUSH2 0x246E JUMP JUMPDEST MSTORE DUP2 MLOAD PUSH1 0x3 LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0x68AEA41B00000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x4 LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0x2DCB118E00000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x5 LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0xEE5B280A00000000000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x6 LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0x906B131A00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x7 LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0xDE99347A00000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x8 LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0x43A19A6500000000000000000000000000000000000000000000000000000000 PUSH2 0x120 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x9 LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0x25830DB300000000000000000000000000000000000000000000000000000000 PUSH2 0x140 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0xA LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0x8DEA1F4700000000000000000000000000000000000000000000000000000000 PUSH2 0x160 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0xB LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0xE3ADC7EE00000000000000000000000000000000000000000000000000000000 PUSH2 0x180 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0xC LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0xF844A31C00000000000000000000000000000000000000000000000000000000 PUSH2 0x1A0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0xD LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 PUSH2 0x1C0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0xE LT ISZERO PUSH2 0x1BFE JUMPI PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH2 0x1E0 DUP4 ADD MSTORE PUSH1 0x40 MLOAD DUP1 PUSH2 0xAE4 DUP5 DUP3 PUSH2 0x21E0 JUMP JUMPDEST DUP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x24 SWAP3 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30F JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1C30 DUP2 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0x1B DUP2 ADD SWAP1 DUP2 SLOAD SWAP1 PUSH1 0xFF DUP3 PUSH1 0x18 SHR AND ISZERO PUSH2 0x1CBC JUMPI PUSH1 0x2 DUP2 ADD SLOAD TIMESTAMP GT SWAP1 DUP2 ISZERO SWAP2 PUSH2 0x1CAC JUMPI JUMPDEST POP PUSH2 0x915 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF AND SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x11AA0BD3FB4D9C5622C703F91610A74140A4F88A7EBC7B4FAAEAF52E3CB7AA94 SWAP1 PUSH1 0x20 SWAP1 LOG1 DUP1 RETURN JUMPDEST SWAP1 POP PUSH1 0x3 TIMESTAMP SWAP2 ADD SLOAD GT ISZERO CODESIZE PUSH2 0x1C54 JUMP JUMPDEST PUSH1 0x4 DUP6 PUSH32 0xC851109A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH32 0x91A72ED52432E53C748925EF46B36A19F93CB874539B387D4F3B1F92AA33E11 PUSH1 0x40 PUSH2 0x1D16 CALLDATASIZE PUSH2 0x21CA JUMP JUMPDEST DUP1 PUSH1 0xE PUSH2 0x501 DUP5 PUSH2 0x2669 JUMP JUMPDEST POP CALLVALUE PUSH2 0x30F JUMPI PUSH2 0x1D31 CALLDATASIZE PUSH2 0x2177 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x1D3C DUP4 PUSH2 0x2669 JUMP JUMPDEST SWAP2 PUSH1 0x11 DUP4 ADD SWAP3 DUP4 SLOAD SWAP2 PUSH1 0x24 DUP3 ADD SWAP3 PUSH2 0x1D54 DUP5 DUP7 PUSH2 0x23D6 JUMP JUMPDEST SLOAD DUP2 LT PUSH2 0x1F74 JUMPI PUSH1 0x23 DUP4 ADD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP10 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP10 KECCAK256 SLOAD PUSH2 0x1D8C DUP7 DUP9 PUSH2 0x23D6 JUMP JUMPDEST SLOAD GT PUSH2 0x1EF0 JUMPI PUSH2 0x1DBC PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 PUSH2 0x1DB5 DUP8 DUP10 PUSH2 0x23D6 JUMP JUMPDEST SLOAD SWAP1 PUSH2 0x2421 JUMP JUMPDEST DUP8 SSTORE PUSH2 0x1DC8 DUP6 DUP8 PUSH2 0x23D6 JUMP JUMPDEST SLOAD DUP3 DUP3 AND DUP11 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH2 0x1DE1 PUSH1 0x40 DUP12 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x2421 JUMP JUMPDEST SWAP1 SSTORE AND DUP8 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 DUP7 KECCAK256 SLOAD ISZERO PUSH2 0x1E8C JUMPI JUMPDEST PUSH1 0x15 ADD SWAP2 DUP3 SLOAD PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1E78 JUMPI DUP4 DUP8 PUSH2 0x1E5B PUSH1 0x40 SWAP8 SWAP6 PUSH32 0x499925BC28B60B5B11B1841F8F51318FA4484237122FB618E76C3195B37D9EB8 SWAP6 DUP10 SWAP6 PUSH32 0x83518B027C8ADA9071FA7643B5352E180E42CF5A021D61294E5880408643C97F SWAP12 SWAP10 SSTORE PUSH2 0x23D6 JUMP JUMPDEST SSTORE SLOAD DUP2 MLOAD SWAP1 DUP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 SLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 DUP1 RETURN JUMPDEST PUSH1 0x24 DUP8 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH1 0x14 DUP2 ADD DUP1 SLOAD SWAP1 PUSH1 0x0 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x1EDC JUMPI PUSH1 0x40 DUP3 PUSH1 0x15 SWAP5 SWAP4 PUSH32 0xF865AF89149AA92DD957B447226842542090F013D1C80F4F66F6EB3EA79F8E91 SWAP4 SSTORE DUP2 MLOAD SWAP1 DUP10 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 SWAP1 POP PUSH2 0x1DF4 JUMP JUMPDEST PUSH1 0x24 DUP9 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E646572666C6F773A20726573657276656420616D6F756E74206279206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E646572666C6F773A20726573657276656420616D6F756E74000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x4BF JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x4BF JUMPI PUSH1 0x4 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x2E3 JUMPI PUSH1 0x20 SWAP3 POP PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x2048 JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP2 POP EQ CODESIZE PUSH2 0x2041 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2095 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2095 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x836 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x20DE DUP3 PUSH2 0x20AB JUMP JUMPDEST SWAP3 PUSH2 0x20EC PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x2072 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x836 JUMPI DUP2 PUSH1 0x0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x836 JUMPI JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x836 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x836 JUMPI JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x836 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x836 JUMPI PUSH2 0x21A2 SWAP2 PUSH1 0x4 ADD PUSH2 0x20C7 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x836 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x40 SWAP2 ADD SLT PUSH2 0x836 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x2204 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x21F7 JUMP JUMPDEST PUSH1 0x3 NOT PUSH2 0x280 SWAP2 ADD SLT PUSH2 0x836 JUMPI PUSH1 0x40 MLOAD PUSH1 0x0 PUSH2 0x280 DUP3 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP4 DUP3 LT OR PUSH2 0x2340 JUMPI PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATALOAD DUP3 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x84 CALLDATALOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA4 CALLDATALOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC4 CALLDATALOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE4 CALLDATALOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x104 CALLDATALOAD PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x124 CALLDATALOAD PUSH2 0x120 DUP4 ADD MSTORE PUSH2 0x144 CALLDATALOAD PUSH2 0x140 DUP4 ADD MSTORE PUSH2 0x164 CALLDATALOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH2 0x184 CALLDATALOAD PUSH2 0x180 DUP4 ADD MSTORE PUSH2 0x1A4 CALLDATALOAD PUSH2 0x1A0 DUP4 ADD MSTORE PUSH2 0x1C4 CALLDATALOAD PUSH2 0x1C0 DUP4 ADD MSTORE PUSH2 0x1E4 CALLDATALOAD PUSH2 0x1E0 DUP4 ADD MSTORE PUSH2 0x204 CALLDATALOAD PUSH2 0x200 DUP4 ADD MSTORE PUSH2 0x224 CALLDATALOAD PUSH2 0x220 DUP4 ADD MSTORE PUSH2 0x244 CALLDATALOAD PUSH2 0x240 DUP4 ADD MSTORE PUSH2 0x264 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x30F JUMPI POP PUSH2 0x260 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x24 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x836 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x836 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x836 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x836 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x836 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x836 JUMPI JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x23C6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x23B6 JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x23F0 SWAP3 DUP3 PUSH1 0x40 MLOAD SWAP5 DUP4 DUP7 DUP1 SWAP6 MLOAD SWAP4 DUP5 SWAP3 ADD PUSH2 0x23B3 JUMP JUMPDEST DUP3 ADD SWAP1 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x0 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x240B JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x240B JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x240B JUMPI JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2448 JUMPI PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x2 LT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x2488 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ISZERO PUSH2 0x24A5 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920746865206F776E65722063616E2063616C6C20746869732066756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6374696F6E000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x240B JUMPI JUMP JUMPDEST ISZERO PUSH2 0x2543 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x836 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x836 JUMPI SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x25E6 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E73666572206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 SWAP4 PUSH2 0x2662 DUP2 MLOAD DUP1 SWAP3 DUP2 DUP8 MSTORE DUP8 DUP1 DUP9 ADD SWAP2 ADD PUSH2 0x23B3 JUMP JUMPDEST ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP2 LT ISZERO PUSH2 0x281F JUMPI JUMPDEST POP DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x2804 JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x27F0 JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x27DF JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x27D0 JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x27C2 JUMPI JUMPDEST LT ISZERO PUSH2 0x27BA JUMPI JUMPDEST PUSH1 0x1 DUP2 ADD SWAP2 PUSH1 0xA PUSH1 0x0 NOT PUSH1 0x21 PUSH2 0x2713 PUSH2 0x26FD DUP8 PUSH2 0x20AB JUMP JUMPDEST SWAP7 PUSH2 0x270B PUSH1 0x40 MLOAD SWAP9 DUP10 PUSH2 0x2072 JUMP JUMPDEST DUP1 DUP9 MSTORE PUSH2 0x20AB JUMP JUMPDEST SWAP5 PUSH1 0x1F NOT PUSH1 0x20 DUP9 ADD SWAP7 ADD CALLDATASIZE DUP8 CALLDATACOPY DUP7 ADD ADD JUMPDEST ADD SWAP2 PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x2760 JUMPI PUSH1 0x0 NOT PUSH1 0xA SWAP2 SWAP3 PUSH2 0x2724 JUMP JUMPDEST POP POP PUSH2 0x27B4 PUSH1 0x2C PUSH1 0x40 MLOAD DUP1 SWAP4 PUSH2 0x27A3 PUSH1 0x20 DUP4 ADD SWAP7 PUSH32 0x73746F726167652E626F6E640000000000000000000000000000000000000000 DUP9 MSTORE MLOAD DUP1 SWAP3 DUP6 DUP6 ADD SWAP1 PUSH2 0x23B3 JUMP JUMPDEST DUP2 ADD SUB ADD PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x2072 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x26E5 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP3 ADD SWAP2 PUSH2 0x26DE JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP3 ADD SWAP2 PUSH2 0x26D4 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP3 ADD SWAP2 PUSH2 0x26C9 JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP3 ADD SWAP2 PUSH2 0x26BC JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP3 ADD SWAP2 PUSH2 0x26AC JUMP JUMPDEST PUSH1 0x40 SWAP3 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 SWAP1 DIV SWAP1 POP PUSH1 0xA PUSH2 0x2691 JUMP JUMPDEST SWAP1 PUSH1 0x0 PUSH2 0x2857 DUP4 MLOAD PUSH2 0x2669 JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x260 DUP6 ADD MLOAD AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x26 DUP5 ADD SWAP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0xA0 DUP5 ADD DUP1 MLOAD PUSH1 0x5 DUP5 ADD SSTORE PUSH1 0xE0 DUP6 ADD SWAP3 DUP4 MLOAD ISZERO PUSH2 0x3186 JUMPI PUSH2 0x200 DUP7 ADD SWAP3 DUP7 DUP5 MLOAD ISZERO PUSH1 0x0 EQ PUSH2 0x313F JUMPI PUSH2 0x180 PUSH1 0xC SWAP2 ADD MLOAD MOD PUSH2 0x3117 JUMPI DUP7 SWAP1 JUMPDEST PUSH2 0x1C0 DUP3 ADD SWAP1 DUP2 MLOAD PUSH2 0x2F9A JUMPI JUMPDEST PUSH2 0x1A0 DUP4 ADD SWAP2 DUP3 MLOAD PUSH2 0x2E7B JUMPI JUMPDEST PUSH1 0xC0 DUP5 ADD SWAP8 PUSH2 0x291A DUP10 MLOAD DUP3 MLOAD SWAP1 PUSH2 0x445A JUMP JUMPDEST SWAP1 PUSH1 0x6 DUP8 ADD SWAP2 DUP3 SSTORE PUSH2 0x100 DUP7 ADD SWAP2 DUP3 MLOAD SWAP2 PUSH2 0x293C PUSH2 0x120 DUP10 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x445A JUMP JUMPDEST PUSH1 0x9 DUP11 ADD SSTORE PUSH8 0xDE0B6B3A7640000 PUSH2 0x2969 PUSH1 0x40 DUP11 ADD MLOAD DUP1 SWAP13 PUSH1 0x1 DUP14 ADD SWAP14 DUP15 SSTORE PUSH1 0x20 DUP13 ADD MLOAD DUP14 SSTORE MLOAD SWAP1 PUSH2 0x445A JUMP JUMPDEST DIV PUSH1 0x10 DUP11 ADD SSTORE PUSH1 0x60 PUSH2 0x1E0 DUP10 ADD MLOAD SWAP9 PUSH1 0x12 DUP12 ADD SWAP10 DUP11 SSTORE PUSH2 0x180 DUP2 ADD MLOAD PUSH1 0xD DUP13 ADD SSTORE ADD MLOAD SWAP12 DUP13 SWAP12 PUSH3 0x4F1A00 DUP14 PUSH1 0x2 DUP14 ADD SWAP15 DUP16 SSTORE ADD SWAP14 DUP15 DUP2 GT PUSH2 0x240B JUMPI DUP15 LT PUSH2 0x2DF7 JUMPI DUP11 SWAP1 PUSH1 0x3 DUP3 ADD SWAP15 DUP16 SSTORE DUP1 MLOAD ISZERO PUSH1 0x0 EQ PUSH2 0x2D0D JUMPI POP PUSH1 0x25 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE POP POP DUP1 SLOAD PUSH1 0x8 DUP10 ADD SSTORE JUMPDEST PUSH2 0x240 DUP14 ADD DUP1 MLOAD PUSH1 0x1 SUB PUSH2 0x2CB4 JUMPI POP DUP6 MLOAD ISZERO PUSH2 0x2C7D JUMPI PUSH1 0x25 DUP9 ADD PUSH3 0x30000 PUSH3 0xFF0000 NOT DUP3 SLOAD AND OR SWAP1 SSTORE JUMPDEST DUP6 MLOAD PUSH1 0xE DUP10 ADD SSTORE DUP4 MLOAD PUSH1 0xF DUP10 ADD SSTORE PUSH2 0x140 DUP14 ADD SWAP5 DUP14 DUP7 MLOAD SWAP1 DUP2 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x2C6E JUMPI JUMPDEST POP PUSH2 0x2BE2 JUMPI JUMPDEST POP POP PUSH2 0x2BDD SWAP9 SWAP6 PUSH32 0x9CC9725EE02D8F0A4D8B30054405939F4D872CC6A5C2D677E02F5BD87E5DEA2A DUP10 SWAP7 PUSH32 0x5B741EB5649DAEDCC851EF6F057B1BF89B49D12357D31C478C425B6EB1CE9C5 SWAP15 SWAP16 SWAP11 PUSH1 0x40 PUSH2 0x2BB8 SWAP9 PUSH2 0x2B49 PUSH32 0x1ADA3075F8DC673C9DE9BA7C0B8E81065D996D1FAA99FEB6D0A648C8B7A1516D SWAP14 SWAP10 PUSH2 0x2B43 PUSH2 0x2B3D PUSH32 0x91A72ED52432E53C748925EF46B36A19F93CB874539B387D4F3B1F92AA33E11 SWAP12 DUP7 SWAP12 PUSH1 0x1B PUSH32 0x8A7A5C9C34210B39B0DD6C746E4824F7AF2A84C059D4DCBC168A2036D26DF990 SWAP10 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF DUP2 SLOAD AND SWAP1 SSTORE SLOAD SWAP4 MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x445A JUMP JUMPDEST DUP3 PUSH2 0x4F32 JUMP JUMPDEST SWAP1 PUSH2 0x2421 JUMP JUMPDEST PUSH1 0x7 DUP13 ADD SSTORE DUP14 MLOAD SWAP1 MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 DUP11 MLOAD SWAP1 MLOAD PUSH2 0x160 DUP13 ADD MLOAD DUP6 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 SWAP1 LOG1 DUP9 MLOAD SWAP1 MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 DUP6 MLOAD SWAP3 SLOAD SWAP4 SLOAD SWAP1 SLOAD SWAP1 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 DUP6 SWAP1 SWAP5 SWAP4 SWAP3 PUSH1 0x60 SWAP3 PUSH1 0x80 DUP4 ADD SWAP7 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 MLOAD SWAP2 SLOAD SWAP3 SLOAD PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST DUP15 PUSH2 0x2BF4 PUSH2 0x160 DUP3 ADD SWAP3 DUP4 MLOAD SWAP1 PUSH2 0x445A JUMP JUMPDEST PUSH1 0xA DUP13 ADD SSTORE MLOAD SWAP1 DUP8 MLOAD SWAP1 MLOAD SWAP2 ADDRESS EXTCODESIZE ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x68AEA41B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 DUP2 PUSH1 0x64 DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x2D8 JUMPI ISZERO PUSH2 0x2A43 JUMPI PUSH2 0x2C64 DUP3 DUP1 SWAP3 PUSH2 0x2072 JUMP JUMPDEST PUSH2 0x30F JUMPI DUP1 PUSH2 0x2A43 JUMP JUMPDEST PUSH2 0x160 SWAP2 POP ADD MLOAD ISZERO ISZERO DUP16 PUSH2 0x2A3D JUMP JUMPDEST DUP4 MLOAD ISZERO PUSH2 0x2C9C JUMPI PUSH1 0x25 DUP9 ADD PUSH3 0x40000 PUSH3 0xFF0000 NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x2A1B JUMP JUMPDEST PUSH1 0x25 DUP9 ADD PUSH3 0x10000 PUSH3 0xFF0000 NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x2A1B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2CCE JUMPI POP PUSH1 0x25 DUP9 ADD PUSH3 0xFF0000 NOT DUP2 SLOAD AND SWAP1 SSTORE PUSH2 0x2A1B JUMP JUMPDEST MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE ADD PUSH2 0x2A1B JUMPI PUSH1 0x25 DUP9 ADD PUSH3 0x20000 PUSH3 0xFF0000 NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x2A1B JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 SUB PUSH2 0x2D83 JUMPI POP PUSH2 0x2D79 SWAP3 PUSH2 0x2D5C PUSH2 0x2D74 SWAP4 PUSH1 0x25 PUSH2 0x2D64 SWAP5 ADD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE DUP3 MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x242E JUMP JUMPDEST SWAP1 MLOAD SWAP1 PUSH2 0x445A JUMP JUMPDEST PUSH8 0x3782DACE9D90000 JUMPDEST SWAP1 PUSH2 0x4186 JUMP JUMPDEST PUSH2 0x23FC JUMP JUMPDEST PUSH1 0x8 DUP10 ADD SSTORE PUSH2 0x29F1 JUMP JUMPDEST MLOAD SWAP1 SWAP2 SWAP1 PUSH1 0x2 EQ PUSH2 0x2D97 JUMPI JUMPDEST POP POP POP PUSH2 0x29F1 JUMP JUMPDEST PUSH2 0x2DEA SWAP3 PUSH2 0x2D5C PUSH2 0x2DDC SWAP3 PUSH1 0x25 PUSH2 0x2D74 SWAP6 ADD PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE DUP3 MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x242E JUMP JUMPDEST PUSH8 0x1280F39A3485555 PUSH2 0x2D6E JUMP JUMPDEST PUSH1 0x8 DUP10 ADD SSTORE CODESIZE DUP9 DUP2 PUSH2 0x2D8F JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x54696D657374616D702073686F756C64206265206561726C696572206F722065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7175616C20746F207468652063757272656E742074696D657374616D70000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 DUP6 MLOAD ISZERO PUSH1 0x0 EQ PUSH2 0x2F4E JUMPI POP DUP2 MLOAD PUSH1 0xC SWAP1 MOD ISZERO PUSH2 0x2EC0 JUMPI PUSH1 0x4 DUP9 PUSH32 0xBEBD229200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP9 SWAP8 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 MLOAD DUP4 MLOAD ADDRESS EXTCODESIZE ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH32 0x2DCB118E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE DUP3 DUP2 PUSH1 0x44 DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x2F43 JUMPI SWAP1 DUP11 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x2F24 JUMPI JUMPDEST POP PUSH2 0x2908 JUMP JUMPDEST DUP3 DUP1 SWAP5 SWAP6 POP PUSH2 0x2F35 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x2072 JUMP JUMPDEST PUSH2 0x4BF JUMPI SWAP1 DUP9 SWAP3 SWAP2 CODESIZE PUSH2 0x2F1E JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP6 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 SWAP1 PUSH1 0x1 DUP8 MLOAD SUB PUSH2 0x2908 JUMPI DUP3 MLOAD SWAP2 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 POP SWAP1 PUSH1 0x3 SWAP1 MOD ISZERO PUSH2 0x2EC0 JUMPI PUSH1 0x4 DUP9 PUSH32 0x4F80C6ED00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 DUP5 MLOAD ISZERO PUSH1 0x0 EQ PUSH2 0x305A JUMPI POP DUP1 MLOAD PUSH1 0xC SWAP1 MOD ISZERO PUSH2 0x2FDE JUMPI PUSH1 0x4 DUP8 PUSH32 0xDCBD8C0000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP8 MLOAD DUP3 MLOAD ADDRESS EXTCODESIZE ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH32 0xEE5B280A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE DUP2 DUP2 PUSH1 0x44 DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x2D8 JUMPI SWAP1 DUP10 SWAP4 SWAP3 SWAP2 PUSH2 0x303F JUMPI JUMPDEST POP PUSH2 0x28FB JUMP JUMPDEST DUP2 DUP1 SWAP4 SWAP5 POP PUSH2 0x304D SWAP2 PUSH2 0x2072 JUMP JUMPDEST PUSH2 0x30F JUMPI SWAP1 DUP8 SWAP2 CODESIZE PUSH2 0x3039 JUMP JUMPDEST SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 PUSH1 0x1 DUP7 MLOAD SUB PUSH2 0x28FB JUMPI DUP2 MLOAD SWAP1 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 POP PUSH1 0x3 SWAP1 MOD ISZERO PUSH2 0x30A4 JUMPI PUSH1 0x4 DUP8 PUSH32 0x701090100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP8 MLOAD DUP3 MLOAD ADDRESS EXTCODESIZE ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH32 0xEE5B280A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE DUP2 DUP2 PUSH1 0x44 DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x2D8 JUMPI SWAP1 DUP3 DUP11 SWAP5 SWAP4 SWAP3 PUSH2 0x3107 JUMPI JUMPDEST POP POP PUSH2 0x28FB JUMP JUMPDEST PUSH2 0x3110 SWAP2 PUSH2 0x2072 JUMP JUMPDEST CODESIZE DUP2 PUSH2 0x3100 JUMP JUMPDEST DUP1 PUSH32 0xD38E32C00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST SWAP1 PUSH1 0x1 DUP6 MLOAD SUB PUSH2 0x28EE JUMPI SWAP1 PUSH2 0x180 PUSH1 0x3 SWAP2 ADD MLOAD MOD PUSH2 0x315E JUMPI DUP7 SWAP1 PUSH2 0x28EE JUMP JUMPDEST DUP1 PUSH32 0xECFBD8CF00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0x1DE42A9000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP2 DUP2 LT PUSH2 0x31B9 JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x31AE JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE DUP1 PUSH2 0x31D4 JUMPI POP POP JUMP JUMPDEST PUSH2 0x31E9 SWAP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x31AE JUMP JUMPDEST JUMP JUMPDEST DUP1 SLOAD DUP3 LT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 PUSH1 0x0 SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH9 0x10000000000000000 DUP2 LT ISZERO PUSH2 0x2095 JUMPI PUSH2 0x3225 SWAP2 PUSH1 0x1 DUP3 ADD DUP2 SSTORE PUSH2 0x31EB JUMP JUMPDEST PUSH1 0x0 NOT DUP3 SLOAD SWAP2 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP1 SLOAD PUSH9 0x10000000000000000 DUP2 LT ISZERO PUSH2 0x2095 JUMPI PUSH2 0x3257 SWAP2 PUSH1 0x1 DUP3 ADD DUP2 SSTORE PUSH2 0x31EB JUMP JUMPDEST PUSH1 0x0 NOT DUP3 SWAP4 SWAP3 SLOAD SWAP2 PUSH1 0x3 SHL SWAP3 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST SWAP1 PUSH2 0x3278 DUP3 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF PUSH1 0x1B DUP4 ADD SLOAD PUSH1 0x20 SHR AND ISZERO ISZERO EQ PUSH2 0x36ED JUMPI PUSH3 0x15180 DUP3 DIV PUSH3 0x10BD9 DUP2 ADD SWAP1 PUSH3 0x10BD9 DUP3 SLT PUSH1 0x0 DUP3 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI PUSH3 0x264965 ADD SWAP1 PUSH1 0x0 PUSH3 0x253D8C DUP4 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI DUP1 PUSH1 0x2 SHL PUSH1 0x4 DUP2 SDIV DUP3 SUB PUSH2 0x240B JUMPI PUSH3 0x23AB1 SWAP1 SDIV SWAP1 DUP2 PUSH3 0x23AB1 MUL SWAP1 PUSH3 0x23AB1 DUP3 SDIV DUP4 SUB PUSH2 0x240B JUMPI PUSH1 0x3 DUP3 ADD SWAP2 PUSH1 0x0 PUSH1 0x3 DUP5 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI PUSH1 0x4 PUSH2 0x331C SWAP3 SDIV SWAP1 PUSH2 0x5012 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD PUSH1 0x1 DUP2 SLT PUSH1 0x0 DUP5 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI DUP1 PUSH2 0xFA0 MUL SWAP1 PUSH2 0xFA0 DUP3 SDIV SUB PUSH2 0x240B JUMPI PUSH3 0x164B09 PUSH2 0x3362 SWAP2 SDIV SWAP3 PUSH1 0x4 PUSH2 0x335B DUP6 PUSH2 0x4FFF JUMP JUMPDEST SDIV SWAP1 PUSH2 0x5012 JUMP JUMPDEST SWAP2 PUSH1 0x1F DUP4 ADD SWAP3 PUSH1 0x0 PUSH1 0x1F DUP6 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI DUP3 PUSH1 0x50 MUL PUSH1 0x50 DUP2 SDIV DUP5 SUB PUSH2 0x240B JUMPI PUSH2 0x98F SWAP1 SDIV SWAP3 DUP4 PUSH2 0x98F MUL SWAP1 PUSH2 0x98F DUP3 SDIV DUP6 SUB PUSH2 0x240B JUMPI PUSH1 0x50 PUSH2 0x33AF SWAP3 SDIV SWAP1 PUSH2 0x5012 JUMP JUMPDEST SWAP3 PUSH1 0xB DUP2 SDIV SWAP1 PUSH1 0x2 DUP2 ADD SWAP1 PUSH1 0x0 PUSH1 0x2 DUP4 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI DUP2 PUSH1 0xC MUL PUSH1 0xC DUP2 SDIV DUP4 SUB PUSH2 0x240B JUMPI PUSH2 0x33E6 SWAP2 PUSH2 0x5012 JUMP JUMPDEST SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF DUP2 ADD SWAP1 DUP2 SGT PUSH1 0x1 AND PUSH2 0x240B JUMPI DUP1 PUSH1 0x64 MUL SWAP1 PUSH1 0x64 DUP3 SDIV SUB PUSH2 0x240B JUMPI PUSH2 0x3434 SWAP3 PUSH2 0x342F SWAP2 PUSH2 0x4FE3 JUMP JUMPDEST PUSH2 0x4FE3 JUMP JUMPDEST PUSH1 0x0 SWAP2 PUSH1 0x25 DUP6 ADD SWAP3 PUSH1 0xFF DUP5 SLOAD AND PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x36D9 JUMPI DUP1 PUSH2 0x36B6 JUMPI POP POP PUSH1 0xC PUSH1 0xD DUP7 ADD SLOAD DIV SWAP4 JUMPDEST PUSH1 0x0 SWAP5 DUP4 PUSH1 0x1D DUP9 ADD SWAP5 PUSH2 0x346D DUP7 PUSH2 0x31C5 JUMP JUMPDEST PUSH1 0x21 DUP10 ADD SWAP8 DUP9 SLOAD DUP2 DUP11 SSTORE DUP1 PUSH2 0x3697 JUMPI JUMPDEST POP DUP1 JUMPDEST DUP5 DUP2 LT PUSH2 0x34C9 JUMPI POP POP POP POP POP POP POP POP POP POP SWAP2 DUP2 PUSH1 0x40 SWAP3 PUSH1 0xB PUSH32 0x6D7086AB13FBD1583240E1B6E62B23416E3945F952373732FC183A2A407E462D SWAP6 ADD SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 JUMP JUMPDEST PUSH1 0xFF DUP10 SLOAD AND PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x2488 JUMPI PUSH1 0x2 DUP2 SUB PUSH2 0x35E5 JUMPI POP SWAP1 SWAP2 DUP2 PUSH2 0x35AC JUMPI POP SWAP1 POP PUSH1 0xC DUP6 MOD PUSH2 0x35A5 JUMPI PUSH1 0x1 DUP3 ADD DUP1 DUP4 GT PUSH2 0x240B JUMPI SWAP1 JUMPDEST PUSH1 0x1 DUP7 ADD DUP1 DUP8 GT PUSH2 0x240B JUMPI PUSH1 0xC SWAP1 MOD SWAP1 DUP2 ISZERO PUSH2 0x359C JUMPI JUMPDEST PUSH2 0x352A PUSH2 0x3524 DUP8 DUP5 DUP7 PUSH2 0x426C JUMP JUMPDEST DUP10 PUSH2 0x3235 JUMP JUMPDEST PUSH1 0x0 NOT DUP6 ADD DUP6 DUP2 GT PUSH2 0x240B JUMPI DUP2 EQ PUSH2 0x3587 JUMPI JUMPDEST DUP10 SLOAD SWAP1 PUSH9 0x10000000000000000 DUP3 LT ISZERO PUSH2 0x2095 JUMPI PUSH1 0x1 DUP3 ADD DUP1 DUP13 SSTORE DUP3 LT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x1 SWAP2 DUP12 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 DUP2 PUSH1 0x5 SHR ADD SWAP1 PUSH1 0xFF PUSH1 0xF8 DUP4 SLOAD SWAP3 PUSH1 0x3 SHL AND SHL NOT AND SWAP1 SSTORE ADD PUSH2 0x3480 JUMP JUMPDEST PUSH2 0x3592 DUP7 DUP4 DUP6 PUSH2 0x426C JUMP JUMPDEST PUSH1 0xC DUP13 ADD SSTORE PUSH2 0x353D JUMP JUMPDEST PUSH1 0xC SWAP2 POP PUSH2 0x3516 JUMP JUMPDEST DUP2 SWAP1 PUSH2 0x34FF JUMP JUMPDEST PUSH1 0xC DUP4 MOD PUSH2 0x35DF JUMPI PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x240B JUMPI SWAP2 JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x240B JUMPI PUSH1 0xC SWAP1 MOD SWAP1 DUP2 PUSH2 0x3516 JUMPI PUSH1 0xC SWAP2 POP PUSH2 0x3516 JUMP JUMPDEST SWAP2 PUSH2 0x35C1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 SUB PUSH2 0x3670 JUMPI POP POP SWAP1 DUP2 ISZERO PUSH1 0x0 EQ PUSH2 0x3636 JUMPI POP SWAP1 POP PUSH1 0xA DUP6 LT PUSH2 0x362F JUMPI PUSH1 0x1 DUP3 ADD DUP1 DUP4 GT PUSH2 0x240B JUMPI SWAP1 JUMPDEST PUSH1 0x3 DUP7 ADD DUP1 DUP8 GT PUSH2 0x240B JUMPI PUSH1 0xC SWAP1 MOD SWAP1 DUP2 ISZERO PUSH2 0x359C JUMPI JUMPDEST PUSH2 0x3516 JUMP JUMPDEST DUP2 SWAP1 PUSH2 0x3613 JUMP JUMPDEST PUSH1 0xA DUP2 LT ISZERO PUSH2 0x365E JUMPI JUMPDEST PUSH1 0x3 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x240B JUMPI PUSH1 0xC SWAP1 MOD SWAP1 DUP2 PUSH2 0x362A JUMPI PUSH1 0xC SWAP2 POP PUSH2 0x3516 JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x240B JUMPI SWAP2 PUSH2 0x3640 JUMP JUMPDEST POP PUSH2 0x3516 JUMPI SWAP2 DUP3 PUSH2 0x3686 JUMPI POP POP DUP2 SWAP1 DUP6 SWAP1 PUSH2 0x3516 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x240B JUMPI SWAP2 PUSH2 0x3516 JUMP JUMPDEST DUP10 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH2 0x36B0 SWAP2 PUSH1 0x1F ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH2 0x31AE JUMP JUMPDEST CODESIZE PUSH2 0x347D JUMP JUMPDEST PUSH1 0x1 EQ ISZERO SWAP1 POP PUSH2 0x36CE JUMPI PUSH1 0x3 PUSH1 0xD DUP7 ADD SLOAD DIV SWAP4 PUSH2 0x345B JUMP JUMPDEST PUSH1 0xD DUP6 ADD SLOAD SWAP4 PUSH2 0x345B JUMP JUMPDEST PUSH1 0x24 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH32 0xDECAAE0200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x20 DUP3 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x373B JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 SLOAD DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x1 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x372E JUMP JUMPDEST PUSH2 0x375A DUP2 PUSH2 0x2669 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0xFF PUSH1 0x1B DUP5 ADD SLOAD PUSH1 0x20 SHR AND ISZERO ISZERO EQ PUSH2 0x36ED JUMPI PUSH1 0x0 PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0xFF PUSH1 0x25 DUP6 ADD SLOAD AND PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x3EEC JUMPI DUP1 PUSH2 0x4166 JUMPI POP PUSH1 0xC PUSH1 0xD DUP6 ADD SLOAD DIV SWAP2 JUMPDEST PUSH2 0x37A3 PUSH1 0x1C DUP7 ADD PUSH2 0x31C5 JUMP JUMPDEST PUSH2 0x37AF PUSH1 0x1E DUP7 ADD PUSH2 0x31C5 JUMP JUMPDEST PUSH2 0x37BB PUSH1 0x1F DUP7 ADD PUSH2 0x31C5 JUMP JUMPDEST PUSH2 0x37C7 PUSH1 0x20 DUP7 ADD PUSH2 0x31C5 JUMP JUMPDEST PUSH2 0x37D3 PUSH1 0x1F DUP7 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x37E4 PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x20 DUP8 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x37F0 PUSH1 0x1C DUP7 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x37FC PUSH1 0x1E DUP7 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x5 DUP6 ADD SLOAD PUSH1 0x16 DUP7 ADD SSTORE DUP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x3923 JUMPI POP POP POP POP PUSH2 0x38F5 PUSH2 0x38EE SWAP2 PUSH32 0x2F3E3B3AAADF1F165FA7D634278FA8EE54A0548DBF8FC62A1D301DA8F6AA6298 PUSH1 0x40 PUSH1 0x8 DUP7 ADD SLOAD DUP2 MLOAD SWAP1 DUP5 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 PUSH32 0x1CD0EC0194CD0B5111BF7154D1801AB3549A822FCFF5AC188BCAA7F310AA11DE PUSH1 0x1D DUP6 ADD SWAP2 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0xC0 PUSH1 0x20 DUP3 ADD MSTORE DUP1 PUSH2 0x38DF PUSH2 0x38CE PUSH2 0x38BD PUSH2 0x38AC PUSH2 0x389B PUSH1 0xC0 DUP7 ADD DUP10 PUSH2 0x3717 JUMP JUMPDEST DUP6 DUP2 SUB PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x20 DUP13 ADD PUSH2 0x3717 JUMP JUMPDEST DUP5 DUP2 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x1F DUP12 ADD PUSH2 0x3717 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0x1C DUP11 ADD PUSH2 0x3717 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x1E DUP10 ADD PUSH2 0x3717 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH2 0x3717 JUMP JUMPDEST SUB DUP3 PUSH2 0x2072 JUMP JUMPDEST SWAP2 PUSH1 0x1E PUSH2 0x3920 PUSH1 0x40 MLOAD PUSH2 0x390F DUP2 PUSH2 0x38EE DUP2 PUSH1 0x1C DUP10 ADD PUSH2 0x3717 JUMP JUMPDEST SWAP4 PUSH2 0x38EE PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 ADD PUSH2 0x3717 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x25 DUP7 ADD SLOAD SWAP2 PUSH1 0x6 PUSH1 0xFF DUP5 PUSH1 0x10 SHR AND LT ISZERO SWAP2 DUP3 PUSH2 0x2488 JUMPI PUSH1 0xFF DUP5 PUSH1 0x10 SHR AND ISZERO PUSH1 0x0 EQ PUSH2 0x3FED JUMPI POP PUSH1 0x0 SWAP3 JUMPDEST PUSH2 0x395C DUP6 PUSH1 0x8 DUP11 ADD SLOAD PUSH2 0x4F32 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 DUP3 MUL SWAP2 DUP1 DUP4 DIV PUSH8 0xDE0B6B3A7640000 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x240B JUMPI DUP2 PUSH1 0x9 DUP11 ADD SLOAD PUSH8 0xDE0B6B3A7640000 SUB PUSH8 0xDE0B6B3A7640000 DUP2 GT PUSH2 0x240B JUMPI PUSH2 0x39A6 SWAP2 PUSH2 0x4F32 JUMP JUMPDEST SWAP4 PUSH2 0x2488 JUMPI PUSH1 0xFF DUP2 PUSH1 0x10 SHR AND ISZERO PUSH1 0x0 EQ PUSH2 0x3A41 JUMPI POP DUP6 PUSH1 0x0 NOT DUP2 ADD GT PUSH2 0x240B JUMPI PUSH1 0x1 SWAP3 PUSH2 0x3A00 PUSH2 0x3A17 SWAP3 PUSH1 0x0 NOT DUP10 ADD DUP6 LT PUSH1 0x0 EQ PUSH2 0x3A23 JUMPI PUSH2 0x39EA PUSH1 0x1F DUP13 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x39F7 DUP9 PUSH1 0x20 DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH1 0x1C DUP12 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x3A0D DUP2 PUSH1 0x1E DUP12 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH1 0x16 DUP10 ADD SLOAD PUSH2 0x242E JUMP JUMPDEST PUSH1 0x16 DUP9 ADD SSTORE ADD SWAP1 PUSH2 0x3808 JUMP JUMPDEST PUSH2 0x3A2F PUSH1 0x20 DUP13 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x3A3C DUP9 PUSH1 0x1F DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x39F7 JUMP JUMPDEST PUSH1 0x0 SWAP6 SWAP2 SWAP3 SWAP6 PUSH1 0x2 PUSH1 0xFF DUP4 PUSH1 0x10 SHR AND EQ PUSH1 0x0 EQ PUSH2 0x3AF2 JUMPI POP POP DUP5 PUSH2 0x3AA8 JUMPI PUSH1 0x1 SWAP3 PUSH2 0x3A00 PUSH1 0x20 SWAP7 SWAP4 PUSH2 0x3A3C DUP5 PUSH2 0x3A9F DUP14 PUSH2 0x3A96 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3A8E PUSH2 0x3A17 SWAP11 PUSH1 0xA DUP6 ADD SLOAD PUSH2 0x4F32 JUMP JUMPDEST DIV DUP1 SWAP5 PUSH2 0x2421 JUMP JUMPDEST SWAP12 DUP13 SWAP2 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH1 0x1F DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST SWAP4 SWAP1 DUP6 PUSH1 0x0 NOT DUP2 ADD GT PUSH2 0x240B JUMPI PUSH1 0x1 SWAP3 PUSH2 0x3A00 PUSH2 0x3A17 SWAP3 PUSH1 0x0 NOT DUP10 ADD DUP6 EQ PUSH1 0x0 EQ PUSH2 0x3AD9 JUMPI PUSH2 0x3A2F PUSH1 0x20 DUP13 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x3AE6 DUP9 PUSH1 0x20 DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x3A3C PUSH1 0x1F DUP13 ADD PUSH2 0x3203 JUMP JUMPDEST SWAP6 SWAP4 SWAP3 SWAP6 POP PUSH1 0x1 PUSH1 0xFF DUP3 PUSH1 0x10 SHR AND EQ PUSH1 0x0 EQ PUSH2 0x3B88 JUMPI POP DUP6 PUSH1 0x0 NOT DUP2 ADD GT PUSH2 0x240B JUMPI DUP8 PUSH1 0x0 NOT DUP8 ADD DUP5 LT ISZERO PUSH2 0x3B51 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x3A00 PUSH2 0x3B36 DUP7 PUSH2 0x3A17 SWAP5 PUSH2 0x2421 JUMP JUMPDEST SWAP7 PUSH2 0x3B44 DUP9 PUSH1 0x20 DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x3A3C DUP8 PUSH1 0x1F DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST SWAP2 PUSH2 0x3A00 PUSH2 0x3A17 SWAP3 SWAP7 PUSH2 0x3A3C PUSH2 0x3B78 DUP8 PUSH1 0x20 DUP9 PUSH2 0x3B72 DUP3 PUSH1 0x1 SWAP13 SWAP12 ADD PUSH2 0x3203 JUMP JUMPDEST ADD PUSH2 0x31EB JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH1 0x1F DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0xFF DUP4 PUSH1 0x10 SHR AND EQ PUSH1 0x0 EQ PUSH2 0x3CB1 JUMPI POP POP PUSH1 0xFF PUSH1 0x25 DUP10 ADD SLOAD AND PUSH1 0x3 DUP2 LT ISZERO SWAP1 DUP2 PUSH2 0x2488 JUMPI DUP1 ISZERO SWAP2 DUP3 PUSH2 0x3C9E JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3C78 JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3C53 JUMPI JUMPDEST POP POP ISZERO PUSH2 0x3C3B JUMPI DUP6 PUSH1 0x0 NOT DUP2 ADD GT PUSH2 0x240B JUMPI DUP8 PUSH1 0x0 NOT DUP8 ADD DUP5 LT ISZERO PUSH2 0x3C16 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x3A00 PUSH2 0x3BFB DUP7 PUSH2 0x3A17 SWAP5 PUSH2 0x2421 JUMP JUMPDEST SWAP7 PUSH2 0x3C09 DUP8 PUSH1 0x1F DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x3A3C DUP9 PUSH1 0x20 DUP14 ADD PUSH2 0x3235 JUMP JUMPDEST SWAP5 PUSH2 0x3A17 SWAP2 POP SWAP2 PUSH2 0x3A00 DUP5 SWAP4 PUSH2 0x3A3C PUSH2 0x3B78 PUSH1 0x1 SWAP8 PUSH1 0x20 PUSH1 0x0 SWAP12 PUSH2 0x3B72 DUP3 DUP3 ADD PUSH2 0x3203 JUMP JUMPDEST SWAP4 PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x3A00 PUSH2 0x3A17 SWAP3 PUSH2 0x3C09 PUSH1 0x1F DUP13 ADD PUSH2 0x3203 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH2 0x2488 JUMPI PUSH1 0x2 EQ DUP1 PUSH2 0x3C6A JUMPI JUMPDEST CODESIZE DUP1 PUSH2 0x3BC7 JUMP JUMPDEST POP PUSH1 0xE DUP9 ADD SLOAD DUP4 LT ISZERO PUSH2 0x3C63 JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH1 0x1 DUP2 EQ DUP1 PUSH2 0x3C8D JUMPI JUMPDEST SWAP2 PUSH2 0x3BC0 JUMP JUMPDEST POP PUSH1 0x3 PUSH1 0xE DUP12 ADD SLOAD DIV DUP6 LT ISZERO PUSH2 0x3C87 JUMP JUMPDEST SWAP2 POP PUSH1 0xC PUSH1 0xE DUP12 ADD SLOAD DIV DUP6 LT ISZERO SWAP2 PUSH2 0x3BB9 JUMP JUMPDEST POP PUSH1 0x4 PUSH1 0xFF DUP3 PUSH1 0x10 SHR AND EQ PUSH1 0x0 EQ PUSH2 0x3D9B JUMPI POP PUSH1 0xFF PUSH1 0x25 DUP10 ADD SLOAD AND PUSH1 0x3 DUP2 LT ISZERO SWAP1 DUP2 PUSH2 0x2488 JUMPI DUP1 ISZERO SWAP2 DUP3 PUSH2 0x3D88 JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3D62 JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3D3D JUMPI JUMPDEST POP POP ISZERO PUSH2 0x3D22 JUMPI DUP6 PUSH1 0x0 NOT DUP2 ADD GT PUSH2 0x240B JUMPI DUP8 PUSH1 0x0 NOT DUP8 ADD DUP5 LT ISZERO PUSH2 0x3C16 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x3A00 PUSH2 0x3BFB DUP7 PUSH2 0x3A17 SWAP5 PUSH2 0x2421 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x1 SWAP1 PUSH2 0x3A17 PUSH1 0x0 PUSH2 0x3A00 DUP2 PUSH2 0x3C09 PUSH1 0x1F DUP13 ADD PUSH2 0x3203 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH2 0x2488 JUMPI PUSH1 0x2 EQ DUP1 PUSH2 0x3D54 JUMPI JUMPDEST CODESIZE DUP1 PUSH2 0x3CEE JUMP JUMPDEST POP PUSH1 0xF DUP9 ADD SLOAD DUP4 LT ISZERO PUSH2 0x3D4D JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP PUSH1 0x1 DUP2 EQ DUP1 PUSH2 0x3D77 JUMPI JUMPDEST SWAP2 PUSH2 0x3CE7 JUMP JUMPDEST POP PUSH1 0x3 PUSH1 0xF DUP12 ADD SLOAD DIV DUP6 LT ISZERO PUSH2 0x3D71 JUMP JUMPDEST SWAP2 POP PUSH1 0xC PUSH1 0xF DUP12 ADD SLOAD DIV DUP6 LT ISZERO SWAP2 PUSH2 0x3CE0 JUMP JUMPDEST PUSH1 0x0 SWAP6 SWAP2 SWAP6 SWAP1 PUSH1 0x5 PUSH1 0xFF DUP3 PUSH1 0x10 SHR AND EQ PUSH2 0x3DC2 JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP3 SWAP2 PUSH2 0x3A00 PUSH2 0x3A17 SWAP3 PUSH2 0x39F7 JUMP JUMPDEST PUSH1 0x3 PUSH1 0xFF DUP3 SWAP9 SWAP4 SWAP9 AND LT ISZERO SWAP1 DUP2 PUSH2 0x3FD9 JUMPI PUSH1 0xFF DUP2 AND ISZERO SWAP2 DUP3 PUSH2 0x3FC6 JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3F9E JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3F62 JUMPI JUMPDEST POP POP ISZERO PUSH2 0x3F48 JUMPI DUP7 PUSH1 0x0 NOT DUP2 ADD GT PUSH2 0x3F34 JUMPI DUP5 PUSH1 0x0 NOT DUP9 ADD DUP6 LT ISZERO PUSH2 0x3F00 JUMPI PUSH2 0x3E15 SWAP2 PUSH2 0x2421 JUMP JUMPDEST SWAP5 PUSH2 0x3E23 DUP6 PUSH1 0x1F DUP12 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x3E30 DUP7 PUSH1 0x20 DUP12 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x25 DUP11 ADD SLOAD AND PUSH1 0x3 DUP2 LT ISZERO SWAP1 DUP2 PUSH2 0x3EEC JUMPI DUP1 ISZERO SWAP2 DUP3 PUSH2 0x3EDA JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3EB6 JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x3E83 JUMPI JUMPDEST POP POP SWAP2 PUSH1 0x1 SWAP5 SWAP4 SWAP2 PUSH2 0x3A17 SWAP4 PUSH2 0x3E76 JUMPI JUMPDEST POP SWAP2 DUP2 SWAP4 SWAP5 POP PUSH2 0x3DB0 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP PUSH2 0x3A00 PUSH2 0x3E6B JUMP JUMPDEST SWAP1 SWAP2 POP PUSH2 0x36D9 JUMPI SWAP2 PUSH1 0x1 SWAP5 SWAP4 SWAP2 PUSH1 0x2 PUSH2 0x3A17 SWAP5 EQ DUP1 PUSH2 0x3EA9 JUMPI JUMPDEST SWAP2 SWAP4 DUP2 SWAP4 SWAP6 SWAP7 POP PUSH2 0x3E5A JUMP JUMPDEST POP PUSH1 0xF DUP12 ADD SLOAD DUP6 LT PUSH2 0x3E9D JUMP JUMPDEST POP DUP3 SWAP2 POP PUSH1 0x1 DUP2 EQ DUP1 PUSH2 0x3ECA JUMPI JUMPDEST SWAP2 PUSH2 0x3E53 JUMP JUMPDEST POP PUSH1 0x3 PUSH1 0xF DUP13 ADD SLOAD DIV DUP7 LT PUSH2 0x3EC4 JUMP JUMPDEST SWAP2 POP PUSH1 0xC PUSH1 0xF DUP13 ADD SLOAD DIV DUP7 LT SWAP2 PUSH2 0x3E4C JUMP JUMPDEST PUSH1 0x24 DUP4 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE REVERT JUMPDEST POP POP DUP5 PUSH2 0x3F0F PUSH1 0x20 DUP11 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x3F2F PUSH2 0x3F1F DUP6 PUSH1 0x20 DUP13 ADD PUSH2 0x31EB JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH1 0x1F DUP12 ADD PUSH2 0x3235 JUMP JUMPDEST PUSH2 0x3E30 JUMP JUMPDEST PUSH1 0x24 DUP7 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST SWAP5 PUSH2 0x3F55 PUSH1 0x1F DUP11 ADD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x3F2F DUP7 PUSH1 0x20 DUP12 ADD PUSH2 0x3235 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH2 0x3F8A JUMPI PUSH1 0xFF AND PUSH1 0x2 EQ DUP1 PUSH2 0x3F7C JUMPI JUMPDEST CODESIZE DUP1 PUSH2 0x3DED JUMP JUMPDEST POP PUSH1 0xE DUP10 ADD SLOAD DUP5 LT ISZERO PUSH2 0x3F75 JUMP JUMPDEST PUSH1 0x24 DUP8 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE REVERT JUMPDEST POP DUP8 SWAP2 POP PUSH1 0xFF DUP2 AND PUSH1 0x1 EQ DUP1 PUSH2 0x3FB5 JUMPI JUMPDEST SWAP2 PUSH2 0x3DE6 JUMP JUMPDEST POP PUSH1 0x3 PUSH1 0xE DUP13 ADD SLOAD DIV DUP7 LT ISZERO PUSH2 0x3FAF JUMP JUMPDEST SWAP2 POP PUSH1 0xC PUSH1 0xE DUP13 ADD SLOAD DIV DUP7 LT ISZERO SWAP2 PUSH2 0x3DDF JUMP JUMPDEST PUSH1 0x24 DUP9 PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH1 0x0 SWAP3 POP PUSH1 0x10 DUP5 SWAP1 SHR PUSH1 0xFF AND PUSH1 0x1 SUB PUSH2 0x401F JUMPI POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x4018 DUP7 PUSH1 0x5 DUP11 ADD SLOAD PUSH2 0x445A JUMP JUMPDEST DIV SWAP3 PUSH2 0x394E JUMP JUMPDEST PUSH1 0x3 PUSH1 0xFF DUP6 PUSH1 0x10 SHR AND EQ DUP1 ISZERO PUSH2 0x4151 JUMPI JUMPDEST ISZERO PUSH2 0x40C0 JUMPI POP PUSH1 0x3 PUSH1 0xFF DUP5 AND LT ISZERO PUSH2 0x2488 JUMPI PUSH1 0xFF DUP4 AND PUSH2 0x4072 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x4018 PUSH1 0x5 DUP10 ADD SLOAD PUSH2 0x406C PUSH1 0xC PUSH1 0xE DUP13 ADD SLOAD DIV DUP10 PUSH2 0x2421 JUMP JUMPDEST SWAP1 PUSH2 0x445A JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH1 0x0 PUSH1 0xFF DUP6 AND PUSH1 0x1 SUB PUSH2 0x40AA JUMPI PUSH2 0x40A1 PUSH1 0x5 DUP11 ADD SLOAD PUSH2 0x406C PUSH1 0x3 PUSH1 0xE DUP14 ADD SLOAD DIV DUP11 PUSH2 0x2421 JUMP JUMPDEST SWAP1 POP DIV SWAP3 PUSH2 0x394E JUMP JUMPDEST PUSH2 0x40A1 PUSH1 0x5 DUP11 ADD SLOAD PUSH2 0x406C PUSH1 0xE DUP13 ADD SLOAD DUP11 PUSH2 0x2421 JUMP JUMPDEST SWAP3 DUP3 PUSH2 0x2488 JUMPI PUSH1 0x4 PUSH1 0xFF DUP3 PUSH1 0x10 SHR AND SUB PUSH2 0x394E JUMPI SWAP3 POP PUSH1 0x3 PUSH1 0xFF DUP5 AND LT ISZERO PUSH2 0x2488 JUMPI PUSH1 0xFF DUP4 AND PUSH2 0x410C JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x4018 PUSH1 0x5 DUP10 ADD SLOAD PUSH2 0x406C PUSH1 0xC PUSH1 0xF DUP13 ADD SLOAD DIV DUP10 PUSH2 0x2421 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH1 0x0 PUSH1 0xFF DUP6 AND PUSH1 0x1 SUB PUSH2 0x413B JUMPI PUSH2 0x40A1 PUSH1 0x5 DUP11 ADD SLOAD PUSH2 0x406C PUSH1 0x3 PUSH1 0xF DUP14 ADD SLOAD DIV DUP11 PUSH2 0x2421 JUMP JUMPDEST PUSH2 0x40A1 PUSH1 0x5 DUP11 ADD SLOAD PUSH2 0x406C PUSH1 0xF DUP13 ADD SLOAD DUP11 PUSH2 0x2421 JUMP JUMPDEST POP SWAP2 POP PUSH1 0x0 SWAP2 PUSH1 0x5 PUSH1 0xFF DUP6 PUSH1 0x10 SHR AND EQ PUSH2 0x4030 JUMP JUMPDEST PUSH1 0x1 SUB PUSH2 0x417B JUMPI PUSH1 0x3 PUSH1 0xD DUP6 ADD SLOAD DIV SWAP2 PUSH2 0x3797 JUMP JUMPDEST PUSH1 0xD DUP5 ADD SLOAD SWAP2 PUSH2 0x3797 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO PUSH2 0x41A5 JUMPI POP POP PUSH2 0x41A0 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP3 EQ PUSH2 0x425D JUMPI DUP3 PUSH2 0x41C8 JUMPI POP POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 EQ PUSH2 0x4257 JUMPI PUSH8 0xDE0B6B3A7640000 DUP3 GT ISZERO PUSH2 0x4202 JUMPI POP PUSH2 0x3920 SWAP2 PUSH2 0x41F8 PUSH2 0x41FD SWAP3 PUSH2 0x4536 JUMP JUMPDEST PUSH2 0x4F32 JUMP JUMPDEST PUSH2 0x4657 JUMP JUMPDEST PUSH2 0x4241 JUMPI PUSH2 0x4227 SWAP2 PUSH2 0x41F8 PUSH2 0x41FD SWAP3 PUSH15 0xC097CE7BC90715B34B9F1000000000 DIV PUSH2 0x4536 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4241 JUMPI PUSH15 0xC097CE7BC90715B34B9F1000000000 DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST POP POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x7B2 DUP3 LT PUSH2 0x43FC JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2 DUP2 ADD DUP2 DUP2 SGT PUSH1 0x1 AND PUSH2 0x240B JUMPI PUSH1 0xC SWAP1 SDIV SWAP2 PUSH2 0x12C0 DUP2 ADD SWAP1 PUSH1 0x0 PUSH2 0x12C0 DUP4 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI DUP3 PUSH2 0x42CE SWAP2 PUSH2 0x4FE3 JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE DUP3 ADD SWAP2 DUP3 SGT PUSH1 0x1 AND PUSH2 0x240B JUMPI PUSH1 0xC DUP2 MUL SWAP1 DUP1 DUP3 SDIV PUSH1 0xC EQ SWAP1 ISZERO OR ISZERO PUSH2 0x240B JUMPI PUSH2 0x4318 SWAP2 PUSH2 0x5012 JUMP JUMPDEST SWAP2 PUSH2 0x4322 DUP3 PUSH2 0x4FFF JUMP JUMPDEST SWAP2 DUP4 PUSH2 0x16F MUL SWAP4 PUSH2 0x16F DUP6 SDIV SUB PUSH2 0x240B JUMPI PUSH1 0x64 DUP2 ADD SWAP1 PUSH1 0x0 PUSH1 0x64 DUP4 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI PUSH1 0x64 SWAP1 SDIV SWAP2 DUP3 PUSH1 0x3 MUL SWAP3 PUSH1 0x3 DUP5 SDIV SUB PUSH2 0x240B JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82B5 DUP3 ADD SWAP2 DUP3 SGT PUSH1 0x1 AND PUSH2 0x240B JUMPI PUSH2 0x43B5 SWAP4 PUSH1 0xC PUSH2 0x43A5 PUSH1 0x4 SWAP5 DUP6 PUSH2 0x43AD SWAP6 SDIV SWAP1 PUSH2 0x4FE3 JUMP JUMPDEST SWAP2 SDIV SWAP1 PUSH2 0x4FE3 JUMP JUMPDEST SWAP2 SDIV SWAP1 PUSH2 0x5012 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDAC274 DUP2 ADD SWAP1 DUP2 SGT PUSH1 0x1 AND PUSH2 0x240B JUMPI PUSH3 0x15180 DUP2 MUL SWAP1 DUP1 DUP3 DIV PUSH3 0x15180 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x240B JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x596561722063616E6E6F74206265206561726C696572207468616E2031393730 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 NOT PUSH8 0xDE0B6B3A7640000 DUP3 MULMOD SWAP2 PUSH8 0xDE0B6B3A7640000 DUP3 MUL SWAP2 DUP3 DUP1 DUP6 LT SWAP5 SUB SWAP4 DUP1 DUP6 SUB SWAP5 EQ PUSH2 0x4529 JUMPI DUP2 DUP5 LT ISZERO PUSH2 0x44ED JUMPI PUSH8 0xDE0B6B3A7640000 DUP3 SWAP2 MULMOD PUSH1 0x1 DUP3 NOT ADD DUP3 AND DUP1 SWAP3 DIV PUSH1 0x2 DUP2 PUSH1 0x3 MUL XOR DUP1 DUP3 MUL PUSH1 0x2 SUB MUL DUP1 DUP3 MUL PUSH1 0x2 SUB MUL DUP1 DUP3 MUL PUSH1 0x2 SUB MUL DUP1 DUP3 MUL PUSH1 0x2 SUB MUL DUP1 DUP3 MUL PUSH1 0x2 SUB MUL DUP1 SWAP2 MUL PUSH1 0x2 SUB MUL SWAP4 PUSH1 0x1 DUP4 DUP1 PUSH1 0x0 SUB DIV ADD SWAP1 DUP5 DUP4 GT SWAP1 SUB MUL SWAP3 SUB DIV OR MUL SWAP1 JUMP JUMPDEST PUSH32 0x63A0577800000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 POP DUP2 ISZERO PUSH2 0x4241 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 LT PUSH2 0x462A JUMPI PUSH8 0xDE0B6B3A7640000 DUP2 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x7 SHL SWAP1 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR SWAP1 PUSH1 0xFF DUP3 GT PUSH1 0x3 SHL SWAP2 DUP3 SHR SWAP3 PUSH1 0xF DUP5 GT PUSH1 0x2 SHL SWAP4 DUP5 SHR SWAP5 PUSH1 0x1 PUSH1 0x3 DUP8 GT DUP2 SHL SWAP7 DUP8 SHR GT SWAP7 OR OR OR OR OR OR OR SWAP1 PUSH8 0xDE0B6B3A7640000 DUP3 MUL SWAP2 SHR PUSH8 0xDE0B6B3A7640000 DUP2 EQ PUSH2 0x4626 JUMPI PUSH8 0x6F05B59D3B20000 SWAP1 DUP2 JUMPDEST PUSH2 0x45EF JUMPI POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH8 0xDE0B6B3A7640000 SWAP2 MUL DIV SWAP1 PUSH8 0x1BC16D674EC80000 DUP3 LT ISZERO PUSH2 0x4618 JUMPI JUMPDEST PUSH1 0x1 SHR SWAP1 DUP2 PUSH2 0x45E6 JUMP JUMPDEST DUP1 SWAP2 SWAP3 ADD SWAP2 PUSH1 0x1 SHR SWAP1 PUSH2 0x460E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH32 0x36D32EF000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH9 0xA688906BD8AFFFFFF DUP2 GT PUSH2 0x4F05 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP1 PUSH1 0x40 SHL DIV PUSH24 0x800000000000000000000000000000000000000000000000 PUSH8 0xFF00000000000000 DUP3 AND PUSH2 0x4DD0 JUMPI JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP1 PUSH7 0xFF000000000000 DUP4 AND PUSH2 0x4CC0 JUMPI JUMPDEST PUSH6 0xFF0000000000 DUP4 AND PUSH2 0x4BB8 JUMPI JUMPDEST PUSH5 0xFF00000000 DUP4 AND PUSH2 0x4AB8 JUMPI JUMPDEST PUSH4 0xFF000000 DUP4 AND PUSH2 0x49C0 JUMPI JUMPDEST PUSH3 0xFF0000 DUP4 AND PUSH2 0x48D0 JUMPI JUMPDEST PUSH2 0xFF00 DUP4 AND PUSH2 0x47E8 JUMPI JUMPDEST PUSH1 0xFF DUP4 AND PUSH2 0x4708 JUMPI JUMPDEST MUL SWAP1 PUSH1 0x40 SHR PUSH1 0xBF SUB SHR SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP4 AND PUSH2 0x47D5 JUMPI JUMPDEST PUSH1 0x40 DUP4 AND PUSH2 0x47C2 JUMPI JUMPDEST PUSH1 0x20 DUP4 AND PUSH2 0x47AF JUMPI JUMPDEST PUSH1 0x10 DUP4 AND PUSH2 0x479C JUMPI JUMPDEST PUSH1 0x8 DUP4 AND PUSH2 0x4789 JUMPI JUMPDEST PUSH1 0x4 DUP4 AND PUSH2 0x4776 JUMPI JUMPDEST PUSH1 0x2 DUP4 AND PUSH2 0x4763 JUMPI JUMPDEST PUSH1 0x1 DUP4 AND ISZERO PUSH2 0x46FC JUMPI PUSH9 0x10000000000000001 MUL PUSH1 0x40 SHR PUSH2 0x46FC JUMP JUMPDEST PUSH9 0x10000000000000001 MUL PUSH1 0x40 SHR PUSH2 0x4747 JUMP JUMPDEST PUSH9 0x10000000000000003 MUL PUSH1 0x40 SHR PUSH2 0x473E JUMP JUMPDEST PUSH9 0x10000000000000006 MUL PUSH1 0x40 SHR PUSH2 0x4735 JUMP JUMPDEST PUSH9 0x1000000000000000B MUL PUSH1 0x40 SHR PUSH2 0x472C JUMP JUMPDEST PUSH9 0x10000000000000016 MUL PUSH1 0x40 SHR PUSH2 0x4723 JUMP JUMPDEST PUSH9 0x1000000000000002C MUL PUSH1 0x40 SHR PUSH2 0x471A JUMP JUMPDEST PUSH9 0x10000000000000059 MUL PUSH1 0x40 SHR PUSH2 0x4711 JUMP JUMPDEST PUSH2 0x8000 DUP4 AND PUSH2 0x48BD JUMPI JUMPDEST PUSH2 0x4000 DUP4 AND PUSH2 0x48AA JUMPI JUMPDEST PUSH2 0x2000 DUP4 AND PUSH2 0x4897 JUMPI JUMPDEST PUSH2 0x1000 DUP4 AND PUSH2 0x4884 JUMPI JUMPDEST PUSH2 0x800 DUP4 AND PUSH2 0x4871 JUMPI JUMPDEST PUSH2 0x400 DUP4 AND PUSH2 0x485E JUMPI JUMPDEST PUSH2 0x200 DUP4 AND PUSH2 0x484B JUMPI JUMPDEST PUSH2 0x100 DUP4 AND ISZERO PUSH2 0x46F3 JUMPI PUSH9 0x100000000000000B1 MUL PUSH1 0x40 SHR PUSH2 0x46F3 JUMP JUMPDEST PUSH9 0x10000000000000163 MUL PUSH1 0x40 SHR PUSH2 0x482E JUMP JUMPDEST PUSH9 0x100000000000002C6 MUL PUSH1 0x40 SHR PUSH2 0x4824 JUMP JUMPDEST PUSH9 0x1000000000000058C MUL PUSH1 0x40 SHR PUSH2 0x481A JUMP JUMPDEST PUSH9 0x10000000000000B17 MUL PUSH1 0x40 SHR PUSH2 0x4810 JUMP JUMPDEST PUSH9 0x1000000000000162E MUL PUSH1 0x40 SHR PUSH2 0x4806 JUMP JUMPDEST PUSH9 0x10000000000002C5D MUL PUSH1 0x40 SHR PUSH2 0x47FC JUMP JUMPDEST PUSH9 0x100000000000058B9 MUL PUSH1 0x40 SHR PUSH2 0x47F2 JUMP JUMPDEST PUSH3 0x800000 DUP4 AND PUSH2 0x49AD JUMPI JUMPDEST PUSH3 0x400000 DUP4 AND PUSH2 0x499A JUMPI JUMPDEST PUSH3 0x200000 DUP4 AND PUSH2 0x4987 JUMPI JUMPDEST PUSH3 0x100000 DUP4 AND PUSH2 0x4974 JUMPI JUMPDEST PUSH3 0x80000 DUP4 AND PUSH2 0x4961 JUMPI JUMPDEST PUSH3 0x40000 DUP4 AND PUSH2 0x494E JUMPI JUMPDEST PUSH3 0x20000 DUP4 AND PUSH2 0x493B JUMPI JUMPDEST PUSH3 0x10000 DUP4 AND ISZERO PUSH2 0x46E9 JUMPI PUSH9 0x1000000000000B172 MUL PUSH1 0x40 SHR PUSH2 0x46E9 JUMP JUMPDEST PUSH9 0x100000000000162E4 MUL PUSH1 0x40 SHR PUSH2 0x491D JUMP JUMPDEST PUSH9 0x1000000000002C5C8 MUL PUSH1 0x40 SHR PUSH2 0x4912 JUMP JUMPDEST PUSH9 0x10000000000058B91 MUL PUSH1 0x40 SHR PUSH2 0x4907 JUMP JUMPDEST PUSH9 0x100000000000B1721 MUL PUSH1 0x40 SHR PUSH2 0x48FC JUMP JUMPDEST PUSH9 0x10000000000162E43 MUL PUSH1 0x40 SHR PUSH2 0x48F1 JUMP JUMPDEST PUSH9 0x100000000002C5C86 MUL PUSH1 0x40 SHR PUSH2 0x48E6 JUMP JUMPDEST PUSH9 0x1000000000058B90C MUL PUSH1 0x40 SHR PUSH2 0x48DB JUMP JUMPDEST PUSH4 0x80000000 DUP4 AND PUSH2 0x4AA5 JUMPI JUMPDEST PUSH4 0x40000000 DUP4 AND PUSH2 0x4A92 JUMPI JUMPDEST PUSH4 0x20000000 DUP4 AND PUSH2 0x4A7F JUMPI JUMPDEST PUSH4 0x10000000 DUP4 AND PUSH2 0x4A6C JUMPI JUMPDEST PUSH4 0x8000000 DUP4 AND PUSH2 0x4A59 JUMPI JUMPDEST PUSH4 0x4000000 DUP4 AND PUSH2 0x4A46 JUMPI JUMPDEST PUSH4 0x2000000 DUP4 AND PUSH2 0x4A33 JUMPI JUMPDEST PUSH4 0x1000000 DUP4 AND ISZERO PUSH2 0x46DE JUMPI PUSH9 0x10000000000B17218 MUL PUSH1 0x40 SHR PUSH2 0x46DE JUMP JUMPDEST PUSH9 0x1000000000162E430 MUL PUSH1 0x40 SHR PUSH2 0x4A14 JUMP JUMPDEST PUSH9 0x10000000002C5C860 MUL PUSH1 0x40 SHR PUSH2 0x4A08 JUMP JUMPDEST PUSH9 0x100000000058B90C0 MUL PUSH1 0x40 SHR PUSH2 0x49FC JUMP JUMPDEST PUSH9 0x1000000000B17217F MUL PUSH1 0x40 SHR PUSH2 0x49F0 JUMP JUMPDEST PUSH9 0x100000000162E42FF MUL PUSH1 0x40 SHR PUSH2 0x49E4 JUMP JUMPDEST PUSH9 0x1000000002C5C85FE MUL PUSH1 0x40 SHR PUSH2 0x49D8 JUMP JUMPDEST PUSH9 0x10000000058B90BFC MUL PUSH1 0x40 SHR PUSH2 0x49CC JUMP JUMPDEST PUSH5 0x8000000000 DUP4 AND PUSH2 0x4BA5 JUMPI JUMPDEST PUSH5 0x4000000000 DUP4 AND PUSH2 0x4B92 JUMPI JUMPDEST PUSH5 0x2000000000 DUP4 AND PUSH2 0x4B7F JUMPI JUMPDEST PUSH5 0x1000000000 DUP4 AND PUSH2 0x4B6C JUMPI JUMPDEST PUSH5 0x800000000 DUP4 AND PUSH2 0x4B59 JUMPI JUMPDEST PUSH5 0x400000000 DUP4 AND PUSH2 0x4B46 JUMPI JUMPDEST PUSH5 0x200000000 DUP4 AND PUSH2 0x4B33 JUMPI JUMPDEST PUSH5 0x100000000 DUP4 AND ISZERO PUSH2 0x46D2 JUMPI PUSH9 0x100000000B17217F8 MUL PUSH1 0x40 SHR PUSH2 0x46D2 JUMP JUMPDEST PUSH9 0x10000000162E42FF1 MUL PUSH1 0x40 SHR PUSH2 0x4B13 JUMP JUMPDEST PUSH9 0x100000002C5C85FE3 MUL PUSH1 0x40 SHR PUSH2 0x4B06 JUMP JUMPDEST PUSH9 0x1000000058B90BFCE MUL PUSH1 0x40 SHR PUSH2 0x4AF9 JUMP JUMPDEST PUSH9 0x10000000B17217FBB MUL PUSH1 0x40 SHR PUSH2 0x4AEC JUMP JUMPDEST PUSH9 0x1000000162E42FFF0 MUL PUSH1 0x40 SHR PUSH2 0x4ADF JUMP JUMPDEST PUSH9 0x10000002C5C8601CC MUL PUSH1 0x40 SHR PUSH2 0x4AD2 JUMP JUMPDEST PUSH9 0x100000058B90C0B49 MUL PUSH1 0x40 SHR PUSH2 0x4AC5 JUMP JUMPDEST PUSH6 0x800000000000 DUP4 AND PUSH2 0x4CAD JUMPI JUMPDEST PUSH6 0x400000000000 DUP4 AND PUSH2 0x4C9A JUMPI JUMPDEST PUSH6 0x200000000000 DUP4 AND PUSH2 0x4C87 JUMPI JUMPDEST PUSH6 0x100000000000 DUP4 AND PUSH2 0x4C74 JUMPI JUMPDEST PUSH6 0x80000000000 DUP4 AND PUSH2 0x4C61 JUMPI JUMPDEST PUSH6 0x40000000000 DUP4 AND PUSH2 0x4C4E JUMPI JUMPDEST PUSH6 0x20000000000 DUP4 AND PUSH2 0x4C3B JUMPI JUMPDEST PUSH6 0x10000000000 DUP4 AND ISZERO PUSH2 0x46C5 JUMPI PUSH9 0x1000000B172183551 MUL PUSH1 0x40 SHR PUSH2 0x46C5 JUMP JUMPDEST PUSH9 0x100000162E430E5A2 MUL PUSH1 0x40 SHR PUSH2 0x4C1A JUMP JUMPDEST PUSH9 0x1000002C5C863B73F MUL PUSH1 0x40 SHR PUSH2 0x4C0C JUMP JUMPDEST PUSH9 0x10000058B90CF1E6E MUL PUSH1 0x40 SHR PUSH2 0x4BFE JUMP JUMPDEST PUSH9 0x100000B1721BCFC9A MUL PUSH1 0x40 SHR PUSH2 0x4BF0 JUMP JUMPDEST PUSH9 0x10000162E43F4F831 MUL PUSH1 0x40 SHR PUSH2 0x4BE2 JUMP JUMPDEST PUSH9 0x100002C5C89D5EC6D MUL PUSH1 0x40 SHR PUSH2 0x4BD4 JUMP JUMPDEST PUSH9 0x1000058B91B5BC9AE MUL PUSH1 0x40 SHR PUSH2 0x4BC6 JUMP JUMPDEST PUSH7 0x80000000000000 DUP4 AND PUSH2 0x4DBD JUMPI JUMPDEST PUSH7 0x40000000000000 DUP4 AND PUSH2 0x4DAA JUMPI JUMPDEST PUSH7 0x20000000000000 DUP4 AND PUSH2 0x4D97 JUMPI JUMPDEST PUSH7 0x10000000000000 DUP4 AND PUSH2 0x4D84 JUMPI JUMPDEST PUSH7 0x8000000000000 DUP4 AND PUSH2 0x4D71 JUMPI JUMPDEST PUSH7 0x4000000000000 DUP4 AND PUSH2 0x4D5E JUMPI JUMPDEST PUSH7 0x2000000000000 DUP4 AND PUSH2 0x4D4B JUMPI JUMPDEST PUSH7 0x1000000000000 DUP4 AND ISZERO PUSH2 0x46B7 JUMPI PUSH9 0x10000B17255775C04 MUL PUSH1 0x40 SHR PUSH2 0x46B7 JUMP JUMPDEST PUSH9 0x1000162E525EE0547 MUL PUSH1 0x40 SHR PUSH2 0x4D29 JUMP JUMPDEST PUSH9 0x10002C5CC37DA9492 MUL PUSH1 0x40 SHR PUSH2 0x4D1A JUMP JUMPDEST PUSH9 0x100058BA01FB9F96D MUL PUSH1 0x40 SHR PUSH2 0x4D0B JUMP JUMPDEST PUSH9 0x1000B175EFFDC76BA MUL PUSH1 0x40 SHR PUSH2 0x4CFC JUMP JUMPDEST PUSH9 0x100162F3904051FA1 MUL PUSH1 0x40 SHR PUSH2 0x4CED JUMP JUMPDEST PUSH9 0x1002C605E2E8CEC50 MUL PUSH1 0x40 SHR PUSH2 0x4CDE JUMP JUMPDEST PUSH9 0x10058C86DA1C09EA2 MUL PUSH1 0x40 SHR PUSH2 0x4CCF JUMP JUMPDEST PUSH8 0x8000000000000000 DUP3 AND PUSH2 0x4EE6 JUMPI JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP1 PUSH8 0x4000000000000000 DUP4 AND PUSH2 0x4ED3 JUMPI JUMPDEST PUSH8 0x2000000000000000 DUP4 AND PUSH2 0x4EC0 JUMPI JUMPDEST PUSH8 0x1000000000000000 DUP4 AND PUSH2 0x4EAD JUMPI JUMPDEST PUSH8 0x800000000000000 DUP4 AND PUSH2 0x4E9A JUMPI JUMPDEST PUSH8 0x400000000000000 DUP4 AND PUSH2 0x4E87 JUMPI JUMPDEST PUSH8 0x200000000000000 DUP4 AND PUSH2 0x4E74 JUMPI JUMPDEST PUSH8 0x100000000000000 DUP4 AND PUSH2 0x4E61 JUMPI JUMPDEST SWAP1 POP PUSH2 0x469E JUMP JUMPDEST PUSH9 0x100B1AFA5ABCBED61 MUL PUSH1 0x40 SHR PUSH2 0x4E5A JUMP JUMPDEST PUSH9 0x10163DA9FB33356D8 MUL PUSH1 0x40 SHR PUSH2 0x4E4A JUMP JUMPDEST PUSH9 0x102C9A3E778060EE7 MUL PUSH1 0x40 SHR PUSH2 0x4E3A JUMP JUMPDEST PUSH9 0x1059B0D31585743AE MUL PUSH1 0x40 SHR PUSH2 0x4E2A JUMP JUMPDEST PUSH9 0x10B5586CF9890F62A MUL PUSH1 0x40 SHR PUSH2 0x4E1A JUMP JUMPDEST PUSH9 0x1172B83C7D517ADCE MUL PUSH1 0x40 SHR PUSH2 0x4E0A JUMP JUMPDEST PUSH9 0x1306FE0A31B7152DF MUL PUSH1 0x40 SHR PUSH2 0x4DFA JUMP JUMPDEST POP PUSH24 0xB504F333F9DE648480000000000000000000000000000000 PUSH2 0x4DE0 JUMP JUMPDEST PUSH32 0xB3B6BA1F00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x0 NOT DUP4 DUP3 MULMOD DUP4 DUP3 MUL SWAP2 DUP3 DUP1 DUP4 LT SWAP3 SUB SWAP2 DUP1 DUP4 SUB SWAP3 EQ PUSH2 0x4FD2 JUMPI PUSH8 0xDE0B6B3A7640000 DUP3 LT ISZERO PUSH2 0x4FA0 JUMPI PUSH32 0xACCB18165BD6FE31AE1CF318DC5B51EEE0E1BA569B88CD74C1773B91FAC10669 SWAP4 SWAP5 PUSH8 0xDE0B6B3A7640000 SWAP2 MULMOD SWAP1 DUP3 DUP3 GT SWAP1 SUB PUSH1 0xEE SHL SWAP2 SUB PUSH1 0x12 SHR OR MUL SWAP1 JUMP JUMPDEST DUP5 SWAP1 PUSH32 0x5173648D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP2 POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x0 DUP4 DUP3 ADD SWAP4 DUP5 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x240B JUMPI JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x5B5 MUL SWAP2 PUSH2 0x5B5 DUP4 SDIV SUB PUSH2 0x240B JUMPI JUMP JUMPDEST DUP2 DUP2 SUB SWAP3 SWAP2 PUSH1 0x0 SGT DUP1 ISZERO DUP3 DUP6 SGT AND SWAP2 DUP5 SLT AND OR PUSH2 0x240B JUMPI JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH29 0xC483471C36AE49D908F8579DA2E11F5013B0AAC7590B7CBAE2443917B5 0xEB PUSH23 0x64736F6C634300081B0033000000000000000000000000 ",
              "sourceMap": "673:38684:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1121:88:63;673:38684:55;102:47:63;673:38684:55;;1129:10:63;:38;1121:88;:::i;:::-;35552:20:55;;;:::i;:::-;35582:26;35611:1;35582:26;;;673:38684;35626:21;;;673:38684;;;;;;35622:78;;35746:10;;;;:::i;:::-;35767:23;;;:::i;:::-;673:38684;;;;;;;;;;;35838:21;;;673:38684;;;;;;;;35919:29;35889:27;35919:29;;;673:38684;35889:27;;673:38684;;;;;;;;35958:82;;;;;673:38684;;;35958:82;;35992:4;673:38684;35958:82;;673:38684;;;;;;;;;;;;;;;;;;;-1:-1:-1;673:38684:55;;;;;;;;;;;;;;35958:82;;;;;;;;673:38684;-1:-1:-1;;673:38684:55;;;;;;;;;;;;;;;;;;;36056:60;;673:38684;;;;36056:60;;;;673:38684;;35958:82;;;;;:::i;:::-;673:38684;;35958:82;;;;673:38684;;;;35958:82;673:38684;;;;;;;;;35958:82;673:38684;;;35622:78;673:38684;35670:19;;;;;673:38684;;;;;;;;;-1:-1:-1;;673:38684:55;;;;;;;:::i;:::-;102:47:63;673:38684:55;;;;;;1129:10:63;:38;1121:88;;;;:::i;:::-;673:38684:55;775:23:63;;;673:38684:55;;1121:88:63;673:38684:55;1121:88:63;;:::i;:::-;673:38684:55;;102:47:63;673:38684:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;673:38684:55;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31326:34;673:38684;;;;:::i;:::-;31235:20;31265:34;31235:20;;;:::i;:::-;31265:34;673:38684;;;;;;;;;;31326:34;673:38684;;;;;;;;;;:::i;:::-;36278:20;;;;;:::i;:::-;36313:21;673:38684;36313:21;;;673:38684;;;;36312:22;36308:82;;673:38684;36416:41;;;673:38684;;:::i;:::-;;36515:22;36506:31;36515:22;;;673:38684;36506:31;;:::i;:::-;36580:17;673:38684;;;;36574:57;;673:38684;;;;;36574:57;;673:38684;36625:4;673:38684;;;;;;;;;;;;;;36574:57;;;;;;;;;;;673:38684;36649:31;;36791:81;36649:31;36641:84;36649:31;673:38684;36649:31;;;36641:84;:::i;:::-;673:38684;36837:21;;;673:38684;;;;;36791:81;;;;;;673:38684;36791:81;;;673:38684;36791:81;;673:38684;;;;;;;;;;;;;;;;;;;;;;36791:81;;;;;;;;;36882:42;36791:81;;;;;673:38684;36882:42;;:::i;:::-;673:38684;;;;;36934:54;;;;;673:38684;;;36934:54;;673:38684;36934:54;;;;;;;;;673:38684;36934:54;;673:38684;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36934:54;;;;;;;;;;;673:38684;37066:31;37119:56;673:38684;37066:31;;;673:38684;37066:31;:23;:31;673:38684;;;-1:-1:-1;673:38684:55;37066:23;673:38684;;;-1:-1:-1;673:38684:55;36580:17;673:38684;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;37119:56;;;673:38684;;36934:54;;;;;;;;;;:::i;:::-;673:38684;;36934:54;;;;;;;673:38684;;;;36791:81;;;;673:38684;36791:81;673:38684;36791:81;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;673:38684;;;;;;;;;36574:57;;;;673:38684;36574:57;;673:38684;36574:57;;;;;;673:38684;36574:57;;;:::i;:::-;;;673:38684;;;;;;36791:81;36574:57;;673:38684;-1:-1:-1;673:38684:55;;36574:57;;;-1:-1:-1;36574:57:55;;;673:38684;;;;;;;;;36308:82;673:38684;36357:22;;;;;673:38684;;;;;;-1:-1:-1;;673:38684:55;;;;;;;33344:20;;;:::i;:::-;33378:21;;;673:38684;;;;;;;;;33374:82;;33470:32;;;673:38684;33506:15;-1:-1:-1;33470:51:55;;;:104;;;673:38684;33466:160;;;673:38684;;;;;;;;;;;33678:23;;673:38684;;33678:23;673:38684;;33466:160;673:38684;33597:18;;;;;33470:104;33506:15;;33525:30;33506:15;33525:30;;673:38684;33525:49;;33470:104;;;33374:82;673:38684;33422:23;;;;;673:38684;;;;;;-1:-1:-1;;673:38684:55;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;673:38684:55;;;;;;;;;;;;:::i;:::-;1355:1:63;673:38684:55;;;;;;;;1382:29:63;1367:44;;;:::i;:::-;673:38684:55;1436:41:63;1421:56;;;:::i;:::-;673:38684:55;1502:39:63;1487:54;;;:::i;:::-;673:38684:55;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;29055:24;673:38684;;29055:24;:::i;:::-;673:38684;29093:21;;;673:38684;;;;29089:78;;29194:5;29802:331;30218:27;29194:5;;;;:::i;:::-;673:38684;;29255:32;;;673:38684;29289:30;;;673:38684;;;;;;;;;;;;;;;;;;29215:105;;673:38684;;29215:105;673:38684;;;;29438:32;;;673:38684;29484:35;;;673:38684;;;;;;;;;;;;;;;;;;;;;;29335:194;;673:38684;;29335:194;29544:243;673:38684;;29608:12;;;673:38684;29634:16;29544:243;29634:16;;;673:38684;;29664:16;;673:38684;29694:22;;;673:38684;29730:22;;;673:38684;29766:11;673:38684;29766:11;;;673:38684;;;;;29544:243;;;;673:38684;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29544:243;;;;673:38684;;29802:331;29866:35;;;673:38684;29915:24;;;;673:38684;29953:16;;;;673:38684;29983:13;;;673:38684;30010:22;;;673:38684;30046:24;673:38684;30092:30;30046:24;;;673:38684;30092:30;;673:38684;29866:35;673:38684;;;;;;:::i;:::-;;;29802:331;;;;673:38684;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29802:331;;;;30185:22;673:38684;;30185:22;;;673:38684;30185:22;;:::i;:::-;673:38684;30218:27;:::i;:::-;673:38684;;;;;29089:78;673:38684;29137:19;;;;;673:38684;;;;;;-1:-1:-1;;673:38684:55;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;4348:20;673:38684;4382:21;4348:20;;;:::i;:::-;4382:21;673:38684;;;;4378:77;;31639:20;;;:::i;:::-;31669:30;31713:24;;;673:38684;31740:29;;;;673:38684;;;31713:56;;;;;31709:225;31713:56;;;31810;;;:::i;:::-;31709:225;;31984:36;;;;;;32036:44;31980:175;;32187:32;;;673:38684;32169:15;:50;32165:119;;32315:30;;;673:38684;32169:15;32297:48;32293:117;;32423:24;;32419:80;;32512:38;;;:46;673:38684;;;-1:-1:-1;673:38684:55;;;;32512:68;673:38684;;-1:-1:-1;673:38684:55;;32512:68;:::i;:::-;32583:35;;;673:38684;-1:-1:-1;32508:183:55;;673:38684;;;-1:-1:-1;673:38684:55;;;;;-1:-1:-1;673:38684:55;;32704:51;32700:196;;31980:175;32905:52;673:38684;32905:52;673:38684;33141:61;32905:52;;673:38684;32905:52;;673:38684;32905:52;;;;673:38684;32905:52;;:::i;:::-;673:38684;;;-1:-1:-1;673:38684:55;;;;-1:-1:-1;673:38684:55;32967:69;673:38684;;;32967:69;:::i;:::-;673:38684;;33046:41;673:38684;;:::i;:::-;;;;;;;;;;;;33141:61;673:38684;;;;;;32700:196;32771:29;;;673:38684;;;;;;;;;;;;;;;;;;;;32905:52;673:38684;;;32824:61;33141;673:38684;;;;;;;;;;;;;;;;;;;;32824:61;32700:196;;;;;;;;;;;;;;;;;673:38684;;-1:-1:-1;;;673:38684:55;;;31740:29;673:38684;;;32508:183;32649:31;;673:38684;32649:31;;;32419:80;673:38684;32470:18;;;;;32293:117;673:38684;32368:31;;;;;32165:119;673:38684;32242:31;;;;;31980:175;32111:33;;31980:175;;;31709:225;31897:26;;;31709:225;;;4378:77;4426:18;;673:38684;4426:18;;;673:38684;;;;;;-1:-1:-1;;673:38684:55;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;1121:88:63;673:38684:55;102:47:63;673:38684:55;;1129:10:63;:38;1121:88;:::i;:::-;37432:20:55;;;:::i;:::-;673:38684;37467:21;;;673:38684;;;;37466:22;37462:82;;673:38684;;;;;;;;37557:45;;;;673:38684;37557:45;;;673:38684;37557:45;;673:38684;;;;;;37557:45;;;;;;;;;;;;673:38684;37557:55;;37553:127;;37722:22;37712:32;37722:22;;673:38684;37712:32;;:::i;:::-;673:38684;;;;;37781:55;;673:38684;;;;;37781:55;;673:38684;37830:4;673:38684;;;;;;;;;;;;;37781:55;;;;;;;;;;;673:38684;37854:32;;37997:63;37854:32;37846:85;37854:32;673:38684;37854:32;;;;37846:85;:::i;:::-;673:38684;;;37997:63;;;;;;673:38684;37997:63;;;673:38684;37997:63;;673:38684;;;;;;;;;;;;;;;;;;;;;;37997:63;;;;;;;;;38070:42;37997:63;;;;;38070:42;;:::i;:::-;673:38684;;;;;38122:71;;;;;;673:38684;38122:71;673:38684;;;;38122:71;;;;;673:38684;38122:71;;;673:38684;38122:71;;673:38684;;;;;;;;;;;;;;;;;;;;;;;;;;;;38122:71;;;;;;;;673:38684;;;;;;38208:62;673:38684;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;38208:62;;;673:38684;;38122:71;;;;38208:62;38122:71;;;;673:38684;38122:71;;;:::i;:::-;;;;;;;;;;37781:55;;;;;673:38684;37781:55;;673:38684;37781:55;;;;;;673:38684;37781:55;;;:::i;:::-;;;673:38684;;;;;;;;37781:55;37997:63;37781:55;;673:38684;;;;37781:55;;;-1:-1:-1;37781:55:55;;;673:38684;;;;;;;;;37553:127;673:38684;37635:34;;;;;37557:45;;;;673:38684;37557:45;;673:38684;37557:45;;;;;;673:38684;37557:45;;;:::i;:::-;;;673:38684;;;;;;;37557:45;;;673:38684;;;;37557:45;;;-1:-1:-1;37557:45:55;;37462:82;673:38684;37511:22;;;;;673:38684;;;;;;;;;;-1:-1:-1;;673:38684:55;;;;;;;102:47:63;673:38684:55;;;;;;;;;;;;;;-1:-1:-1;;673:38684:55;;;;;;;:::i;:::-;;102:47:63;673:38684:55;;;;;;;102:47:63;673:38684:55;;;102:47:63;673:38684:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;673:38684:55;;;;;;;;:::i;:::-;;;4551:36;673:38684;;;4551:36;673:38684;;;;;;;;;-1:-1:-1;;673:38684:55;;;;;30609:57;673:38684;;;;30609:57;673:38684;;30471:20;673:38684;30471:20;:::i;:::-;30501:26;1663:4:46;3221:44:50;;;;:::i;:::-;673:38684:55;30501:26;;673:38684;;;30609:57;;;;673:38684;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27847:4;673:38684;;;;;;;27896:24;673:38684;;27896:24;:::i;:::-;27934:23;;;673:38684;;;;;;27930:85;;28042:5;;28416:326;28042:5;;28826:27;28042:5;;:::i;:::-;673:38684;-1:-1:-1;;673:38684:55;;;;;;28084:4;673:38684;28098:30;;;;673:38684;;;;;;;;;;;;;;;28163:238;673:38684;;28222:12;;;673:38684;28248:16;28163:238;28248:16;;;673:38684;;28278:16;;673:38684;28308:22;;;673:38684;28344:22;;;673:38684;28380:11;673:38684;28380:11;;;673:38684;;;;;28163:238;;;;673:38684;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28163:238;;;;28416:326;673:38684;;28475:35;;;;673:38684;28524:24;;;;673:38684;28562:16;;;;673:38684;28592:13;;;673:38684;28619:22;673:38684;;28619:22;;;673:38684;28655:24;;673:38684;;28475:35;673:38684;;;;;;:::i;27930:85::-;673:38684;27980:24;;;;;673:38684;;;;;;-1:-1:-1;;673:38684:55;;;;;;;;-1:-1:-1;;673:38684:55;;;;;:::i;:::-;38398:2;673:38684;;;;;;;;38426:33;38411:48;;;:::i;:::-;673:38684;38484:37;38469:52;;;:::i;:::-;673:38684;38546:37;38531:52;;;:::i;:::-;673:38684;;;38603:1;673:38684;;;;38608:33;673:38684;;;;;;;;;;;38666:53;673:38684;;;;;;;;;;;38744:41;673:38684;;;;;;38805:1;673:38684;;;;38810:26;673:38684;;;;;;38856:1;673:38684;;;;38861:32;673:38684;;;;;;38913:1;673:38684;;;;38918:34;673:38684;;;;;;38972:1;673:38684;;;;38977:37;673:38684;;;;;;39034:2;673:38684;;;;39040:31;673:38684;;;;;;39091:2;673:38684;;;;39097:41;673:38684;;;;;;39158:2;673:38684;;;;39164:28;673:38684;;;;;;39212:2;673:38684;;;;39218:36;673:38684;;;;;;39274:2;673:38684;;;;39280:41;673:38684;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;673:38684:55;;;;;;;;;;;;;-1:-1:-1;;673:38684:55;;;;;;;33809:20;;;:::i;:::-;33844:21;;;673:38684;;;;;;;;;33843:22;33839:79;;33931:32;;;673:38684;33967:15;-1:-1:-1;33931:51:55;;;:104;;;673:38684;33927:160;;;673:38684;;;;;;;;;34140:25;;673:38684;;34140:25;673:38684;;33931:104;33967:15;;33986:30;33967:15;33986:30;;673:38684;33986:49;;33931:104;;;33839:79;673:38684;33888:19;;;;;673:38684;;;;;30980:52;673:38684;;;;:::i;:::-;30881:20;30911:42;30881:20;;;:::i;673:38684::-;;;;;;;;:::i;:::-;34323:20;;;;;:::i;:::-;34375:29;;;;673:38684;;;34408:41;;;;673:38684;;;;;:::i;:::-;;34375:91;;673:38684;;34549:38;;;:46;673:38684;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;673:38684:55;;34731:91;673:38684;;;;;;:::i;:::-;;34731:91;;:::i;:::-;673:38684;;;;;;:::i;:::-;;;;;;;;;;34832:108;673:38684;;;;;;34832:108;:::i;:::-;673:38684;;;;;;;;;;;34955:51;34951:196;;673:38684;35156:31;;673:38684;;;35191:1;673:38684;;;;;;;;;;;;;35279:65;673:38684;;;35359:61;673:38684;;;;:::i;:::-;;;;;;;;;;;;;35279:65;673:38684;;;;;;;;;;35359:61;673:38684;;;34408:41;673:38684;-1:-1:-1;;;673:38684:55;;34375:29;673:38684;;;34951:196;35022:29;;;673:38684;;;-1:-1:-1;;673:38684:55;;;;;;;;;35156:31;673:38684;;35075:61;673:38684;;;;;;;;;;;;35075:61;34951:196;;;;673:38684;34408:41;673:38684;-1:-1:-1;;;673:38684:55;;34375:29;673:38684;;;;;;;;;;;;;;;;34408:41;673:38684;;;;;;;;;;;;;;;;;;;;;;;;;;;34408:41;673:38684;;;;;;;;;;;;;;;;-1:-1:-1;;673:38684:55;;;;;;;;;;;;;;;;26562:49;;26577:34;26562:49;;:89;;;;;673:38684;;;;;;;26562:89;844:25:16;829:40;;;26562:89:55;;;673:38684;;;-1:-1:-1;;673:38684:55;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;673:38684:55;;;;;-1:-1:-1;673:38684:55;;;;;;;;;-1:-1:-1;;673:38684:55;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;673:38684:55;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;673:38684:55;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;673:38684:55;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;673:38684:55;;;;;;;;-1:-1:-1;673:38684:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;673:38684:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;673:38684:55;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;673:38684:55;;;;;;;:::o;:::-;-1:-1:-1;;;673:38684:55;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;-1:-1:-1;;;673:38684:55;;;;;;;;;;;38479:1;673:38684;;;;;;;:::o;:::-;;;38541:1;673:38684;;;;;;;:::o;:::-;;-1:-1:-1;673:38684:55;;;:::o;:::-;-1:-1:-1;;;673:38684:55;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;673:38684:55;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;2387:241:58:-;-1:-1:-1;2538:22:58;;29291:8:18;29282:17;;;29278:103;;2387:241:58;29398:17:18;;29407:8;29978:7;29398:17;;;29394:103;;2387:241:58;29523:8:18;29514:17;;;29510:103;;2387:241:58;29639:7:18;29630:16;;;29626:100;;2387:241:58;29752:7:18;29743:16;;;29739:100;;2387:241:58;29865:7:18;29856:16;;;29852:100;;2387:241:58;29969:16:18;;29965:66;;2387:241:58;1450:1:15;673:38684:55;;;29978:7:18;-1:-1:-1;;1545:94:15;673:38684:55;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;-1:-1:-1;;673:38684:55;;;;;;;;1545:94:15;;;1652:247;673:38684:55;1706:111:15;;;;;;;;673:38684:55;1867:10:15;;1863:21;;-1:-1:-1;;29978:7:18;1652:247:15;;;;1863:21;1879:5;;2505:56:58;673:38684:55;;;2505:56:58;;673:38684:55;;2505:56:58;;673:38684:55;;;;;;;;;;;;:::i;:::-;;;2505:56:58;;-1:-1:-1;;2505:56:58;;;;;;:::i;:::-;673:38684:55;2495:67:58;;2387:241;:::o;29965:66:18:-;30015:1;673:38684:55;29965:66:18;;29852:100;29865:7;29936:1;673:38684:55;;;;29852:100:18;;;29739;29752:7;29823:1;673:38684:55;;;;29739:100:18;;;29626;29639:7;29710:1;673:38684:55;;;;29626:100:18;;;29510:103;29523:8;29596:2;673:38684:55;;;;29510:103:18;;;29394;29407:8;29480:2;673:38684:55;;;;29394:103:18;;;29278;29364:2;;-1:-1:-1;29291:8:18;673:38684:55;;;-1:-1:-1;29978:7:18;29278:103;;20057:6374:55;;673:38684;20263:24;673:38684;;20263:24;:::i;:::-;20321:11;673:38684;20321:11;;;673:38684;;;20297:21;;;673:38684;;;;;;;;;20367:12;;;673:38684;;20342:22;;;673:38684;20393:16;;;673:38684;;;20393:21;20389:73;;20475:16;;;673:38684;;;;20475:47;20471:361;20475:16;;;20542:13;20558:2;20542:13;;673:38684;;20538:100;;20471:361;;;20845:24;;;673:38684;;;20841:722;;20471:361;21576:32;;;673:38684;;;21572:822;;20471:361;22445:16;;;673:38684;3221:44:50;673:38684:55;;;;3221:44:50;;:::i;:::-;22403:27:55;;;;673:38684;;;22553:22;;;673:38684;;;22586:22;3221:44:50;22586:22:55;;;673:38684;;;3221:44:50;;:::i;:::-;22509:29:55;;;673:38684;1663:4:46;3221:44:50;22665:22:55;;;673:38684;22630:32;;673:38684;22630:32;;673:38684;;;22732:22;;;673:38684;;;;3221:44:50;;:::i;:::-;673:38684:55;22764:24;;;673:38684;23111:22;22991:25;;;673:38684;22953:35;;;;673:38684;;;23052:13;;;673:38684;23026:23;;;673:38684;23111:22;673:38684;23076:32;;;673:38684;23076:32;;;;673:38684;;;;;;;;;;10572:25:68;;1045:12;;23143:30:55;;673:38684;23143:30;;673:38684;;;;;23254:47;23250:1063;23254:16;;;-1:-1:-1;23317:26:55;;673:38684;;;;;;-1:-1:-1;;673:38684:55;;23378:35;;;673:38684;23250:1063;24327:22;;;673:38684;;;24327:63;673:38684;;-1:-1:-1;673:38684:55;;24410:37;:32;;24467;;;673:38684;-1:-1:-1;;673:38684:55;;;;;;24406:402;673:38684;;25139:42;;;673:38684;;;25226:34;;;673:38684;25301:19;;;673:38684;;;;25301:24;;;;:52;;;;24323:807;25297:272;;;24323:807;25579:20;;26319:105;25579:20;;25932:69;25579:20;;26319:105;25579:20;;;22665:22;26110:194;25579:20;25655:193;26110:194;25579:20;;18999:39:50;3221:44;26016:79:55;25579:20;;;;25864:53;25579:20;;673:38684;;;;;;;;;;;3221:44:50;;:::i;:::-;18999:39;;:::i;:::-;25655:193:55;;:::i;:::-;25628:24;;;673:38684;;;;;;;;;;22732:22;673:38684;;;25864:53;673:38684;;;;25981:19;;;673:38684;;;;;;;;;;;;;;;;;;;25932:69;673:38684;;;;;;;;;22732:22;673:38684;;;26016:79;673:38684;;;;;;;;;22665:22;673:38684;26110:194;;;;673:38684;;;;;;;;;;;;;;;;;;;;;;;26110:194;;;;673:38684;;;;;22665:22;673:38684;26319:105;;;;673:38684;;;;;;;;;;;;;;;;;;26319:105;;;;20057:6374::o;25297:272::-;25440:19;3221:44:50;25440:19:55;;;673:38684;;;3221:44:50;;:::i;:::-;25369:26:55;;;673:38684;;;;;;;25484:4;;:74;;;;22665:22;673:38684;;25484:74;;;;;673:38684;;;;;;;;;;;;;;;;;;;;;;;25484:4;:74;;;;;;;25297:272;25484:74;;;;;;:::i;:::-;673:38684;;25484:74;25297:272;;25301:52;25329:19;;;;673:38684;25329:24;;25301:52;;;24406:402;673:38684;;24578:29;:24;;24627:32;;;673:38684;-1:-1:-1;;673:38684:55;;;;;;24406:402;;24574:234;24730:32;;;673:38684;-1:-1:-1;;673:38684:55;;;;;;24406:402;;24323:807;673:38684;;24828:22;;24903:32;;;;-1:-1:-1;;673:38684:55;;;;;24323:807;;24824:306;673:38684;24983:60;;24323:807;24979:151;25059:32;;;673:38684;-1:-1:-1;;673:38684:55;;;;;;24323:807;;23250:1063;673:38684;;;23464:50;673:38684;;23530:26;3107:23:49;23530:26:55;23614:35;23826:25;23530:26;;3221:44:50;23530:26:55;;22630:32;673:38684;;;;;;;;;;;23614:35;;:::i;:::-;673:38684;;3221:44:50;;:::i;:::-;673:38684:55;3221:44:50;23826:25:55;;:::i;:::-;3107:23:49;:::i;:::-;23787:35:55;;;673:38684;23250:1063;;23460:853;673:38684;;;;23076:32;23895:48;23891:422;;23460:853;;;;23250:1063;;23891:422;3107:23:49;23959:26:55;24041:35;3221:44:50;23959:26:55;;24254:25;23959:26;;23076:32;673:38684;;;;;;;;;;;24041:35;;:::i;3221:44:50:-;673:38684:55;3221:44:50;14575:4121:21;3107:23:49;24215:35:55;;;673:38684;23891:422;;;;;1045:12:68;;22665:22:55;673:38684;1045:12:68;;;22732:22:55;1045:12:68;;;;;;;;673:38684:55;1045:12:68;673:38684:55;;;1045:12:68;;;;;;;21572:822:55;673:38684;;;;;;;;;21633:47;21629:755;21633:16;;;-1:-1:-1;673:38684:55;;21739:2;673:38684;;21704:42;21739:2;;21777:60;;;;;;21700:289;673:38684;;;;;;;;;;;;21884:4;:86;;;;673:38684;;21884:86;673:38684;21884:86;;;;;673:38684;;;;;21884:4;;:86;:4;;;:86;;;;;;;;;;;;;;21700:289;;21572:822;;21884:86;;;;;;;;;;;;:::i;:::-;673:38684;;21884:86;;;;;;;;673:38684;;;;;;;;;21629:755;673:38684;;;;;;;;;;22013:50;21572:822;22009:375;673:38684;;;;;;;;;-1:-1:-1;673:38684:55;;;;22087:41;673:38684;;22159:59;;;;;;20841:722;673:38684;;;;;;;;20894:47;20890:663;20894:16;;;-1:-1:-1;673:38684:55;;20992:2;673:38684;;20965:34;20992:2;;21030:42;;;;;;20961:243;673:38684;;;;;;;;;;21119:4;:66;;;;673:38684;;21119:66;673:38684;21119:66;;;;;673:38684;;;;;21119:4;;:66;:4;;;:66;;;;;;;;;;;;;20961:243;;20841:722;;21119:66;;;;;;;;;:::i;:::-;673:38684;;21119:66;;;;;;20890:663;673:38684;;;;;;;;;21228:50;20841:722;21224:329;673:38684;;;;;;;;;-1:-1:-1;673:38684:55;;;21302:33;673:38684;;21366:41;;;;;;21298:241;673:38684;;;;;;;;;;21454:4;:66;;;;673:38684;;21454:66;673:38684;21454:66;;;;;673:38684;;;;;21454:4;;:66;:4;;;:66;;;;;;;;;;;;;;21298:241;;;20841:722;;21454:66;;;;:::i;:::-;;;;;20538:100;20592:31;;;;;;20471:361;673:38684;;;;20658:50;20471:361;20654:178;20728:13;;673:38684;20728:13;;673:38684;;20724:98;;20654:178;;20471:361;;20724:98;20777:30;;;;;;20389:73;20437:14;;;;;;673:38684;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;673:38684:55;;;;;;;:::o;:::-;;;-1:-1:-1;673:38684:55;;-1:-1:-1;673:38684:55;;;;;;:::i;:::-;:::o;:::-;;;;;;;;-1:-1:-1;673:38684:55;;-1:-1:-1;673:38684:55;;;-1:-1:-1;673:38684:55;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;673:38684:55;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;673:38684:55;;;;;;;;;;;;;;;;;:::o;4600:3488::-;;4732:20;;;:::i;:::-;4791:4;673:38684;4766:21;;;673:38684;;;;;;4766:29;4762:86;;1045:12:68;673:38684:55;;3695:6:68;673:38684:55;;;3695:6:68;673:38684:55;;-1:-1:-1;673:38684:55;;;;;;;;;;;;;;;;-1:-1:-1;1218:9:68;673:38684:55;;;;;;;;;;;;;;;1218:9:68;;;3781:1;1218:9;;;;;;3795:7;3780:22;1218:9;3872:11;1218:9;3795:7;1218:9;;3795:7;1218:9;;;;;;3886:1;673:38684:55;;;-1:-1:-1;3886:1:68;673:38684:55;;;;;;;;;;;;;;;3781:1:68;3862:30;3871:21;1218:9;3862:30;;:::i;:::-;3967:10;4791:4:55;673:38684;;4791:4;673:38684;;-1:-1:-1;673:38684:55;;;;;;;;;;;;;1218:9:68;3959:4;1218:9;;3959:4;1218:9;;;;;3982;4051:27;3958:33;1218:9;4061:12;3781:1;4061:12;;;:::i;:::-;1218:9;4051:27;;:::i;:::-;:32;4081:2;673:38684:55;;;-1:-1:-1;4081:2:68;673:38684:55;;;;;;;;;;;;;;;1218:9:68;4192:2;1218:9;4192:2;1218:9;;;;;;4283:4;4271:16;1218:9;4363:13;1218:9;4283:4;1218:9;;4283:4;1218:9;;;;;;4192:2;4352:31;4362:20;1218:9;4352:31;;:::i;:::-;4444:11;4453:2;1218:9;;4474:10;1218:9;673:38684:55;;;-1:-1:-1;1218:9:68;673:38684:55;;;;;;;;;;;;;;;1218:9:68;4487:2;1218:9;4487:2;1218:9;;;;;;4474:24;;;:::i;:::-;4564:6;1218:9;;;;;;4791:4:55;1218:9:68;;;;4557:3;1218:9;;4557:3;1218:9;;;;;4557:31;:22;;;;:::i;:::-;:31;:::i;:::-;-1:-1:-1;5050:26:55;;;;673:38684;;;;;3886:1:68;673:38684:55;;;;;5050:48;;;5130:23;;4487:2:68;5130:23:55;;;673:38684;;5046:324;;-1:-1:-1;5413:25:55;;5489:26;;;5482:33;;;;:::i;:::-;5532:27;;;673:38684;;;;;;;;;5046:324;5575:13;;5590:17;;;;;;7986:24;;;;;;;;;;;;673:38684;7986:24;4453:2:68;8043:38:55;7986:24;;673:38684;;;;;;;;;;8043:38;4600:3488::o;5609:3::-;673:38684;;;;3886:1:68;673:38684:55;;;;;1218:9:68;5632:49:55;;1218:9:68;;-1:-1:-1;5705:6:55;;;;;-1:-1:-1;673:38684:55;-1:-1:-1;4487:2:68;673:38684:55;;4487:2:68;;4791:4:55;673:38684;;;;;;;5735:163;;4791:4;673:38684;;;;;;;4487:2:68;673:38684:55;;5975:16;;;5971:87;;5735:163;7550:144;7599:81;;;;;:::i;:::-;7550:144;;:::i;:::-;-1:-1:-1;;673:38684:55;;;;;;;7713:22;;7709:192;;5628:1909;673:38684;;;;;;;;;4791:4;673:38684;;;;;;;;;;4791:4;673:38684;;-1:-1:-1;673:38684:55;;-1:-1:-1;673:38684:55;;;;;;;;;;;3886:1:68;673:38684:55;;;;;;;;5575:13;;7709:192;7805:81;;;;;:::i;:::-;4487:2:68;7755:27:55;;673:38684;7709:192;;5971:87;4487:2:68;;-1:-1:-1;5971:87:55;;5735:163;5858:17;5735:163;;;5701:768;4487:2:68;673:38684:55;;4487:2:68;;4791:4:55;673:38684;;;;;;;6104:181;;4791:4;673:38684;;;;;;;4487:2:68;673:38684:55;;6368:16;;5701:768;6364:87;4487:2:68;;-1:-1:-1;5701:768:55;;6104:181;;;;5628:1909;-1:-1:-1;4791:4:55;6493:51;;4791:4;;6568:6;;;;;6564:682;6568:6;;;-1:-1:-1;6602:11:55;-1:-1:-1;6611:2:55;6602:11;;6611:2;;4791:4;673:38684;;;;;;;6598:159;;3886:1:68;673:38684:55;;;;;;;4487:2:68;673:38684:55;;6834:16;;;6830:87;;6598:159;5628:1909;;6598:159;6717:17;6598:159;;;6564:682;6982:2;6967:17;;;6963:99;;6564:682;3886:1:68;673:38684:55;;;;;;;4487:2:68;673:38684:55;;7145:16;;6564:682;7141:87;4487:2:68;;-1:-1:-1;5628:1909:55;;6963:99;673:38684;4791:4;673:38684;;;;;;;6963:99;;;6489:1048;7270:48;5628:1909;7266:271;7342:6;;;;7372:17;;;7411:19;;7338:185;5628:1909;;7338:185;4791:4;673:38684;;;;;;;7338:185;5628:1909;;673:38684;;;;;;;;;4081:2:68;673:38684:55;;;;;;;:::i;:::-;;;;5046:324;4791:4;5179:51;4791:4;;-1:-1:-1;4791:4:55;;3886:1:68;5262:23:55;;;673:38684;;5175:195;5046:324;;5175:195;5336:23;;;673:38684;5175:195;5046:324;;673:38684;;;-1:-1:-1;;;673:38684:55;;;3781:1:68;673:38684:55;;4762:86;4818:19;-1:-1:-1;4818:19:55;;-1:-1:-1;4818:19:55;673:38684;;;;;;;;;;;-1:-1:-1;673:38684:55;;-1:-1:-1;673:38684:55;;-1:-1:-1;673:38684:55;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;8094:11957;8251:20;;;:::i;:::-;8285:21;8310:4;673:38684;8285:21;;;673:38684;;;;;;8285:29;8281:86;;-1:-1:-1;8473:22:55;;;673:38684;;8509:26;;;673:38684;;;;;;;;8509:48;;;8589:23;8615:2;8589:23;;;673:38684;;8505:324;;8839:38;8846:31;;;8839:38;:::i;:::-;8887:36;8894:29;;;8887:36;:::i;:::-;8933:38;8940:31;;;8933:38;:::i;:::-;8981;673:38684;8988:31;;8981:38;:::i;:::-;9030:39;8940:31;;;9030:39;:::i;:::-;9079:60;8473:22;;;673:38684;;8988:31;;9079:60;:::i;:::-;9149:39;8846:31;;;9149:39;:::i;:::-;9198:37;8894:29;;;9198:37;:::i;:::-;8473:22;;;673:38684;9245:30;;;673:38684;9316:13;9331:17;;;;;;12156:35;;;;673:38684;;12156:35;19586:69;673:38684;12156:35;;;673:38684;;;;;;;;;;;19586:69;19671:264;19721:26;;;673:38684;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;8988:31;;673:38684;:::i;:::-;;;;;;;;8940:31;;;673:38684;:::i;:::-;;;;;;;;8846:31;;;673:38684;:::i;:::-;;;;;;;;8894:29;;;673:38684;:::i;:::-;19671:264;;;673:38684;;;;;;;:::i;:::-;;;;:::i;:::-;;8894:29;673:38684;;;;8846:31;673:38684;8846:31;;;;673:38684;:::i;:::-;;;;;8894:29;;;;;673:38684;:::i;:::-;8094:11957;:::o;9350:3::-;8509:26;;;673:38684;;;;;;;;;;;;;;;;;;;9373:60;9369:2721;673:38684;;;9453:20;-1:-1:-1;9369:2721:55;;18999:39:50;12156:35:55;;;;673:38684;18999:39:50;:::i;:::-;673:38684:55;12232:4;673:38684;;;;;;12232:4;673:38684;;;;;;;12104:132;12290:29;;;673:38684;12232:4;673:38684;12232:4;673:38684;;;;18999:39:50;;;:::i;:::-;673:38684:55;;;;;;;;9373:60;12487:6888;673:38684;;;;;-1:-1:-1;;673:38684:55;;;;;8310:4;673:38684;19388:51;19515:45;673:38684;-1:-1:-1;;673:38684:55;;12575:21;;12571:345;673:38684;;;12620:39;8940:31;;;12620:39;:::i;:::-;12681:54;8988:31;673:38684;8988:31;;12681:54;:::i;:::-;8846:31;;;19388:51;:::i;:::-;19454:47;8894:29;;;;19454:47;:::i;:::-;9245:30;;;673:38684;19515:45;:::i;:::-;9245:30;;;673:38684;;9316:13;;;12571:345;12782:39;673:38684;8988:31;;12782:39;:::i;:::-;12843:54;8940:31;;;;12843:54;:::i;:::-;12571:345;;12487:6888;-1:-1:-1;673:38684:55;;;;12976:25;673:38684;;;;;12940:61;12936:6439;12976:25;;;-1:-1:-1;;13025:6:55;;;8310:4;13077:26;19388:51;673:38684;13077:26;;13363:42;13077:26;13287:54;13077:26;13242:23;12232:4;18999:39:50;19515:45:55;13077:26;;;;673:38684;18999:39:50;:::i;:::-;673:38684:55;13242:23;;;:::i;:::-;8988:31;;;;13287:54;:::i;:::-;8940:31;;;13363:42;:::i;13021:755::-;673:38684;;;-1:-1:-1;;673:38684:55;;;;;8310:4;673:38684;19388:51;19515:45;673:38684;-1:-1:-1;;673:38684:55;;13434:22;;13430:346;673:38684;;;13480:39;673:38684;8988:31;;13480:39;:::i;13430:346::-;13642:54;8988:31;673:38684;8988:31;;13642:54;:::i;:::-;13718:39;8940:31;;;13718:39;:::i;12936:6439::-;673:38684;;;;;8310:4;673:38684;;;;;13800:64;13796:5579;8310:4;;;673:38684;;-1:-1:-1;;673:38684:55;;;;;;-1:-1:-1;;673:38684:55;;13888:21;;673:38684;;;13952:35;8310:4;13952:35;;19388:51;13952:35;;19515:45;13952:35;;:::i;:::-;8988:31;14009:54;8988:31;673:38684;8988:31;;14009:54;:::i;:::-;14085;8940:31;;;;14085:54;:::i;13884:454::-;8988:31;19388:51;19515:45;8988:31;;14247:72;14284:34;8988:31;673:38684;8988:31;14186:39;8988:31;8310:4;8988:31;;;14186:39;:::i;:::-;8988:31;14284:34;:::i;:::-;673:38684;;;;;;8940:31;;;14247:72;:::i;13796:5579::-;-1:-1:-1;673:38684:55;;;;;;14362:87;14358:5017;673:38684;;;8509:26;;673:38684;8509:26;;;673:38684;;;;;;;;;;14520:48;;:132;;;;14358:5017;14494:402;;;;14358:5017;14494:618;;;;14358:5017;-1:-1:-1;;14469:1407:55;;;673:38684;-1:-1:-1;;673:38684:55;;;;;;-1:-1:-1;;673:38684:55;;15157:21;;673:38684;;;15225:35;8310:4;15225:35;;19388:51;15225:35;;19515:45;15225:35;;:::i;:::-;8940:31;15286:54;8940:31;;;;15286:54;:::i;:::-;15366;8988:31;673:38684;8988:31;;15366:54;:::i;15153:543::-;15475:20;19515:45;15475:20;;;19388:51;15475:20;;15601:72;15638:34;8310:4;15475:20;673:38684;-1:-1:-1;8988:31:55;15521:54;8988:31;;;15521:54;:::i;14469:1407::-;8940:31;8310:4;8940:31;;19388:51;19515:45;8940:31;15742:39;8940:31;;;15742:39;:::i;14494:618::-;673:38684;;;;;12976:25;14954:49;:132;;;14494:618;;;;;14954:132;15044:42;;;;673:38684;15039:47;;;14954:132;;14494:402;-1:-1:-1;;;;8310:4:55;14732:51;;;:138;;14494:402;;;;14732:138;14824:42;673:38684;14824:42;;;673:38684;;14819:51;;;14732:138;;14520:132;14605:42;;14650:2;14605:42;;;673:38684;;14600:52;;;14520:132;;;14358:5017;673:38684;15936:29;673:38684;;;;;15900:65;15896:3479;15936:29;;;8509:26;673:38684;8509:26;;;673:38684;;;;;;;;;;16011:48;;:96;;;;15896:3479;16010:312;;;;15896:3479;16010:410;;;;15896:3479;-1:-1:-1;;15985:1275:55;;;673:38684;-1:-1:-1;;673:38684:55;;;;;;-1:-1:-1;;673:38684:55;;16465:21;;673:38684;;;16533:35;8310:4;16533:35;;19388:51;16533:35;;19515:45;16533:35;;:::i;15985:1275::-;17050:17;;;8310:4;17050:17;19515:45;-1:-1:-1;19388:51:55;17089:15;17126:39;8940:31;;;17126:39;:::i;16010:410::-;673:38684;;;;;12976:25;16327:49;:92;;;16010:410;;;;;16327:92;16385:34;;;;673:38684;16380:39;;;16327:92;;16010:312;-1:-1:-1;;;;8310:4:55;16166:51;;;:130;;16010:312;;;;16166:130;16258:34;673:38684;16258:34;;;673:38684;;16253:43;;;16166:130;;16011:96;16068:34;;16105:2;16068:34;;;673:38684;;16063:44;;;16011:96;;;15896:3479;-1:-1:-1;673:38684:55;;;;8473:22;673:38684;;;;;17284:87;17280:2095;;15896:3479;;;8310:4;15896:3479;;19388:51;19515:45;15896:3479;12571:345;;17280:2095;673:38684;;;;;;;;;;;;;;;;17442:48;:132;;;;17280:2095;17416:402;;;;17280:2095;17416:618;;;;17280:2095;-1:-1:-1;;17391:1407:55;;;673:38684;-1:-1:-1;;673:38684:55;;;;;;-1:-1:-1;;673:38684:55;;18079:21;;673:38684;;;18147:35;;;:::i;:::-;8940:31;18208:54;8940:31;;;;18208:54;:::i;:::-;18288;8988:31;673:38684;8988:31;;18288:54;:::i;:::-;673:38684;8509:26;;;673:38684;;;;;;;;;;18841:48;;:95;;;;17391:1407;18840:310;;;;17391:1407;18840:407;;;;17391:1407;18815:546;;;8310:4;18815:546;;;19515:45;18815:546;;;17391:1407;17280:2095;;;;;;;;18815:546;19288:17;-1:-1:-1;19288:17:55;;-1:-1:-1;19388:51:55;18815:546;;18840:407;673:38684;;;;;19155:49;8310:4;19155:49;;;12976:25;19515:45;19155:49;;:91;;;18840:407;;;;;;;;;;19155:91;19212:34;;;;673:38684;19208:38;;19155:91;;18840:310;-1:-1:-1;673:38684:55;;-1:-1:-1;8310:4:55;18995:51;;;:129;;18840:310;;;;18995:129;19086:34;673:38684;19086:34;;;673:38684;;19082:42;;18995:129;;18841:95;18897:34;;18934:2;18897:34;;;673:38684;;18893:43;;18841:95;;;673:38684;;;-1:-1:-1;;;673:38684:55;;;15936:29;673:38684;;18075:543;18397:20;;;18443:54;673:38684;8988:31;;18443:54;:::i;:::-;18523:72;18560:34;8988:31;673:38684;8988:31;;18560:34;:::i;:::-;673:38684;;;;;;8940:31;;;18523:72;:::i;:::-;18075:543;;673:38684;;;-1:-1:-1;;;673:38684:55;;;15936:29;673:38684;;17391:1407;8940:31;18664:39;8940:31;;;18664:39;:::i;:::-;18725:54;8988:31;673:38684;8988:31;;18725:54;:::i;17416:618::-;673:38684;;;;;;;12976:25;17876:49;;:132;;17416:618;;;;;17876:132;17966:42;;;;673:38684;17961:47;;;17876:132;;673:38684;;;-1:-1:-1;;;673:38684:55;;;15936:29;673:38684;;17416:402;-1:-1:-1;673:38684:55;;-1:-1:-1;673:38684:55;;;8310:4;17654:51;;:138;;17416:402;;;;17654:138;17746:42;673:38684;17746:42;;;673:38684;;17741:51;;;17654:138;;17442:132;17527:42;;17572:2;17527:42;;;673:38684;;17522:52;;;17442:132;;;673:38684;;;-1:-1:-1;;;673:38684:55;;;15936:29;673:38684;;9369:2721;-1:-1:-1;;;673:38684:55;;;;;;8310:4;9498:64;8310:4;;8473:22;12232:4;3221:44:50;8473:22:55;;;;673:38684;3221:44:50;:::i;:::-;673:38684:55;9494:2596;9369:2721;;9494:2596;673:38684;;;;;;9712:87;:198;;;;9494:2596;9691:2399;;;673:38684;;;;;;;;;;;;;;12232:4;3221:44:50;8473:22:55;;;673:38684;10173:63;10234:2;10189:42;;;673:38684;;10173:63;;:::i;:::-;3221:44:50;;:::i;9943:1038:55:-;12232:4;-1:-1:-1;673:38684:55;;;8310:4;10314:51;8310:4;;3221:44:50;8473:22:55;;;673:38684;10543:62;673:38684;10559:42;;;673:38684;;10543:62;;:::i;3221:44:50:-;10408:246:55;673:38684;;10310:671;9369:2721;;10310:671;3221:44:50;8473:22:55;;;673:38684;10855:58;10871:42;;;673:38684;10855:58;;:::i;9691:2399::-;673:38684;;;;11041:29;673:38684;;;;;11005:65;9369:2721;11001:1089;673:38684;;;;;;;;;;;;;;;12232:4;3221:44:50;8473:22:55;;;673:38684;11320:55;11373:2;11336:34;;;673:38684;;11320:55;;:::i;11090:986::-;12232:4;-1:-1:-1;673:38684:55;;;8310:4;11453:51;8310:4;;3221:44:50;8473:22:55;;;673:38684;11682:54;673:38684;11698:34;;;673:38684;;11682:54;;:::i;11449:627::-;3221:44:50;8473:22:55;;;673:38684;11958:50;11974:34;;;673:38684;11958:50;;:::i;9712:198::-;673:38684;;;-1:-1:-1;673:38684:55;8473:22;673:38684;;;;;9823:87;9712:198;;8505:324;8310:4;8638:51;8310:4;;673:38684;8721:23;;;673:38684;;8634:195;8505:324;;8634:195;8795:23;;;673:38684;8634:195;8505:324;;19865:956:50;20106:10;;;;;;-1:-1:-1;;20135:10:50;;1663:4:46;20128:31:50;:::o;20135:24::-;673:38684:55;20128:31:50;:::o;20102:174::-;1663:4:46;20232:14:50;;20228:48;;20336:10;;;20358:11;;;1663:4:46;20358:11:50;:::o;20332:146::-;1663:4:46;20437:14:50;;20433:45;;1663:4:46;20537:13:50;;1663:4:46;;;20580:7:50;20571:21;20580:7;;18999:39;20580:7;;:::i;:::-;18999:39;:::i;:::-;20571:21;:::i;20533:286::-;673:38684:55;;20740:21:50;673:38684:55;20749:7:50;18999:39;673:38684:55;1782:4:46;673:38684:55;20749:7:50;:::i;20740:21::-;673:38684:55;;;;1782:4:46;673:38684:55;20533:286:50;19865:956::o;673:38684:55:-;-1:-1:-1;;;673:38684:55;;;;;;;;20433:45:50;20463:8;;;;:::o;20228:48::-;20258:11;;;1663:4:46;20258:11:50;:::o;4695:189:68:-;;2318:4;2310:12;;673:38684:55;;1218:9:68;;;;;;;;;;2563:2;2547:18;1218:9;2597:12;2605:4;673:38684:55;;;-1:-1:-1;2605:4:68;673:38684:55;;;;;;;;;;;;;;;2597:30:68;;;;:::i;:::-;2701:10;1218:9;;;;;;;;;;2563:2;1218:9;;;;;;2563:2;1218:9;;;;;;;2701:35;;;:::i;:::-;2814:19;;;;:::i;:::-;2858;1218:9;2858:3;1218:9;;2858:3;1218:9;;;;;2964:3;673:38684:55;;;-1:-1:-1;2964:3:68;673:38684:55;;;;;;;;;;;;;;;2964:3:68;2948:26;1218:9;2943:32;1218:9;2943:1;1218:9;;2943:1;1218:9;;;;;;;;;;;;;;;3002:50;3018:9;2563:2;3002:25;3026:1;3018:9;;3002:38;3018:9;1218;3002:25;;:::i;:::-;3030:10;1218:9;3002:38;;:::i;:::-;3043:9;1218;3002:50;;:::i;:::-;1218:9;;;;;;;;;;1045:12;673:38684:55;;;;;;1045:12:68;673:38684:55;;;;;;;4695:189:68;:::o;673:38684:55:-;;;;;;;;;;;;;;;;;;;;;;;14575:4121:21;-1:-1:-1;;1663:4:46;15070:150:21;;;1663:4:46;15070:150:21;;;;;;;;;;;;;15285:10;;15281:93;;15464:20;;;;15460:92;;1663:4:46;15847:288:21;;;16536:1;16521:12;;673:38684:55;16506:32:21;;16581:667;;;17677:1;673:38684:55;17658:1:21;673:38684:55;17657:21:21;673:38684:55;;;17677:1:21;673:38684:55;;;;;17677:1:21;673:38684:55;;;;;17677:1:21;673:38684:55;;;;;17677:1:21;673:38684:55;;;;;17677:1:21;673:38684:55;;;;;17677:1:21;673:38684:55;;16581:667:21;16536:1;16581:667;;673:38684:55;16581:667:21;;;15847:288;;;;;;673:38684:55;15847:288:21;;16581:667;17306:31;673:38684:55;14575:4121:21;:::o;15460:92::-;15503:42;673:38684:55;15503:42:21;;673:38684:55;1663:4:46;673:38684:55;;;;;;15503:42:21;15281:93;15338:19;;;673:38684:55;;;;;15331:26:21;:::o;16952:1397:50:-;1663:4:46;17050:13:50;;17046:86;;1663:4:46;673:38684:55;;12755:169:21;;;;;;;;12941:153;;;;;;;;13111:145;;;;;;;;13273:141;;;;;;;;13430:139;;;;;;;;;13585:138;;;;;;;;;13739;;13430:139;13739:138;;;;;;;13929:102;12941:153;;13111:145;13273:141;13430:139;13585:138;13739;13929:102;673:38684:55;1663:4:46;673:38684:55;;;;1663:4:46;17603:10:50;;17599:64;;648:6:46;17889:417:50;;17922:9;;;18315:25;;16952:1397;:::o;17933:11::-;673:38684:55;1663:4:46;673:38684:55;;;18062:16:50;17875:4;18062:16;;;18058:238;;17933:11;13739:138:21;673:38684:55;17894:26:50;;;;18058:238;673:38684:55;;;;;13739:138:21;673:38684:55;18058:238:50;;;17599:64;17629:23;;:::o;17046:86::-;17082:43;673:38684:55;17082:43:50;;673:38684:55;;;17082:43:50;4448:525;509:10:46;4629:23:50;;4625:95;;1663:4:46;673:38684:55;4810:2:50;673:38684:55;;2732:50:21;3347:18;3343:22;;3339:1023;;4448:525:50;1663:4:46;4376:20:21;4380:16;4376:20;;4372:1005;;4448:525:50;5395:14:21;5391:18;;5387:987;;4448:525:50;6392:12:21;6388:16;;6384:969;;4448:525:50;7371:10:21;7367:14;;7363:951;;4448:525:50;8332:8:21;8328:12;;8324:933;;4448:525:50;9275:6:21;9271:10;;9267:915;;4448:525:50;673:38684:55;10196:8:21;;10192:897;;4448:525:50;673:38684:55;;4810:2:50;673:38684:55;11705:3:21;673:38684:55;;4448:525:50;:::o;10192:897:21:-;10232:4;10228:8;;10224:96;;10192:897;4810:2:50;10337:8:21;;10333:96;;10192:897;10450:4;10446:8;;10442:96;;10192:897;10559:4;10555:8;;10551:96;;10192:897;10668:3;10664:7;;10660:95;;10192:897;10776:3;10772:7;;10768:95;;10192:897;10884:3;10880:7;;10876:95;;10192:897;10992:3;10988:7;;10984:95;10192:897;10984:95;11038:19;673:38684:55;4810:2:50;673:38684:55;10192:897:21;;10876:95;10930:19;673:38684:55;4810:2:50;673:38684:55;10876:95:21;;10768;10822:19;673:38684:55;4810:2:50;673:38684:55;10768:95:21;;10660;10714:19;673:38684:55;4810:2:50;673:38684:55;10660:95:21;;10551:96;10606:19;673:38684:55;4810:2:50;673:38684:55;10551:96:21;;10442;10497:19;673:38684:55;4810:2:50;673:38684:55;10442:96:21;;10333;10388:19;673:38684:55;4810:2:50;673:38684:55;10333:96:21;;10224;10279:19;673:38684:55;4810:2:50;673:38684:55;10224:96:21;;9267:915;9309:6;9305:10;;9301:98;;9267:915;9420:6;9416:10;;9412:98;;9267:915;9531:6;9527:10;;9523:98;;9267:915;9642:6;9638:10;;9634:98;;9267:915;9753:5;9749:9;;9745:97;;9267:915;9863:5;9859:9;;9855:97;;9267:915;9973:5;9969:9;;9965:97;;9267:915;10083:5;10079:9;;10075:97;9267:915;10075:97;10131:19;673:38684:55;4810:2:50;673:38684:55;9267:915:21;;9965:97;10021:19;673:38684:55;4810:2:50;673:38684:55;9965:97:21;;9855;9911:19;673:38684:55;4810:2:50;673:38684:55;9855:97:21;;9745;9801:19;673:38684:55;4810:2:50;673:38684:55;9745:97:21;;9634:98;9691:19;673:38684:55;4810:2:50;673:38684:55;9634:98:21;;9523;9580:19;673:38684:55;4810:2:50;673:38684:55;9523:98:21;;9412;9469:19;673:38684:55;4810:2:50;673:38684:55;9412:98:21;;9301;9358:19;673:38684:55;4810:2:50;673:38684:55;9301:98:21;;8324:933;8368:8;8364:12;;8360:100;;8324:933;8481:8;8477:12;;8473:100;;8324:933;8594:8;8590:12;;8586:100;;8324:933;8707:8;8703:12;;8699:100;;8324:933;8820:7;8816:11;;8812:99;;8324:933;8932:7;8928:11;;8924:99;;8324:933;9044:7;9040:11;;9036:99;;8324:933;9156:7;9152:11;;9148:99;8324:933;9148:99;9206:19;673:38684:55;4810:2:50;673:38684:55;8324:933:21;;9036:99;9094:19;673:38684:55;4810:2:50;673:38684:55;9036:99:21;;8924;8982:19;673:38684:55;4810:2:50;673:38684:55;8924:99:21;;8812;8870:19;673:38684:55;4810:2:50;673:38684:55;8812:99:21;;8699:100;8758:19;673:38684:55;4810:2:50;673:38684:55;8699:100:21;;8586;8645:19;673:38684:55;4810:2:50;673:38684:55;8586:100:21;;8473;8532:19;673:38684:55;4810:2:50;673:38684:55;8473:100:21;;8360;8419:19;673:38684:55;4810:2:50;673:38684:55;8360:100:21;;7363:951;7409:10;7405:14;;7401:102;;7363:951;7524:10;7520:14;;7516:102;;7363:951;7639:10;7635:14;;7631:102;;7363:951;7754:10;7750:14;;7746:102;;7363:951;7869:9;7865:13;;7861:101;;7363:951;7983:9;7979:13;;7975:101;;7363:951;8097:9;8093:13;;8089:101;;7363:951;8211:9;8207:13;;8203:101;7363:951;8203:101;8263:19;673:38684:55;4810:2:50;673:38684:55;7363:951:21;;8089:101;8149:19;673:38684:55;4810:2:50;673:38684:55;8089:101:21;;7975;8035:19;673:38684:55;4810:2:50;673:38684:55;7975:101:21;;7861;7921:19;673:38684:55;4810:2:50;673:38684:55;7861:101:21;;7746:102;7807:19;673:38684:55;4810:2:50;673:38684:55;7746:102:21;;7631;7692:19;673:38684:55;4810:2:50;673:38684:55;7631:102:21;;7516;7577:19;673:38684:55;4810:2:50;673:38684:55;7516:102:21;;7401;7462:19;673:38684:55;4810:2:50;673:38684:55;7401:102:21;;6384:969;6432:12;6428:16;;6424:104;;6384:969;6549:12;6545:16;;6541:104;;6384:969;6666:12;6662:16;;6658:104;;6384:969;6783:12;6779:16;;6775:104;;6384:969;6900:11;6896:15;;6892:103;;6384:969;7016:11;7012:15;;7008:103;;6384:969;7132:11;7128:15;;7124:103;;6384:969;7248:11;7244:15;;7240:103;6384:969;7240:103;7302:19;673:38684:55;4810:2:50;673:38684:55;6384:969:21;;7124:103;7186:19;673:38684:55;4810:2:50;673:38684:55;7124:103:21;;7008;7070:19;673:38684:55;4810:2:50;673:38684:55;7008:103:21;;6892;6954:19;673:38684:55;4810:2:50;673:38684:55;6892:103:21;;6775:104;6838:19;673:38684:55;4810:2:50;673:38684:55;6775:104:21;;6658;6721:19;673:38684:55;4810:2:50;673:38684:55;6658:104:21;;6541;6604:19;673:38684:55;4810:2:50;673:38684:55;6541:104:21;;6424;6487:19;673:38684:55;4810:2:50;673:38684:55;6424:104:21;;5387:987;5437:14;5433:18;;5429:106;;5387:987;5556:14;5552:18;;5548:106;;5387:987;5675:14;5671:18;;5667:106;;5387:987;5794:14;5790:18;;5786:106;;5387:987;5913:13;5909:17;;5905:105;;5387:987;6031:13;6027:17;;6023:105;;5387:987;6149:13;6145:17;;6141:105;;5387:987;6267:13;6263:17;;6259:105;5387:987;6259:105;6323:19;673:38684:55;4810:2:50;673:38684:55;5387:987:21;;6141:105;6205:19;673:38684:55;4810:2:50;673:38684:55;6141:105:21;;6023;6087:19;673:38684:55;4810:2:50;673:38684:55;6023:105:21;;5905;5969:19;673:38684:55;4810:2:50;673:38684:55;5905:105:21;;5786:106;5851:19;673:38684:55;4810:2:50;673:38684:55;5786:106:21;;5667;5732:19;673:38684:55;4810:2:50;673:38684:55;5667:106:21;;5548;5613:19;673:38684:55;4810:2:50;673:38684:55;5548:106:21;;5429;5494:19;673:38684:55;4810:2:50;673:38684:55;5429:106:21;;4372:1005;4424:16;4420:20;;4416:108;;4372:1005;4545:16;4541:20;;4537:108;;4372:1005;4666:16;4662:20;;4658:108;;4372:1005;4787:16;4783:20;;4779:108;;4372:1005;4908:15;4904:19;;4900:107;;4372:1005;5028:15;5024:19;;5020:107;;4372:1005;5148:15;5144:19;;5140:107;;4372:1005;5268:15;5264:19;;5260:107;4372:1005;5260:107;5326:19;673:38684:55;4810:2:50;673:38684:55;4372:1005:21;;5140:107;5206:19;673:38684:55;4810:2:50;673:38684:55;5140:107:21;;5020;5086:19;673:38684:55;4810:2:50;673:38684:55;5020:107:21;;4900;4966:19;673:38684:55;4810:2:50;673:38684:55;4900:107:21;;4779:108;4846:19;673:38684:55;4810:2:50;673:38684:55;4779:108:21;;4658;4725:19;673:38684:55;4810:2:50;673:38684:55;4658:108:21;;4537;4604:19;673:38684:55;4810:2:50;673:38684:55;4537:108:21;;4416;4483:19;673:38684:55;4810:2:50;673:38684:55;4416:108:21;;3339:1023;3393:18;3389:22;;3385:110;;3339:1023;1663:4:46;3512:22:21;3516:18;3512:22;;3508:110;;3339:1023;3639:18;3635:22;;3631:110;;3339:1023;3762:18;3758:22;;3754:110;;3339:1023;3885:17;3881:21;;3877:109;;3339:1023;4007:17;4003:21;;3999:109;;3339:1023;4129:17;4125:21;;4121:109;;3339:1023;4251:17;4247:21;;4243:109;;3339:1023;;;;;4243:109;4311:19;673:38684:55;4810:2:50;673:38684:55;4243:109:21;;4121;4189:19;673:38684:55;4810:2:50;673:38684:55;4121:109:21;;3999;4067:19;673:38684:55;4810:2:50;673:38684:55;3999:109:21;;3877;3945:19;673:38684:55;4810:2:50;673:38684:55;3877:109:21;;3754:110;3823:19;673:38684:55;4810:2:50;673:38684:55;3754:110:21;;3631;3700:19;673:38684:55;4810:2:50;673:38684:55;3631:110:21;;3508;3577:19;673:38684:55;4810:2:50;673:38684:55;3508:110:21;;3385;-1:-1:-1;673:38684:55;3385:110:21;;4625:95:50;4671:42;;;;673:38684:55;;4671:42:50;;19680:819:21;;;;-1:-1:-1;;19794:150:21;;;;;;;;;;;;;;;;;19954:10;;19950:86;;1663:4:46;20046:13:21;;;20042:74;;20145:352;;;1663:4:46;20145:352:21;;;;;;;;;;;;;;;;19680:819;:::o;20042:74::-;20078:31;;;673:38684:55;20078:31:21;;673:38684:55;;;;;20078:31:21;19950:86;-1:-1:-1;;1663:4:46;673:38684:55;;;-1:-1:-1;20000:19:21:o;673:38684:55:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1218:9:68:-;;;4061:4;1218:9;;4061:4;1218:9;;;;;:::o;:::-;;;;;;;-1:-1:-1;1218:9:68;;;;;;;;;;;;;:::o"
            },
            "methodIdentifiers": {
              "editBondParameters((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,address))": "9226537e",
              "getSelectors()": "4b503f0b",
              "getSelectorsOwnership()": "b4105004",
              "initializeBond((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,address))": "60332e89",
              "initializeOwner(address)": "8c5f36bb",
              "issueBond(uint256,uint256)": "f844a31c",
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "owner()": "8da5cb5b",
              "pauseCampaign(uint256)": "de99347a",
              "rescindReservation(string,uint256,address)": "25830db3",
              "reserve(string,uint256,uint256,address)": "906b131a",
              "setBalloonRate(uint256,uint256,uint256)": "68aea41b",
              "setCapitalAmortizationFreeDuration(uint256,uint256)": "2dcb118e",
              "setCurrencyAddress(address)": "796b89ec",
              "setGracePeriodDuration(uint256,uint256)": "ee5b280a",
              "supportsInterface(bytes4)": "01ffc9a7",
              "transferBond(string,uint256,address,address,uint256)": "8dea1f47",
              "transferOwnership(address)": "f2fde38b",
              "unpauseCampaign(uint256)": "43a19a65",
              "withdrawBondsPurchased(string,uint256,address)": "e3adc7ee"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BondAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BondAlreadyIssued\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BondHasNotBeenIssued\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CampaignAlreadyPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CampaignIsClosed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CampaignIsPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CampaignNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotReserveAfterCampaignEnd\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotReserveBeforeSignupDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CapitalAmortizationFreePeriodDurationIsNotAMultpleOfThree\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CapitalAmortizationFreePeriodDurationIsNotAMultpleOfTwelve\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DivideByZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DurationIsNotAMultpleOfThree\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DurationIsNotAMultpleOfTwelve\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedingMaxAmountPerInvestor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GracePeriodDurationIsNotAMultpleOfThree\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GracePeriodDurationIsNotAMultpleOfTwelve\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoMoreBondsToBuy\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldAccountDoesNotHaveEnoughBonds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"name\":\"PRBMath_MulDiv18_Overflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"PRBMath_MulDiv_Overflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"UD60x18\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"PRBMath_UD60x18_Exp2_InputTooBig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"UD60x18\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"PRBMath_UD60x18_Log_InputTooSmall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balloonRateNum\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balloonRateDen\",\"type\":\"uint256\"}],\"name\":\"BalloonRateSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"coupure\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interestNum\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interestDen\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withholdingTaxNum\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withholdingTaxDen\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"}],\"name\":\"BondInitializedPart1\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodicInterestRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"netReturn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodicity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"methodOfRepayment\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"formOfFinancing\",\"type\":\"uint256\"}],\"name\":\"BondInitializedPart2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"issuedAmount\",\"type\":\"uint256\"}],\"name\":\"BondIssued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"coupure\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interestNum\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interestDen\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withholdingTaxNum\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withholdingTaxDen\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"}],\"name\":\"BondParametersEditedPart1\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodicInterestRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"netReturn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodicity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"methodOfRepayment\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"formOfFinancing\",\"type\":\"uint256\"}],\"name\":\"BondParametersEditedPart2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"bondTransferId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"bondPurchaseId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"}],\"name\":\"CampaignPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startDate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endDate\",\"type\":\"uint256\"}],\"name\":\"CampaignStartAndEndDateSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"}],\"name\":\"CampaignUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"capitalAmortizationFreePeriodDuration\",\"type\":\"uint256\"}],\"name\":\"CapitalAmortizationFreePeriodSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"capitalClaimId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"capitalAmount\",\"type\":\"uint256\"}],\"name\":\"CapitalClaimAmountSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"couponDates\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"remainingCapital\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"capitalRepayments\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"grossCouponRates\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"netCouponRates\",\"type\":\"uint256[]\"}],\"name\":\"CouponsComputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gracePeriodDuration\",\"type\":\"uint256\"}],\"name\":\"GracePeriodSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"investorsCount\",\"type\":\"uint256\"}],\"name\":\"InvestorsCountChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"issueDate\",\"type\":\"uint256\"}],\"name\":\"IssueDateSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAmountPerInvestor\",\"type\":\"uint256\"}],\"name\":\"MinAndMaxAmountSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodicInterest\",\"type\":\"uint256\"}],\"name\":\"PeriodicInterestRateSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reservedAmount\",\"type\":\"uint256\"}],\"name\":\"ReservedAmountChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"revocationsCount\",\"type\":\"uint256\"}],\"name\":\"RevocationsCountChanged\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"__bondId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__campaignMinAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__campaignMaxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__campaignStartDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__expectedIssueDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__coupure\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__interestNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__interestDen\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__withholdingTaxNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__withholdingTaxDen\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__balloonRateNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__balloonRateDen\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__capitalAmortizationDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__gracePeriodDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__maxAmountPerInvestor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__periodicity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__formOfFinancing\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__methodOfRepayment\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"__issuer\",\"type\":\"address\"}],\"internalType\":\"struct BondInitParams.BondInit\",\"name\":\"bi\",\"type\":\"tuple\"}],\"name\":\"editBondParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSelectors\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSelectorsOwnership\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"__bondId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__campaignMinAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__campaignMaxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__campaignStartDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__expectedIssueDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__coupure\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__interestNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__interestDen\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__withholdingTaxNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__withholdingTaxDen\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__balloonRateNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__balloonRateDen\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__capitalAmortizationDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__gracePeriodDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__maxAmountPerInvestor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__periodicity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__formOfFinancing\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__methodOfRepayment\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"__issuer\",\"type\":\"address\"}],\"internalType\":\"struct BondInitParams.BondInit\",\"name\":\"bi\",\"type\":\"tuple\"}],\"name\":\"initializeBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"initializeOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_issueDate\",\"type\":\"uint256\"}],\"name\":\"issueBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"}],\"name\":\"pauseCampaign\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_bondPurchaseId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"rescindReservation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_bondPurchaseId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bondAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"reserve\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_balloonRateNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_balloonRateDen\",\"type\":\"uint256\"}],\"name\":\"setBalloonRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"setCapitalAmortizationFreeDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"setCurrencyAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"setGracePeriodDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_bondTransferId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_old\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_new\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transferBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"}],\"name\":\"unpauseCampaign\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_bondPurchaseId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"}],\"name\":\"withdrawBondsPurchased\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"PRBMath_MulDiv18_Overflow(uint256,uint256)\":[{\"notice\":\"Thrown when the resultant value in {mulDiv18} overflows uint256.\"}],\"PRBMath_MulDiv_Overflow(uint256,uint256,uint256)\":[{\"notice\":\"Thrown when the resultant value in {mulDiv} overflows uint256.\"}],\"PRBMath_UD60x18_Exp2_InputTooBig(uint256)\":[{\"notice\":\"Thrown when taking the binary exponent of a base greater than 192e18.\"}],\"PRBMath_UD60x18_Log_InputTooSmall(uint256)\":[{\"notice\":\"Thrown when taking the logarithm of a number less than UNIT.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/BondFacet.sol\":\"BondFacet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0xf189f9b417fe1931e1ab706838aff1128528694a9fcdb5ff7665197f2ca57d09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ff0143c836c8c9f85d13708733c09e21251395847fccfb518bf3b556726a840\",\"dweb:/ipfs/QmP69sjjrQrhYAsvCSSB69Bx66SiUPdQUqdzMYnf4wANHm\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8\",\"dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"]},\"@prb/math/src/UD60x18.sol\":{\"keccak256\":\"0xb98c6f74275914d279e8af6c502c2b1f50d5f6e1ed418d3b0153f5a193206c48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a750edde2955f160806a51083a12185fb04e20efca0e3a7ebd127dc1acc049a9\",\"dweb:/ipfs/QmeAre3mThopoQPB9mSXZq6jck59QZ7JbDFR83urd2SLvp\"]},\"@prb/math/src/sd1x18/Casting.sol\":{\"keccak256\":\"0x5d365f655f01598926c5d4fe5cda277f2cc7736fe38f943c11a32009077ddd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b378bd6039819bc12e5f17dabd9492e1410b3281f9df496cf8210539101a11\",\"dweb:/ipfs/QmcMaE64ZWMg9cFhYxdTuG8nfzeDdNuTRHMMoFXi6tSZGu\"]},\"@prb/math/src/sd1x18/Constants.sol\":{\"keccak256\":\"0xc14cc32061863d83912f9616de86f3c34f1ac58614b7d504c6ce07ee8efdb8e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22483b1282dda6a556b0232f008a5a3296bbfd76b1886e6b72bf351b7c554fab\",\"dweb:/ipfs/QmYX9cYkrFxBbhZNKsb6uUxtrc2chmAj7vuc7UKRPGMwos\"]},\"@prb/math/src/sd1x18/Errors.sol\":{\"keccak256\":\"0xc3c8b1ab3d19889c356c222a3a2186d45dfc1d3a17b9ad88159bb64ee457baa6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84fbe57569246403f778330bd7723018dfcb5f0ec50d7b1d82cc983c94a54bca\",\"dweb:/ipfs/QmWssAAnovc2EVjt58rTnxraE9B1RMivwTvYCYgpnr6oSE\"]},\"@prb/math/src/sd1x18/ValueType.sol\":{\"keccak256\":\"0xaa9dc7b562faf45264390d80e2ea10c5295bb8a4f10d76261a3f9c04363734c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6ca36acd15f5cb47cf124ddec289f84e1011f2d29056159e4570435629a3353\",\"dweb:/ipfs/QmUKdiLmZpAkNCq2TKxrPbQPUhiRFXGfjGSnY1VeHVu4y6\"]},\"@prb/math/src/sd21x18/Casting.sol\":{\"keccak256\":\"0x4a16adddb9ab1f6939dd4567c77205015a11081cb840029b84bbb6fdaf78ee36\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5003b2f4cd2fc1413da36bc63107c6e83a88d29693e8f97b54f300fa78f9c6d2\",\"dweb:/ipfs/QmaNJn91NLrZmeeGqnFQV1FTrLVSW852zHyWTrWJ5pf1pd\"]},\"@prb/math/src/sd21x18/Constants.sol\":{\"keccak256\":\"0x501c2d5cfdea9450422182059c8df1cb6a859901a07bd59631c3fa24edcc79d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4669a65001c92919671fd879d33ce0e5030b602a7ba4d36bd2308128d8d1f396\",\"dweb:/ipfs/QmUC3bJ3qdkCmLMw3WHBcEqvuC4tExT2LXzUhgu5KQ3vi3\"]},\"@prb/math/src/sd21x18/Errors.sol\":{\"keccak256\":\"0xc5422ee47eb139274e538e758fb40177a1ba22c2113ef3b3446102f0150bfe0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1981e052e9e86e1b0e4e55a057a7af4739aedd4ead2d60e3eaa40fb703594ee\",\"dweb:/ipfs/QmPK5qSujnyk1R8ues4RhDMy1tRKKyjQ31YJTviTKq7GML\"]},\"@prb/math/src/sd21x18/ValueType.sol\":{\"keccak256\":\"0x532bba888370bed393464412f4ef3462d654802e71c953ad02d078e3d2701092\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://922a4e8dd813602f72d165aa1dfdf2c29b971a2abe73bebca7cd81a32ee2c880\",\"dweb:/ipfs/QmTBAJnx1r3sZpbQAuTgQtsTtvjZbpDwhCJRzkhzUumbdf\"]},\"@prb/math/src/sd59x18/Casting.sol\":{\"keccak256\":\"0xdf70d8e70c6d6325f3f7eb028c484bc7189ef902f1d4b5b220af2e550bb5fc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0b15bcd36129c5cb163d57a117435afb171182018dd6d1e766a5f49cf1f4b63d\",\"dweb:/ipfs/QmbjzkMBH4FM2rdxGbx9LQ65wVERijNcu7R9C8dQmH3y4n\"]},\"@prb/math/src/sd59x18/Constants.sol\":{\"keccak256\":\"0x9bcb8dd6b3e886d140ad1c32747a4f6d29a492529ceb835be878ae837aa6cc3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4045c633e3618e7e90a768d92415b2f20f781fe129b4f4e26fa88f7dbf9201f\",\"dweb:/ipfs/Qmbet95pizwPno82cJ383wJtgQRSQKESmhVZ1vDrgAu7Si\"]},\"@prb/math/src/sd59x18/Errors.sol\":{\"keccak256\":\"0x0a79c28c85fc8a450b0801ff2e66114eac4ec565819f5d1d8738904658fe33e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e0d4fd3c998019fb8555d9e26c03bec42a8513bdf4185aeac2da3a000abaebf\",\"dweb:/ipfs/QmahFJHXcX4RwPxaQbUf6LVZEk8NSpjCV3Eif7i9iqC6Mk\"]},\"@prb/math/src/sd59x18/Helpers.sol\":{\"keccak256\":\"0x208570f1657cf730cb6c3d81aa14030e0d45cf906cdedea5059369d7df4bb716\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c78ca900edafa9338d4e3649a55ab0c84f76468d8a22fb945ba6d01e70f8fed\",\"dweb:/ipfs/QmeP4hQYfNxcATd1FsasdD4ebyu2vrC9K1N68swxUJzzZD\"]},\"@prb/math/src/sd59x18/Math.sol\":{\"keccak256\":\"0xd8e8b51db9b3e2fa31a60f6b8ce4ea0112c3364442ede5992aa0aa7a2c925c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c56913970e34ee7b142047b21f1856a511cbdc3473b7c50418a8490e19cd462\",\"dweb:/ipfs/QmfG1F9CBDjPYD7NXora9awFfdpvBMY9SCg5pMLCFRv9tD\"]},\"@prb/math/src/sd59x18/ValueType.sol\":{\"keccak256\":\"0x76597ba64d37d66e0178512bc9bbc1a031a7634c45e5d5c6e9da87f46952dc9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36148899ad874814e9292636fb974d2eec61f1bcc0875ec39cf444d70ba40919\",\"dweb:/ipfs/QmadUe4kH2FPcdxvhCKy8yiezCvPWor4VcPzqLYSAaGDDb\"]},\"@prb/math/src/ud21x18/Casting.sol\":{\"keccak256\":\"0x3821aa57604f6e5b7c9c5c5cc97a6d71116e673cf3fee5f76fcd42b4cefded65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a80399c6b38ab45cc10d0a6683d50340cd89d9a085b6d0dcfb81e7c4e5b3ce09\",\"dweb:/ipfs/QmWNW2YD2LMkqrpAtJYeeuHN329Rx7mvfmrjsCo1p6akTL\"]},\"@prb/math/src/ud21x18/Constants.sol\":{\"keccak256\":\"0x0997574a1ced6c43bde6d9c9175edc5ad64cbb920a0969a9db68eea543747601\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c09f03345a6779b002b38ffc3954258accbb2b1d0d5506d42c3bd7f117304f60\",\"dweb:/ipfs/QmTeBXRCE7H2HpqKUNsZN7Nk3rdBnFmbAUFom3E1PJeGuV\"]},\"@prb/math/src/ud21x18/Errors.sol\":{\"keccak256\":\"0x35a1fb789b90f8c90865884d3023deb17fcca5c7146b5ddef823496d835a5415\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0af359d07ba25bdc90de7c05ed6216833932caa75d4a02fcfc51ceeaba5a4e80\",\"dweb:/ipfs/QmavBFw73Xfp1qJiN6P1gk2Dfr8ByWo3dyCPVgDHtko2gq\"]},\"@prb/math/src/ud21x18/ValueType.sol\":{\"keccak256\":\"0x24838b2b1da371b9259d8ee21534a9f0cb5796aba75a4efca2374627952bee25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://897e6b79308651671c7f3c91a0069e778b47356c9ba3f86e238398ab7f2623af\",\"dweb:/ipfs/QmZbLw3tJVRZFQnV9jWQUmF43gna841adSG2TAiwDAifGU\"]},\"@prb/math/src/ud2x18/Casting.sol\":{\"keccak256\":\"0x0f3141ed054e7c29dbe1acb4b88b18eb05d60e998fba6b4e503a6799faa356d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1e2468fc4c458082aaf4aa2e35af9ba3702f207e3c8533dd1e7da11ad605eae\",\"dweb:/ipfs/QmSm7iRH1eo4cJCwcAiiXWRH9Hn1urSS4tMdbaFbFGuTyL\"]},\"@prb/math/src/ud2x18/Constants.sol\":{\"keccak256\":\"0x29b0e050c865899e1fb9022b460a7829cdee248c44c4299f068ba80695eec3fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbaef16b662fac235349bcf97bc980dd0cba15d4e6230caae61224cdac8ea6d9\",\"dweb:/ipfs/QmZQa5XBhi7k3yhtCd8wVpnwW8htfU4sjXxWhxRypMBYkC\"]},\"@prb/math/src/ud2x18/Errors.sol\":{\"keccak256\":\"0x3b27e2a57438cd30d9c130f84aace24d547e5ed58e8689691d7d92ad2db38ddd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841cf9fb45443899c6b659300bbf503c3fd2c1a1e83b7f0e28620eed457f7437\",\"dweb:/ipfs/QmUqg8WscP5yQPw3UMUCWaB9RLU6nryGzseuyhAjNnDc1i\"]},\"@prb/math/src/ud2x18/ValueType.sol\":{\"keccak256\":\"0x975a2e69b48f34a4c0bd80e8a5609ac67b7264c91992c0944f9ebe7b9e3fc9d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d012521c475295d7e70b7d526fcc0911d0f238ea938719d77251bba00c9b41\",\"dweb:/ipfs/QmexEvTQCCBPYRWAYnomZX5M7C2EkXQRAXqEYMNUZfazCs\"]},\"@prb/math/src/ud60x18/Casting.sol\":{\"keccak256\":\"0x0803318ddc98b4ba8fbfe70e5ee08d78387fe6ae00982b9960518085a751d7b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e68a2f780b2e33fa5416eb60f9daa81f014c2591119f4b67bed1217d5530780\",\"dweb:/ipfs/QmZe7JTWvbfKqMnu4sxUwWCtLcCay9hH71VZUpoFCdENcr\"]},\"@prb/math/src/ud60x18/Constants.sol\":{\"keccak256\":\"0x2b80d26153d3fdcfb3a9ca772d9309d31ed1275f5b8b54c3ffb54d3652b37d90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e3a6673a156f635db94dc176baaa7274db8f9bec4461cd1152596253550ee3b\",\"dweb:/ipfs/Qmc9zT4kNSbMYaXcnbxNVqmb3P3m46ieaQxkwxqLwsvRA5\"]},\"@prb/math/src/ud60x18/Conversions.sol\":{\"keccak256\":\"0xd486ecca97abe69acdb28230088f4c7097fbdae5b36c5ae45d5be2faac4c33f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6080870ec6955ff0f5278f9c480b218a68714daf5f2ee42da0276d08d7b82932\",\"dweb:/ipfs/QmQ1SERHdemJgPrt4USwY8j5r63jZ8fQuJAm1knjMEEQEY\"]},\"@prb/math/src/ud60x18/Errors.sol\":{\"keccak256\":\"0xbab6b0e303d32f3a9d9e2fe881f0392b8c59a73051a4d34f21a403b3961b3044\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86a019bcf2510d0691287329dc057479cc0abc48a5e15f245e7f15c03052d2c8\",\"dweb:/ipfs/QmeXe5pbpDHvN5DZ8puXmH2RJ25zDHj55wpiStWtNQPvq6\"]},\"@prb/math/src/ud60x18/Helpers.sol\":{\"keccak256\":\"0xf5faff881391d2c060029499a666cc5f0bea90a213150bb476fae8f02a5df268\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://76105fa22bb1b5f1fa99abf9c4fbc9577a02c7bc204f271754c407f0d75489f5\",\"dweb:/ipfs/QmVNGZSTniDuZus5DdbFubqJXCLtTaZit7YPm4ntjr5Lgr\"]},\"@prb/math/src/ud60x18/Math.sol\":{\"keccak256\":\"0xc4e51dfd9af62938e277e90fa724099f239d33727a35909ed48c292a76faf2fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d731537cbc50b852c21d28625aeb2c329729afc23a7b86ff9d8ee5878f47e9d6\",\"dweb:/ipfs/QmS7Cj4pAdPZcTp7RqYXyxBc9EYX92CT8icfkNigktUsLr\"]},\"@prb/math/src/ud60x18/ValueType.sol\":{\"keccak256\":\"0x1b200baf25d01a8b91b97b42114248636f742b5b7028487ef4daef6621e378a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5708ed017206bda2197654e80bea9f37b3a9993434bb066c903c2865e028f47\",\"dweb:/ipfs/QmTyotZk2J5YvWkNvB2qhXBMgRGWW2UgPqR4JPocrXSr8n\"]},\"contracts/facets/BondFacet.sol\":{\"keccak256\":\"0xb4e3a61aa4c7851eab5f88cf4f1d7c31cbe45f3ae5a1066ff1cab3ef9e91a123\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://a1cddffe5bae4e1ece66db51110a883a78cfa314e5808000fe541009a321ff1a\",\"dweb:/ipfs/QmSnsNZLmLWS9dLVzMwuF5rGieL47okb722eZ5xH6Gsjqu\"]},\"contracts/facets/BondStorage.sol\":{\"keccak256\":\"0x309fb35d407d76e4c52f9450ba5ca2a5a33e61f9a6491b0475549b8331063715\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://c3d0d639c7550e1a5ae03a1c8e55af981f7099aef468f23ae2a15772608f83d3\",\"dweb:/ipfs/QmVLf6By5sfY8S1Vz7XXnEVkEJtZSdZvWe5FAY1sTudRKQ\"]},\"contracts/facets/ERC1155Facet.sol\":{\"keccak256\":\"0x318c66c5f522cdac6907acbc1fbf4033be1b8631796d7589b0c1264a24602644\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://bfe8408141ec71d6b7221a9db0c3e0168551e5b23731138a55128d5288d38218\",\"dweb:/ipfs/QmU2JNfnD7hCePchoGiWh3tR2RD2n9sQpDA8PvfYtrgDZD\"]},\"contracts/facets/OwnershipFacet.sol\":{\"keccak256\":\"0x0f4b3ddcebde62df41c3646cdb54b3908d94a624c1d8bad46da4ac21b3f6702f\",\"urls\":[\"bzz-raw://73ae296c47d5ce73d2f568c992cf7c3ac612e92f9d144f5a5b8026a97e717c04\",\"dweb:/ipfs/QmZoBj7ZMd3oUptXw3f9aPJKypN4w7z472C4cgSe8E96Cr\"]},\"contracts/libraries/BokkyPooBahsDateTimeLibrary.sol\":{\"keccak256\":\"0xf4cbf156ed0c40d43ee1bd32de6c025dceefe9679ba54fe98bd2a2c83184a415\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://227ef653e9b0967ab18a6ef9d7ed5c542dde1e6a0f87194d517e9a94ee6a6c1e\",\"dweb:/ipfs/QmbJTB9YDavU7AeBNBJotP28uxe7k4XrabRpWzgvqVde6x\"]},\"contracts/libraries/StructBondInit.sol\":{\"keccak256\":\"0x7b76e4a8530dd06e68b69a1ecf133fae57662c77297c092359593190c30bbec5\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://88eae8ee0e2a668c3b529bde8215ac5cd1a9b8a63a31c890b002bc9675f90ef6\",\"dweb:/ipfs/QmTJbJNfyFv2vKqUoXBbNV8vHHhYyfioLVrzKSrL7AqqTx\"]}},\"version\":1}"
        }
      },
      "contracts/facets/BondManagerFacet.sol": {
        "BondManagerFacet": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                }
              ],
              "name": "BondTerminated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                }
              ],
              "name": "Cancelled",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                }
              ],
              "name": "cancel",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSelectors",
              "outputs": [
                {
                  "internalType": "bytes4[]",
                  "name": "",
                  "type": "bytes4[]"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                }
              ],
              "name": "terminate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601557610602908161001b8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806340e58ee5146102115780634b503f0b146100d857637a828b281461003d57600080fd5b346100d35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d3577fd94ffbadbddfbcd61c50dc6b5c62be103f13503104555027924343543fcd12626020600435602561009d82610319565b0163020000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff825416179055604051908152a1005b600080fd5b346100d35760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d3576040516101156060826102a9565b600281526020810160403682378151156101e2577f7a828b280000000000000000000000000000000000000000000000000000000081528151600110156101e257907f40e58ee50000000000000000000000000000000000000000000000000000000060408201526040519182916020830190602084525180915260408301919060005b8181106101a7575050500390f35b82517fffffffff0000000000000000000000000000000000000000000000000000000016845285945060209384019390920191600101610199565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b346100d35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d3577fc41d93b8bfbf9fd7cf5bfe271fd649ab6a6fec0ea101c23b82a2a28eca2533a96020600435601b61027182610319565b01650100000000007fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff825416179055604051908152a1005b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102ea57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80816000927a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000811015610567575b50806d04ee2d6d415b85acef8100000000600a92101561054c575b662386f26fc10000811015610538575b6305f5e100811015610527575b612710811015610518575b606481101561050a575b10156104ff575b600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602160018501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06104036103ed88610592565b976103fb604051998a6102a9565b808952610592565b013660208801378501015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a8353048015610468577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a919261040e565b505060405160208101917f73746f726167652e626f6e64000000000000000000000000000000000000000083528181519160005b8381106104e7575050806104e192602c920160008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826102a9565b51902090565b6020828201810151602c87840101528593500161049c565b600190910190610396565b60646002910493019261038f565b61271060049104930192610385565b6305f5e1006008910493019261037a565b662386f26fc100006010910493019261036d565b6d04ee2d6d415b85acef81000000006020910493019261035d565b604093507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a610342565b67ffffffffffffffff81116102ea57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166020019056fea26469706673582212205b750a5f5ac9019bf0d4465db076d694d54599b5420551c9cb2890f1a1f5de3964736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0x602 SWAP1 DUP2 PUSH2 0x1B DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40E58EE5 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x4B503F0B EQ PUSH2 0xD8 JUMPI PUSH4 0x7A828B28 EQ PUSH2 0x3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xD3 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD3 JUMPI PUSH32 0xD94FFBADBDDFBCD61C50DC6B5C62BE103F13503104555027924343543FCD1262 PUSH1 0x20 PUSH1 0x4 CALLDATALOAD PUSH1 0x25 PUSH2 0x9D DUP3 PUSH2 0x319 JUMP JUMPDEST ADD PUSH4 0x2000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xD3 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD3 JUMPI PUSH1 0x40 MLOAD PUSH2 0x115 PUSH1 0x60 DUP3 PUSH2 0x2A9 JUMP JUMPDEST PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH1 0x40 CALLDATASIZE DUP3 CALLDATACOPY DUP2 MLOAD ISZERO PUSH2 0x1E2 JUMPI PUSH32 0x7A828B2800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x1E2 JUMPI SWAP1 PUSH32 0x40E58EE500000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 PUSH1 0x20 DUP5 MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1A7 JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x199 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0xD3 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD3 JUMPI PUSH32 0xC41D93B8BFBF9FD7CF5BFE271FD649AB6A6FEC0EA101C23B82A2A28ECA2533A9 PUSH1 0x20 PUSH1 0x4 CALLDATALOAD PUSH1 0x1B PUSH2 0x271 DUP3 PUSH2 0x319 JUMP JUMPDEST ADD PUSH6 0x10000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2EA JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP2 PUSH1 0x0 SWAP3 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP2 LT ISZERO PUSH2 0x567 JUMPI JUMPDEST POP DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x54C JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x538 JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x527 JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x518 JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x50A JUMPI JUMPDEST LT ISZERO PUSH2 0x4FF JUMPI JUMPDEST PUSH1 0xA PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x21 PUSH1 0x1 DUP6 ADD SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x403 PUSH2 0x3ED DUP9 PUSH2 0x592 JUMP JUMPDEST SWAP8 PUSH2 0x3FB PUSH1 0x40 MLOAD SWAP10 DUP11 PUSH2 0x2A9 JUMP JUMPDEST DUP1 DUP10 MSTORE PUSH2 0x592 JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP9 ADD CALLDATACOPY DUP6 ADD ADD JUMPDEST ADD SWAP2 PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x468 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xA SWAP2 SWAP3 PUSH2 0x40E JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x73746F726167652E626F6E640000000000000000000000000000000000000000 DUP4 MSTORE DUP2 DUP2 MLOAD SWAP2 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x4E7 JUMPI POP POP DUP1 PUSH2 0x4E1 SWAP3 PUSH1 0x2C SWAP3 ADD PUSH1 0x0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x2A9 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP3 DUP3 ADD DUP2 ADD MLOAD PUSH1 0x2C DUP8 DUP5 ADD ADD MSTORE DUP6 SWAP4 POP ADD PUSH2 0x49C JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x396 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x38F JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x385 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x37A JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x36D JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x40 SWAP4 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 SWAP1 DIV SWAP1 POP PUSH1 0xA PUSH2 0x342 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2EA JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPDEST PUSH22 0xA5F5AC9019BF0D4465DB076D694D54599B5420551C9 0xCB 0x28 SWAP1 CALL LOG1 CREATE2 0xDE CODECOPY PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "152:918:56:-:0;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "array_allocation_size_string": {
                  "entryPoint": 1426,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "finalize_allocation": {
                  "entryPoint": 681,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_bondStorage": {
                  "entryPoint": 793,
                  "id": 18599,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436101561001257600080fd5b60003560e01c806340e58ee5146102115780634b503f0b146100d857637a828b281461003d57600080fd5b346100d35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d3577fd94ffbadbddfbcd61c50dc6b5c62be103f13503104555027924343543fcd12626020600435602561009d82610319565b0163020000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff825416179055604051908152a1005b600080fd5b346100d35760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d3576040516101156060826102a9565b600281526020810160403682378151156101e2577f7a828b280000000000000000000000000000000000000000000000000000000081528151600110156101e257907f40e58ee50000000000000000000000000000000000000000000000000000000060408201526040519182916020830190602084525180915260408301919060005b8181106101a7575050500390f35b82517fffffffff0000000000000000000000000000000000000000000000000000000016845285945060209384019390920191600101610199565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b346100d35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d3577fc41d93b8bfbf9fd7cf5bfe271fd649ab6a6fec0ea101c23b82a2a28eca2533a96020600435601b61027182610319565b01650100000000007fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff825416179055604051908152a1005b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102ea57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80816000927a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000811015610567575b50806d04ee2d6d415b85acef8100000000600a92101561054c575b662386f26fc10000811015610538575b6305f5e100811015610527575b612710811015610518575b606481101561050a575b10156104ff575b600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602160018501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06104036103ed88610592565b976103fb604051998a6102a9565b808952610592565b013660208801378501015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a8353048015610468577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a919261040e565b505060405160208101917f73746f726167652e626f6e64000000000000000000000000000000000000000083528181519160005b8381106104e7575050806104e192602c920160008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826102a9565b51902090565b6020828201810151602c87840101528593500161049c565b600190910190610396565b60646002910493019261038f565b61271060049104930192610385565b6305f5e1006008910493019261037a565b662386f26fc100006010910493019261036d565b6d04ee2d6d415b85acef81000000006020910493019261035d565b604093507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a610342565b67ffffffffffffffff81116102ea57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166020019056fea26469706673582212205b750a5f5ac9019bf0d4465db076d694d54599b5420551c9cb2890f1a1f5de3964736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40E58EE5 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x4B503F0B EQ PUSH2 0xD8 JUMPI PUSH4 0x7A828B28 EQ PUSH2 0x3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xD3 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD3 JUMPI PUSH32 0xD94FFBADBDDFBCD61C50DC6B5C62BE103F13503104555027924343543FCD1262 PUSH1 0x20 PUSH1 0x4 CALLDATALOAD PUSH1 0x25 PUSH2 0x9D DUP3 PUSH2 0x319 JUMP JUMPDEST ADD PUSH4 0x2000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xD3 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD3 JUMPI PUSH1 0x40 MLOAD PUSH2 0x115 PUSH1 0x60 DUP3 PUSH2 0x2A9 JUMP JUMPDEST PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH1 0x40 CALLDATASIZE DUP3 CALLDATACOPY DUP2 MLOAD ISZERO PUSH2 0x1E2 JUMPI PUSH32 0x7A828B2800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x1E2 JUMPI SWAP1 PUSH32 0x40E58EE500000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 PUSH1 0x20 DUP5 MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1A7 JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x199 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0xD3 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD3 JUMPI PUSH32 0xC41D93B8BFBF9FD7CF5BFE271FD649AB6A6FEC0EA101C23B82A2A28ECA2533A9 PUSH1 0x20 PUSH1 0x4 CALLDATALOAD PUSH1 0x1B PUSH2 0x271 DUP3 PUSH2 0x319 JUMP JUMPDEST ADD PUSH6 0x10000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2EA JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP2 PUSH1 0x0 SWAP3 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP2 LT ISZERO PUSH2 0x567 JUMPI JUMPDEST POP DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x54C JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x538 JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x527 JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x518 JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x50A JUMPI JUMPDEST LT ISZERO PUSH2 0x4FF JUMPI JUMPDEST PUSH1 0xA PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x21 PUSH1 0x1 DUP6 ADD SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x403 PUSH2 0x3ED DUP9 PUSH2 0x592 JUMP JUMPDEST SWAP8 PUSH2 0x3FB PUSH1 0x40 MLOAD SWAP10 DUP11 PUSH2 0x2A9 JUMP JUMPDEST DUP1 DUP10 MSTORE PUSH2 0x592 JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP9 ADD CALLDATACOPY DUP6 ADD ADD JUMPDEST ADD SWAP2 PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x468 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xA SWAP2 SWAP3 PUSH2 0x40E JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x73746F726167652E626F6E640000000000000000000000000000000000000000 DUP4 MSTORE DUP2 DUP2 MLOAD SWAP2 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x4E7 JUMPI POP POP DUP1 PUSH2 0x4E1 SWAP3 PUSH1 0x2C SWAP3 ADD PUSH1 0x0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x2A9 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP3 DUP3 ADD DUP2 ADD MLOAD PUSH1 0x2C DUP8 DUP5 ADD ADD MSTORE DUP6 SWAP4 POP ADD PUSH2 0x49C JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x396 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x38F JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x385 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x37A JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x36D JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x40 SWAP4 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 SWAP1 DIV SWAP1 POP PUSH1 0xA PUSH2 0x342 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2EA JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPDEST PUSH22 0xA5F5AC9019BF0D4465DB076D694D54599B5420551C9 0xCB 0x28 SWAP1 CALL LOG1 CREATE2 0xDE CODECOPY PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "152:918:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;458:23;152:918;;;398:21;368:20;;;:::i;:::-;398:21;152:918;;;;;;;;;;;;;458:23;152:918;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;916:1;152:918;;;;;;;;;;;;;;943:35;152:918;;;;998:1;152:918;;;;;1003:32;152:918;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;152:918:56;;;;;;;;;998:1;152:918;;;;;;;;;;;;;;;;;;;;;;;;770:18;152:918;;;680:24;580:20;;;:::i;:::-;680:24;152:918;;;;;;;;;;;;;770:18;152:918;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;152:918:56;;;;;-1:-1:-1;152:918:56;2387:241:58;2538:22;1430:17:15;-1:-1:-1;29282:17:18;29291:8;29282:17;;;29278:103;;2387:241:58;29398:17:18;;29407:8;29978:7;29398:17;;;29394:103;;2387:241:58;29523:8:18;29514:17;;;29510:103;;2387:241:58;29639:7:18;29630:16;;;29626:100;;2387:241:58;29752:7:18;29743:16;;;29739:100;;2387:241:58;29865:7:18;29856:16;;;29852:100;;2387:241:58;29969:16:18;;29965:66;;2387:241:58;29978:7:18;152:918:56;1545:94:15;1450:1;152:918:56;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;1545:94:15;;;1652:247;152:918:56;1706:111:15;;;;;;;;152:918:56;1867:10:15;;1863:21;;152:918:56;29978:7:18;1652:247:15;;;;1863:21;1879:5;;152:918:56;;;2505:56:58;;152:918:56;;;;;;;;-1:-1:-1;152:918:56;;;;;;;;;2505:56:58;152:918:56;;;;-1:-1:-1;152:918:56;;;;2505:56:58;;152:918:56;2505:56:58;;;;;;:::i;:::-;152:918:56;2495:67:58;;2387:241;:::o;152:918:56:-;;;;;;;;;;;;;;;;-1:-1:-1;152:918:56;;;29965:66:18;30015:1;152:918:56;;;;29965:66:18;;29852:100;29865:7;29936:1;152:918:56;;;;29852:100:18;;;29739;29752:7;29823:1;152:918:56;;;;29739:100:18;;;29626;29639:7;29710:1;152:918:56;;;;29626:100:18;;;29510:103;29523:8;29596:2;152:918:56;;;;29510:103:18;;;29394;29407:8;29480:2;152:918:56;;;;29394:103:18;;;29278;29364:2;;-1:-1:-1;29291:8:18;152:918:56;;;-1:-1:-1;29978:7:18;29278:103;;152:918:56;;;;;;;;;;;;;:::o"
            },
            "methodIdentifiers": {
              "cancel(uint256)": "40e58ee5",
              "getSelectors()": "4b503f0b",
              "terminate(uint256)": "7a828b28"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"}],\"name\":\"BondTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"}],\"name\":\"Cancelled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"}],\"name\":\"cancel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSelectors\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"}],\"name\":\"terminate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/BondManagerFacet.sol\":\"BondManagerFacet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"]},\"@prb/math/src/UD60x18.sol\":{\"keccak256\":\"0xb98c6f74275914d279e8af6c502c2b1f50d5f6e1ed418d3b0153f5a193206c48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a750edde2955f160806a51083a12185fb04e20efca0e3a7ebd127dc1acc049a9\",\"dweb:/ipfs/QmeAre3mThopoQPB9mSXZq6jck59QZ7JbDFR83urd2SLvp\"]},\"@prb/math/src/sd1x18/Casting.sol\":{\"keccak256\":\"0x5d365f655f01598926c5d4fe5cda277f2cc7736fe38f943c11a32009077ddd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b378bd6039819bc12e5f17dabd9492e1410b3281f9df496cf8210539101a11\",\"dweb:/ipfs/QmcMaE64ZWMg9cFhYxdTuG8nfzeDdNuTRHMMoFXi6tSZGu\"]},\"@prb/math/src/sd1x18/Constants.sol\":{\"keccak256\":\"0xc14cc32061863d83912f9616de86f3c34f1ac58614b7d504c6ce07ee8efdb8e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22483b1282dda6a556b0232f008a5a3296bbfd76b1886e6b72bf351b7c554fab\",\"dweb:/ipfs/QmYX9cYkrFxBbhZNKsb6uUxtrc2chmAj7vuc7UKRPGMwos\"]},\"@prb/math/src/sd1x18/Errors.sol\":{\"keccak256\":\"0xc3c8b1ab3d19889c356c222a3a2186d45dfc1d3a17b9ad88159bb64ee457baa6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84fbe57569246403f778330bd7723018dfcb5f0ec50d7b1d82cc983c94a54bca\",\"dweb:/ipfs/QmWssAAnovc2EVjt58rTnxraE9B1RMivwTvYCYgpnr6oSE\"]},\"@prb/math/src/sd1x18/ValueType.sol\":{\"keccak256\":\"0xaa9dc7b562faf45264390d80e2ea10c5295bb8a4f10d76261a3f9c04363734c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6ca36acd15f5cb47cf124ddec289f84e1011f2d29056159e4570435629a3353\",\"dweb:/ipfs/QmUKdiLmZpAkNCq2TKxrPbQPUhiRFXGfjGSnY1VeHVu4y6\"]},\"@prb/math/src/sd21x18/Casting.sol\":{\"keccak256\":\"0x4a16adddb9ab1f6939dd4567c77205015a11081cb840029b84bbb6fdaf78ee36\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5003b2f4cd2fc1413da36bc63107c6e83a88d29693e8f97b54f300fa78f9c6d2\",\"dweb:/ipfs/QmaNJn91NLrZmeeGqnFQV1FTrLVSW852zHyWTrWJ5pf1pd\"]},\"@prb/math/src/sd21x18/Constants.sol\":{\"keccak256\":\"0x501c2d5cfdea9450422182059c8df1cb6a859901a07bd59631c3fa24edcc79d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4669a65001c92919671fd879d33ce0e5030b602a7ba4d36bd2308128d8d1f396\",\"dweb:/ipfs/QmUC3bJ3qdkCmLMw3WHBcEqvuC4tExT2LXzUhgu5KQ3vi3\"]},\"@prb/math/src/sd21x18/Errors.sol\":{\"keccak256\":\"0xc5422ee47eb139274e538e758fb40177a1ba22c2113ef3b3446102f0150bfe0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1981e052e9e86e1b0e4e55a057a7af4739aedd4ead2d60e3eaa40fb703594ee\",\"dweb:/ipfs/QmPK5qSujnyk1R8ues4RhDMy1tRKKyjQ31YJTviTKq7GML\"]},\"@prb/math/src/sd21x18/ValueType.sol\":{\"keccak256\":\"0x532bba888370bed393464412f4ef3462d654802e71c953ad02d078e3d2701092\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://922a4e8dd813602f72d165aa1dfdf2c29b971a2abe73bebca7cd81a32ee2c880\",\"dweb:/ipfs/QmTBAJnx1r3sZpbQAuTgQtsTtvjZbpDwhCJRzkhzUumbdf\"]},\"@prb/math/src/sd59x18/Casting.sol\":{\"keccak256\":\"0xdf70d8e70c6d6325f3f7eb028c484bc7189ef902f1d4b5b220af2e550bb5fc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0b15bcd36129c5cb163d57a117435afb171182018dd6d1e766a5f49cf1f4b63d\",\"dweb:/ipfs/QmbjzkMBH4FM2rdxGbx9LQ65wVERijNcu7R9C8dQmH3y4n\"]},\"@prb/math/src/sd59x18/Constants.sol\":{\"keccak256\":\"0x9bcb8dd6b3e886d140ad1c32747a4f6d29a492529ceb835be878ae837aa6cc3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4045c633e3618e7e90a768d92415b2f20f781fe129b4f4e26fa88f7dbf9201f\",\"dweb:/ipfs/Qmbet95pizwPno82cJ383wJtgQRSQKESmhVZ1vDrgAu7Si\"]},\"@prb/math/src/sd59x18/Errors.sol\":{\"keccak256\":\"0x0a79c28c85fc8a450b0801ff2e66114eac4ec565819f5d1d8738904658fe33e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e0d4fd3c998019fb8555d9e26c03bec42a8513bdf4185aeac2da3a000abaebf\",\"dweb:/ipfs/QmahFJHXcX4RwPxaQbUf6LVZEk8NSpjCV3Eif7i9iqC6Mk\"]},\"@prb/math/src/sd59x18/Helpers.sol\":{\"keccak256\":\"0x208570f1657cf730cb6c3d81aa14030e0d45cf906cdedea5059369d7df4bb716\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c78ca900edafa9338d4e3649a55ab0c84f76468d8a22fb945ba6d01e70f8fed\",\"dweb:/ipfs/QmeP4hQYfNxcATd1FsasdD4ebyu2vrC9K1N68swxUJzzZD\"]},\"@prb/math/src/sd59x18/Math.sol\":{\"keccak256\":\"0xd8e8b51db9b3e2fa31a60f6b8ce4ea0112c3364442ede5992aa0aa7a2c925c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c56913970e34ee7b142047b21f1856a511cbdc3473b7c50418a8490e19cd462\",\"dweb:/ipfs/QmfG1F9CBDjPYD7NXora9awFfdpvBMY9SCg5pMLCFRv9tD\"]},\"@prb/math/src/sd59x18/ValueType.sol\":{\"keccak256\":\"0x76597ba64d37d66e0178512bc9bbc1a031a7634c45e5d5c6e9da87f46952dc9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36148899ad874814e9292636fb974d2eec61f1bcc0875ec39cf444d70ba40919\",\"dweb:/ipfs/QmadUe4kH2FPcdxvhCKy8yiezCvPWor4VcPzqLYSAaGDDb\"]},\"@prb/math/src/ud21x18/Casting.sol\":{\"keccak256\":\"0x3821aa57604f6e5b7c9c5c5cc97a6d71116e673cf3fee5f76fcd42b4cefded65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a80399c6b38ab45cc10d0a6683d50340cd89d9a085b6d0dcfb81e7c4e5b3ce09\",\"dweb:/ipfs/QmWNW2YD2LMkqrpAtJYeeuHN329Rx7mvfmrjsCo1p6akTL\"]},\"@prb/math/src/ud21x18/Constants.sol\":{\"keccak256\":\"0x0997574a1ced6c43bde6d9c9175edc5ad64cbb920a0969a9db68eea543747601\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c09f03345a6779b002b38ffc3954258accbb2b1d0d5506d42c3bd7f117304f60\",\"dweb:/ipfs/QmTeBXRCE7H2HpqKUNsZN7Nk3rdBnFmbAUFom3E1PJeGuV\"]},\"@prb/math/src/ud21x18/Errors.sol\":{\"keccak256\":\"0x35a1fb789b90f8c90865884d3023deb17fcca5c7146b5ddef823496d835a5415\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0af359d07ba25bdc90de7c05ed6216833932caa75d4a02fcfc51ceeaba5a4e80\",\"dweb:/ipfs/QmavBFw73Xfp1qJiN6P1gk2Dfr8ByWo3dyCPVgDHtko2gq\"]},\"@prb/math/src/ud21x18/ValueType.sol\":{\"keccak256\":\"0x24838b2b1da371b9259d8ee21534a9f0cb5796aba75a4efca2374627952bee25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://897e6b79308651671c7f3c91a0069e778b47356c9ba3f86e238398ab7f2623af\",\"dweb:/ipfs/QmZbLw3tJVRZFQnV9jWQUmF43gna841adSG2TAiwDAifGU\"]},\"@prb/math/src/ud2x18/Casting.sol\":{\"keccak256\":\"0x0f3141ed054e7c29dbe1acb4b88b18eb05d60e998fba6b4e503a6799faa356d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1e2468fc4c458082aaf4aa2e35af9ba3702f207e3c8533dd1e7da11ad605eae\",\"dweb:/ipfs/QmSm7iRH1eo4cJCwcAiiXWRH9Hn1urSS4tMdbaFbFGuTyL\"]},\"@prb/math/src/ud2x18/Constants.sol\":{\"keccak256\":\"0x29b0e050c865899e1fb9022b460a7829cdee248c44c4299f068ba80695eec3fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbaef16b662fac235349bcf97bc980dd0cba15d4e6230caae61224cdac8ea6d9\",\"dweb:/ipfs/QmZQa5XBhi7k3yhtCd8wVpnwW8htfU4sjXxWhxRypMBYkC\"]},\"@prb/math/src/ud2x18/Errors.sol\":{\"keccak256\":\"0x3b27e2a57438cd30d9c130f84aace24d547e5ed58e8689691d7d92ad2db38ddd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841cf9fb45443899c6b659300bbf503c3fd2c1a1e83b7f0e28620eed457f7437\",\"dweb:/ipfs/QmUqg8WscP5yQPw3UMUCWaB9RLU6nryGzseuyhAjNnDc1i\"]},\"@prb/math/src/ud2x18/ValueType.sol\":{\"keccak256\":\"0x975a2e69b48f34a4c0bd80e8a5609ac67b7264c91992c0944f9ebe7b9e3fc9d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d012521c475295d7e70b7d526fcc0911d0f238ea938719d77251bba00c9b41\",\"dweb:/ipfs/QmexEvTQCCBPYRWAYnomZX5M7C2EkXQRAXqEYMNUZfazCs\"]},\"@prb/math/src/ud60x18/Casting.sol\":{\"keccak256\":\"0x0803318ddc98b4ba8fbfe70e5ee08d78387fe6ae00982b9960518085a751d7b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e68a2f780b2e33fa5416eb60f9daa81f014c2591119f4b67bed1217d5530780\",\"dweb:/ipfs/QmZe7JTWvbfKqMnu4sxUwWCtLcCay9hH71VZUpoFCdENcr\"]},\"@prb/math/src/ud60x18/Constants.sol\":{\"keccak256\":\"0x2b80d26153d3fdcfb3a9ca772d9309d31ed1275f5b8b54c3ffb54d3652b37d90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e3a6673a156f635db94dc176baaa7274db8f9bec4461cd1152596253550ee3b\",\"dweb:/ipfs/Qmc9zT4kNSbMYaXcnbxNVqmb3P3m46ieaQxkwxqLwsvRA5\"]},\"@prb/math/src/ud60x18/Conversions.sol\":{\"keccak256\":\"0xd486ecca97abe69acdb28230088f4c7097fbdae5b36c5ae45d5be2faac4c33f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6080870ec6955ff0f5278f9c480b218a68714daf5f2ee42da0276d08d7b82932\",\"dweb:/ipfs/QmQ1SERHdemJgPrt4USwY8j5r63jZ8fQuJAm1knjMEEQEY\"]},\"@prb/math/src/ud60x18/Errors.sol\":{\"keccak256\":\"0xbab6b0e303d32f3a9d9e2fe881f0392b8c59a73051a4d34f21a403b3961b3044\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86a019bcf2510d0691287329dc057479cc0abc48a5e15f245e7f15c03052d2c8\",\"dweb:/ipfs/QmeXe5pbpDHvN5DZ8puXmH2RJ25zDHj55wpiStWtNQPvq6\"]},\"@prb/math/src/ud60x18/Helpers.sol\":{\"keccak256\":\"0xf5faff881391d2c060029499a666cc5f0bea90a213150bb476fae8f02a5df268\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://76105fa22bb1b5f1fa99abf9c4fbc9577a02c7bc204f271754c407f0d75489f5\",\"dweb:/ipfs/QmVNGZSTniDuZus5DdbFubqJXCLtTaZit7YPm4ntjr5Lgr\"]},\"@prb/math/src/ud60x18/Math.sol\":{\"keccak256\":\"0xc4e51dfd9af62938e277e90fa724099f239d33727a35909ed48c292a76faf2fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d731537cbc50b852c21d28625aeb2c329729afc23a7b86ff9d8ee5878f47e9d6\",\"dweb:/ipfs/QmS7Cj4pAdPZcTp7RqYXyxBc9EYX92CT8icfkNigktUsLr\"]},\"@prb/math/src/ud60x18/ValueType.sol\":{\"keccak256\":\"0x1b200baf25d01a8b91b97b42114248636f742b5b7028487ef4daef6621e378a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5708ed017206bda2197654e80bea9f37b3a9993434bb066c903c2865e028f47\",\"dweb:/ipfs/QmTyotZk2J5YvWkNvB2qhXBMgRGWW2UgPqR4JPocrXSr8n\"]},\"contracts/facets/BondManagerFacet.sol\":{\"keccak256\":\"0x11a5153b8769b0367c29ba172269450e2baaeccbf1a23343585da2563865cd70\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://dd399187a7c471542a534b229bfc9a760f562fb48e0d56816c07cf8ddcb89936\",\"dweb:/ipfs/QmZ2JfJfM84xP2vvUwYTYJYYjXopwnE9AQesWfzLkTXFgP\"]},\"contracts/facets/BondStorage.sol\":{\"keccak256\":\"0x309fb35d407d76e4c52f9450ba5ca2a5a33e61f9a6491b0475549b8331063715\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://c3d0d639c7550e1a5ae03a1c8e55af981f7099aef468f23ae2a15772608f83d3\",\"dweb:/ipfs/QmVLf6By5sfY8S1Vz7XXnEVkEJtZSdZvWe5FAY1sTudRKQ\"]}},\"version\":1}"
        }
      },
      "contracts/facets/BondReaderFacet.sol": {
        "BondReaderFacet": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                }
              ],
              "name": "getCouponsDates",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                }
              ],
              "name": "getCouponsRates",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSelectors",
              "outputs": [
                {
                  "internalType": "bytes4[]",
                  "name": "",
                  "type": "bytes4[]"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608080604052346015576109dc908161001b8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80634b503f0b1461044e578063a8314de7146101915763c89fa5701461003d57600080fd5b3461018c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c576100776004356106be565b601c810180549061008782610657565b9161009181610657565b90601f8501946100a18654610657565b9560208201916100b18354610657565b95601e60009201915b858110610113576100e58961010f8a6101018e6100f38d604051978897608089526080890190610587565b908782036020890152610587565b908582036040870152610587565b908382036060850152610587565b0390f35b80610120600192846106a6565b90549060031b1c610131828c610643565b5261013c81856106a6565b90549060031b1c61014d828a610643565b5261015881866106a6565b90549060031b1c610169828d610643565b5261017481876106a6565b90549060031b1c610185828b610643565b52016100ba565b600080fd5b3461018c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c57601d6101cd6004356106be565b018054906101da82610657565b906101e483610657565b926101ee81610657565b9160005b828110610235576102198561010f866102278a604051958695606087526060870190610587565b908582036020870152610587565b908382036040850152610587565b6201518061024382846106a6565b90549060031b1c049062010bd982019162010bd983126000821290801582169115161761041f57622649650191600062253d8c8412911290801582169115161761041f578160021b60048105830361041f5762023ab19005918262023ab1029062023ab18205840361041f576003820191600060038412911290801582169115161761041f5760046102d692059061098d565b60018101600181126000831290801582169115161761041f5780610fa00290610fa082050361041f5762164b09900590816105b502906105b58205830361041f57600461032492059061098d565b601f8101906000601f8312911290801582169115161761041f578060500260508105820361041f5761098f9005908161098f029061098f8205830361041f57605061037092059061098d565b91600b8205916002810190600060028312911290801582169115161761041f5782600c02600c8105840361041f576103a79161098d565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf860195861360011661041f578560640295606487050361041f576103f26103f792600197610971565b610971565b91610402848a610643565b5261040d838a610643565b526104188287610643565b52016101f2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b3461018c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c5760405161048b6060826105bb565b60028152602081016040368237815115610558577fa8314de700000000000000000000000000000000000000000000000000000000815281516001101561055857907fc89fa5700000000000000000000000000000000000000000000000000000000060408201526040519182916020830190602084525180915260408301919060005b81811061051d575050500390f35b82517fffffffff000000000000000000000000000000000000000000000000000000001684528594506020938401939092019160010161050f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906020808351928381520192019060005b8181106105a55750505090565b8251845260209384019390920191600101610598565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176105fc57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff81116105fc5760051b60200190565b80518210156105585760209160051b010190565b906106618261062b565b61066e60405191826105bb565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061069c829461062b565b0190602036910137565b80548210156105585760005260206000200190600090565b80816000927a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000081101561090c575b50806d04ee2d6d415b85acef8100000000600a9210156108f1575b662386f26fc100008110156108dd575b6305f5e1008110156108cc575b6127108110156108bd575b60648110156108af575b10156108a4575b600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602160018501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06107a861079288610937565b976107a0604051998a6105bb565b808952610937565b013660208801378501015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a835304801561080d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a91926107b3565b505060405160208101917f73746f726167652e626f6e64000000000000000000000000000000000000000083528181519160005b83811061088c5750508061088692602c920160008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105bb565b51902090565b6020828201810151602c878401015285935001610841565b60019091019061073b565b606460029104930192610734565b6127106004910493019261072a565b6305f5e1006008910493019261071f565b662386f26fc1000060109104930192610712565b6d04ee2d6d415b85acef810000000060209104930192610702565b604093507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a6106e7565b67ffffffffffffffff81116105fc57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9190916000838201938412911290801582169115161761041f57565b8181039291600013801582851316918412161761041f5756fea2646970667358221220e2c040f5e5e08a62921aeea864653db25d4f926a6be23762fa715baae6382eba64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0x9DC SWAP1 DUP2 PUSH2 0x1B DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4B503F0B EQ PUSH2 0x44E JUMPI DUP1 PUSH4 0xA8314DE7 EQ PUSH2 0x191 JUMPI PUSH4 0xC89FA570 EQ PUSH2 0x3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x18C JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x18C JUMPI PUSH2 0x77 PUSH1 0x4 CALLDATALOAD PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x1C DUP2 ADD DUP1 SLOAD SWAP1 PUSH2 0x87 DUP3 PUSH2 0x657 JUMP JUMPDEST SWAP2 PUSH2 0x91 DUP2 PUSH2 0x657 JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP6 ADD SWAP5 PUSH2 0xA1 DUP7 SLOAD PUSH2 0x657 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP3 ADD SWAP2 PUSH2 0xB1 DUP4 SLOAD PUSH2 0x657 JUMP JUMPDEST SWAP6 PUSH1 0x1E PUSH1 0x0 SWAP3 ADD SWAP2 JUMPDEST DUP6 DUP2 LT PUSH2 0x113 JUMPI PUSH2 0xE5 DUP10 PUSH2 0x10F DUP11 PUSH2 0x101 DUP15 PUSH2 0xF3 DUP14 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP8 PUSH1 0x80 DUP10 MSTORE PUSH1 0x80 DUP10 ADD SWAP1 PUSH2 0x587 JUMP JUMPDEST SWAP1 DUP8 DUP3 SUB PUSH1 0x20 DUP10 ADD MSTORE PUSH2 0x587 JUMP JUMPDEST SWAP1 DUP6 DUP3 SUB PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x587 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x587 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP1 PUSH2 0x120 PUSH1 0x1 SWAP3 DUP5 PUSH2 0x6A6 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH2 0x131 DUP3 DUP13 PUSH2 0x643 JUMP JUMPDEST MSTORE PUSH2 0x13C DUP2 DUP6 PUSH2 0x6A6 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH2 0x14D DUP3 DUP11 PUSH2 0x643 JUMP JUMPDEST MSTORE PUSH2 0x158 DUP2 DUP7 PUSH2 0x6A6 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH2 0x169 DUP3 DUP14 PUSH2 0x643 JUMP JUMPDEST MSTORE PUSH2 0x174 DUP2 DUP8 PUSH2 0x6A6 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH2 0x185 DUP3 DUP12 PUSH2 0x643 JUMP JUMPDEST MSTORE ADD PUSH2 0xBA JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x18C JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x18C JUMPI PUSH1 0x1D PUSH2 0x1CD PUSH1 0x4 CALLDATALOAD PUSH2 0x6BE JUMP JUMPDEST ADD DUP1 SLOAD SWAP1 PUSH2 0x1DA DUP3 PUSH2 0x657 JUMP JUMPDEST SWAP1 PUSH2 0x1E4 DUP4 PUSH2 0x657 JUMP JUMPDEST SWAP3 PUSH2 0x1EE DUP2 PUSH2 0x657 JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x235 JUMPI PUSH2 0x219 DUP6 PUSH2 0x10F DUP7 PUSH2 0x227 DUP11 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH1 0x60 DUP8 MSTORE PUSH1 0x60 DUP8 ADD SWAP1 PUSH2 0x587 JUMP JUMPDEST SWAP1 DUP6 DUP3 SUB PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x587 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x587 JUMP JUMPDEST PUSH3 0x15180 PUSH2 0x243 DUP3 DUP5 PUSH2 0x6A6 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR DIV SWAP1 PUSH3 0x10BD9 DUP3 ADD SWAP2 PUSH3 0x10BD9 DUP4 SLT PUSH1 0x0 DUP3 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x41F JUMPI PUSH3 0x264965 ADD SWAP2 PUSH1 0x0 PUSH3 0x253D8C DUP5 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x41F JUMPI DUP2 PUSH1 0x2 SHL PUSH1 0x4 DUP2 SDIV DUP4 SUB PUSH2 0x41F JUMPI PUSH3 0x23AB1 SWAP1 SDIV SWAP2 DUP3 PUSH3 0x23AB1 MUL SWAP1 PUSH3 0x23AB1 DUP3 SDIV DUP5 SUB PUSH2 0x41F JUMPI PUSH1 0x3 DUP3 ADD SWAP2 PUSH1 0x0 PUSH1 0x3 DUP5 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x41F JUMPI PUSH1 0x4 PUSH2 0x2D6 SWAP3 SDIV SWAP1 PUSH2 0x98D JUMP JUMPDEST PUSH1 0x1 DUP2 ADD PUSH1 0x1 DUP2 SLT PUSH1 0x0 DUP4 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x41F JUMPI DUP1 PUSH2 0xFA0 MUL SWAP1 PUSH2 0xFA0 DUP3 SDIV SUB PUSH2 0x41F JUMPI PUSH3 0x164B09 SWAP1 SDIV SWAP1 DUP2 PUSH2 0x5B5 MUL SWAP1 PUSH2 0x5B5 DUP3 SDIV DUP4 SUB PUSH2 0x41F JUMPI PUSH1 0x4 PUSH2 0x324 SWAP3 SDIV SWAP1 PUSH2 0x98D JUMP JUMPDEST PUSH1 0x1F DUP2 ADD SWAP1 PUSH1 0x0 PUSH1 0x1F DUP4 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x41F JUMPI DUP1 PUSH1 0x50 MUL PUSH1 0x50 DUP2 SDIV DUP3 SUB PUSH2 0x41F JUMPI PUSH2 0x98F SWAP1 SDIV SWAP1 DUP2 PUSH2 0x98F MUL SWAP1 PUSH2 0x98F DUP3 SDIV DUP4 SUB PUSH2 0x41F JUMPI PUSH1 0x50 PUSH2 0x370 SWAP3 SDIV SWAP1 PUSH2 0x98D JUMP JUMPDEST SWAP2 PUSH1 0xB DUP3 SDIV SWAP2 PUSH1 0x2 DUP2 ADD SWAP1 PUSH1 0x0 PUSH1 0x2 DUP4 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x41F JUMPI DUP3 PUSH1 0xC MUL PUSH1 0xC DUP2 SDIV DUP5 SUB PUSH2 0x41F JUMPI PUSH2 0x3A7 SWAP2 PUSH2 0x98D JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF DUP7 ADD SWAP6 DUP7 SGT PUSH1 0x1 AND PUSH2 0x41F JUMPI DUP6 PUSH1 0x64 MUL SWAP6 PUSH1 0x64 DUP8 SDIV SUB PUSH2 0x41F JUMPI PUSH2 0x3F2 PUSH2 0x3F7 SWAP3 PUSH1 0x1 SWAP8 PUSH2 0x971 JUMP JUMPDEST PUSH2 0x971 JUMP JUMPDEST SWAP2 PUSH2 0x402 DUP5 DUP11 PUSH2 0x643 JUMP JUMPDEST MSTORE PUSH2 0x40D DUP4 DUP11 PUSH2 0x643 JUMP JUMPDEST MSTORE PUSH2 0x418 DUP3 DUP8 PUSH2 0x643 JUMP JUMPDEST MSTORE ADD PUSH2 0x1F2 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x18C JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x18C JUMPI PUSH1 0x40 MLOAD PUSH2 0x48B PUSH1 0x60 DUP3 PUSH2 0x5BB JUMP JUMPDEST PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH1 0x40 CALLDATASIZE DUP3 CALLDATACOPY DUP2 MLOAD ISZERO PUSH2 0x558 JUMPI PUSH32 0xA8314DE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x558 JUMPI SWAP1 PUSH32 0xC89FA57000000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 PUSH1 0x20 DUP5 MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x51D JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x50F JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x20 DUP1 DUP4 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x5A5 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x598 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x5FC JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x5FC JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x558 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x661 DUP3 PUSH2 0x62B JUMP JUMPDEST PUSH2 0x66E PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x5BB JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x69C DUP3 SWAP5 PUSH2 0x62B JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST DUP1 SLOAD DUP3 LT ISZERO PUSH2 0x558 JUMPI PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 PUSH1 0x0 SWAP1 JUMP JUMPDEST DUP1 DUP2 PUSH1 0x0 SWAP3 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP2 LT ISZERO PUSH2 0x90C JUMPI JUMPDEST POP DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x8F1 JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x8DD JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x8CC JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x8BD JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x8AF JUMPI JUMPDEST LT ISZERO PUSH2 0x8A4 JUMPI JUMPDEST PUSH1 0xA PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x21 PUSH1 0x1 DUP6 ADD SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x7A8 PUSH2 0x792 DUP9 PUSH2 0x937 JUMP JUMPDEST SWAP8 PUSH2 0x7A0 PUSH1 0x40 MLOAD SWAP10 DUP11 PUSH2 0x5BB JUMP JUMPDEST DUP1 DUP10 MSTORE PUSH2 0x937 JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP9 ADD CALLDATACOPY DUP6 ADD ADD JUMPDEST ADD SWAP2 PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x80D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xA SWAP2 SWAP3 PUSH2 0x7B3 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x73746F726167652E626F6E640000000000000000000000000000000000000000 DUP4 MSTORE DUP2 DUP2 MLOAD SWAP2 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x88C JUMPI POP POP DUP1 PUSH2 0x886 SWAP3 PUSH1 0x2C SWAP3 ADD PUSH1 0x0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x5BB JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP3 DUP3 ADD DUP2 ADD MLOAD PUSH1 0x2C DUP8 DUP5 ADD ADD MSTORE DUP6 SWAP4 POP ADD PUSH2 0x841 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x73B JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x734 JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x72A JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x71F JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x712 JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x702 JUMP JUMPDEST PUSH1 0x40 SWAP4 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 SWAP1 DIV SWAP1 POP PUSH1 0xA PUSH2 0x6E7 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x5FC JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x0 DUP4 DUP3 ADD SWAP4 DUP5 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x41F JUMPI JUMP JUMPDEST DUP2 DUP2 SUB SWAP3 SWAP2 PUSH1 0x0 SGT DUP1 ISZERO DUP3 DUP6 SGT AND SWAP2 DUP5 SLT AND OR PUSH2 0x41F JUMPI JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE2 0xC0 BLOCKHASH CREATE2 0xE5 0xE0 DUP11 PUSH3 0x921AEE 0xA8 PUSH5 0x653DB25D4F SWAP3 PUSH11 0x6BE23762FA715BAAE6382E 0xBA PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "244:2169:57:-:0;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "abi_encode_array_uint256_dyn": {
                  "entryPoint": 1415,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_array_array_uint256_dyn": {
                  "entryPoint": 1623,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_array_bytes4_dyn": {
                  "entryPoint": 1579,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_string": {
                  "entryPoint": 2359,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_int256": {
                  "entryPoint": 2417,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_int256": {
                  "entryPoint": 2445,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "finalize_allocation": {
                  "entryPoint": 1467,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_bondStorage": {
                  "entryPoint": 1726,
                  "id": 18599,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "memory_array_index_access_bytes4_dyn": {
                  "entryPoint": 1603,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "storage_array_index_access_uint256_dyn": {
                  "entryPoint": 1702,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                }
              },
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436101561001257600080fd5b60003560e01c80634b503f0b1461044e578063a8314de7146101915763c89fa5701461003d57600080fd5b3461018c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c576100776004356106be565b601c810180549061008782610657565b9161009181610657565b90601f8501946100a18654610657565b9560208201916100b18354610657565b95601e60009201915b858110610113576100e58961010f8a6101018e6100f38d604051978897608089526080890190610587565b908782036020890152610587565b908582036040870152610587565b908382036060850152610587565b0390f35b80610120600192846106a6565b90549060031b1c610131828c610643565b5261013c81856106a6565b90549060031b1c61014d828a610643565b5261015881866106a6565b90549060031b1c610169828d610643565b5261017481876106a6565b90549060031b1c610185828b610643565b52016100ba565b600080fd5b3461018c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c57601d6101cd6004356106be565b018054906101da82610657565b906101e483610657565b926101ee81610657565b9160005b828110610235576102198561010f866102278a604051958695606087526060870190610587565b908582036020870152610587565b908382036040850152610587565b6201518061024382846106a6565b90549060031b1c049062010bd982019162010bd983126000821290801582169115161761041f57622649650191600062253d8c8412911290801582169115161761041f578160021b60048105830361041f5762023ab19005918262023ab1029062023ab18205840361041f576003820191600060038412911290801582169115161761041f5760046102d692059061098d565b60018101600181126000831290801582169115161761041f5780610fa00290610fa082050361041f5762164b09900590816105b502906105b58205830361041f57600461032492059061098d565b601f8101906000601f8312911290801582169115161761041f578060500260508105820361041f5761098f9005908161098f029061098f8205830361041f57605061037092059061098d565b91600b8205916002810190600060028312911290801582169115161761041f5782600c02600c8105840361041f576103a79161098d565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf860195861360011661041f578560640295606487050361041f576103f26103f792600197610971565b610971565b91610402848a610643565b5261040d838a610643565b526104188287610643565b52016101f2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b3461018c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c5760405161048b6060826105bb565b60028152602081016040368237815115610558577fa8314de700000000000000000000000000000000000000000000000000000000815281516001101561055857907fc89fa5700000000000000000000000000000000000000000000000000000000060408201526040519182916020830190602084525180915260408301919060005b81811061051d575050500390f35b82517fffffffff000000000000000000000000000000000000000000000000000000001684528594506020938401939092019160010161050f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906020808351928381520192019060005b8181106105a55750505090565b8251845260209384019390920191600101610598565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176105fc57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff81116105fc5760051b60200190565b80518210156105585760209160051b010190565b906106618261062b565b61066e60405191826105bb565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061069c829461062b565b0190602036910137565b80548210156105585760005260206000200190600090565b80816000927a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000081101561090c575b50806d04ee2d6d415b85acef8100000000600a9210156108f1575b662386f26fc100008110156108dd575b6305f5e1008110156108cc575b6127108110156108bd575b60648110156108af575b10156108a4575b600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602160018501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06107a861079288610937565b976107a0604051998a6105bb565b808952610937565b013660208801378501015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a835304801561080d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a91926107b3565b505060405160208101917f73746f726167652e626f6e64000000000000000000000000000000000000000083528181519160005b83811061088c5750508061088692602c920160008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105bb565b51902090565b6020828201810151602c878401015285935001610841565b60019091019061073b565b606460029104930192610734565b6127106004910493019261072a565b6305f5e1006008910493019261071f565b662386f26fc1000060109104930192610712565b6d04ee2d6d415b85acef810000000060209104930192610702565b604093507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a6106e7565b67ffffffffffffffff81116105fc57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9190916000838201938412911290801582169115161761041f57565b8181039291600013801582851316918412161761041f5756fea2646970667358221220e2c040f5e5e08a62921aeea864653db25d4f926a6be23762fa715baae6382eba64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4B503F0B EQ PUSH2 0x44E JUMPI DUP1 PUSH4 0xA8314DE7 EQ PUSH2 0x191 JUMPI PUSH4 0xC89FA570 EQ PUSH2 0x3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x18C JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x18C JUMPI PUSH2 0x77 PUSH1 0x4 CALLDATALOAD PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x1C DUP2 ADD DUP1 SLOAD SWAP1 PUSH2 0x87 DUP3 PUSH2 0x657 JUMP JUMPDEST SWAP2 PUSH2 0x91 DUP2 PUSH2 0x657 JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP6 ADD SWAP5 PUSH2 0xA1 DUP7 SLOAD PUSH2 0x657 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP3 ADD SWAP2 PUSH2 0xB1 DUP4 SLOAD PUSH2 0x657 JUMP JUMPDEST SWAP6 PUSH1 0x1E PUSH1 0x0 SWAP3 ADD SWAP2 JUMPDEST DUP6 DUP2 LT PUSH2 0x113 JUMPI PUSH2 0xE5 DUP10 PUSH2 0x10F DUP11 PUSH2 0x101 DUP15 PUSH2 0xF3 DUP14 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP8 PUSH1 0x80 DUP10 MSTORE PUSH1 0x80 DUP10 ADD SWAP1 PUSH2 0x587 JUMP JUMPDEST SWAP1 DUP8 DUP3 SUB PUSH1 0x20 DUP10 ADD MSTORE PUSH2 0x587 JUMP JUMPDEST SWAP1 DUP6 DUP3 SUB PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x587 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x587 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP1 PUSH2 0x120 PUSH1 0x1 SWAP3 DUP5 PUSH2 0x6A6 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH2 0x131 DUP3 DUP13 PUSH2 0x643 JUMP JUMPDEST MSTORE PUSH2 0x13C DUP2 DUP6 PUSH2 0x6A6 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH2 0x14D DUP3 DUP11 PUSH2 0x643 JUMP JUMPDEST MSTORE PUSH2 0x158 DUP2 DUP7 PUSH2 0x6A6 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH2 0x169 DUP3 DUP14 PUSH2 0x643 JUMP JUMPDEST MSTORE PUSH2 0x174 DUP2 DUP8 PUSH2 0x6A6 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH2 0x185 DUP3 DUP12 PUSH2 0x643 JUMP JUMPDEST MSTORE ADD PUSH2 0xBA JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x18C JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x18C JUMPI PUSH1 0x1D PUSH2 0x1CD PUSH1 0x4 CALLDATALOAD PUSH2 0x6BE JUMP JUMPDEST ADD DUP1 SLOAD SWAP1 PUSH2 0x1DA DUP3 PUSH2 0x657 JUMP JUMPDEST SWAP1 PUSH2 0x1E4 DUP4 PUSH2 0x657 JUMP JUMPDEST SWAP3 PUSH2 0x1EE DUP2 PUSH2 0x657 JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x235 JUMPI PUSH2 0x219 DUP6 PUSH2 0x10F DUP7 PUSH2 0x227 DUP11 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH1 0x60 DUP8 MSTORE PUSH1 0x60 DUP8 ADD SWAP1 PUSH2 0x587 JUMP JUMPDEST SWAP1 DUP6 DUP3 SUB PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x587 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x587 JUMP JUMPDEST PUSH3 0x15180 PUSH2 0x243 DUP3 DUP5 PUSH2 0x6A6 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR DIV SWAP1 PUSH3 0x10BD9 DUP3 ADD SWAP2 PUSH3 0x10BD9 DUP4 SLT PUSH1 0x0 DUP3 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x41F JUMPI PUSH3 0x264965 ADD SWAP2 PUSH1 0x0 PUSH3 0x253D8C DUP5 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x41F JUMPI DUP2 PUSH1 0x2 SHL PUSH1 0x4 DUP2 SDIV DUP4 SUB PUSH2 0x41F JUMPI PUSH3 0x23AB1 SWAP1 SDIV SWAP2 DUP3 PUSH3 0x23AB1 MUL SWAP1 PUSH3 0x23AB1 DUP3 SDIV DUP5 SUB PUSH2 0x41F JUMPI PUSH1 0x3 DUP3 ADD SWAP2 PUSH1 0x0 PUSH1 0x3 DUP5 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x41F JUMPI PUSH1 0x4 PUSH2 0x2D6 SWAP3 SDIV SWAP1 PUSH2 0x98D JUMP JUMPDEST PUSH1 0x1 DUP2 ADD PUSH1 0x1 DUP2 SLT PUSH1 0x0 DUP4 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x41F JUMPI DUP1 PUSH2 0xFA0 MUL SWAP1 PUSH2 0xFA0 DUP3 SDIV SUB PUSH2 0x41F JUMPI PUSH3 0x164B09 SWAP1 SDIV SWAP1 DUP2 PUSH2 0x5B5 MUL SWAP1 PUSH2 0x5B5 DUP3 SDIV DUP4 SUB PUSH2 0x41F JUMPI PUSH1 0x4 PUSH2 0x324 SWAP3 SDIV SWAP1 PUSH2 0x98D JUMP JUMPDEST PUSH1 0x1F DUP2 ADD SWAP1 PUSH1 0x0 PUSH1 0x1F DUP4 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x41F JUMPI DUP1 PUSH1 0x50 MUL PUSH1 0x50 DUP2 SDIV DUP3 SUB PUSH2 0x41F JUMPI PUSH2 0x98F SWAP1 SDIV SWAP1 DUP2 PUSH2 0x98F MUL SWAP1 PUSH2 0x98F DUP3 SDIV DUP4 SUB PUSH2 0x41F JUMPI PUSH1 0x50 PUSH2 0x370 SWAP3 SDIV SWAP1 PUSH2 0x98D JUMP JUMPDEST SWAP2 PUSH1 0xB DUP3 SDIV SWAP2 PUSH1 0x2 DUP2 ADD SWAP1 PUSH1 0x0 PUSH1 0x2 DUP4 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x41F JUMPI DUP3 PUSH1 0xC MUL PUSH1 0xC DUP2 SDIV DUP5 SUB PUSH2 0x41F JUMPI PUSH2 0x3A7 SWAP2 PUSH2 0x98D JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF DUP7 ADD SWAP6 DUP7 SGT PUSH1 0x1 AND PUSH2 0x41F JUMPI DUP6 PUSH1 0x64 MUL SWAP6 PUSH1 0x64 DUP8 SDIV SUB PUSH2 0x41F JUMPI PUSH2 0x3F2 PUSH2 0x3F7 SWAP3 PUSH1 0x1 SWAP8 PUSH2 0x971 JUMP JUMPDEST PUSH2 0x971 JUMP JUMPDEST SWAP2 PUSH2 0x402 DUP5 DUP11 PUSH2 0x643 JUMP JUMPDEST MSTORE PUSH2 0x40D DUP4 DUP11 PUSH2 0x643 JUMP JUMPDEST MSTORE PUSH2 0x418 DUP3 DUP8 PUSH2 0x643 JUMP JUMPDEST MSTORE ADD PUSH2 0x1F2 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x18C JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x18C JUMPI PUSH1 0x40 MLOAD PUSH2 0x48B PUSH1 0x60 DUP3 PUSH2 0x5BB JUMP JUMPDEST PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH1 0x40 CALLDATASIZE DUP3 CALLDATACOPY DUP2 MLOAD ISZERO PUSH2 0x558 JUMPI PUSH32 0xA8314DE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x558 JUMPI SWAP1 PUSH32 0xC89FA57000000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 PUSH1 0x20 DUP5 MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x51D JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x50F JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x20 DUP1 DUP4 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x5A5 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x598 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x5FC JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x5FC JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x558 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x661 DUP3 PUSH2 0x62B JUMP JUMPDEST PUSH2 0x66E PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x5BB JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x69C DUP3 SWAP5 PUSH2 0x62B JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST DUP1 SLOAD DUP3 LT ISZERO PUSH2 0x558 JUMPI PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 PUSH1 0x0 SWAP1 JUMP JUMPDEST DUP1 DUP2 PUSH1 0x0 SWAP3 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP2 LT ISZERO PUSH2 0x90C JUMPI JUMPDEST POP DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x8F1 JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x8DD JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x8CC JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x8BD JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x8AF JUMPI JUMPDEST LT ISZERO PUSH2 0x8A4 JUMPI JUMPDEST PUSH1 0xA PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x21 PUSH1 0x1 DUP6 ADD SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x7A8 PUSH2 0x792 DUP9 PUSH2 0x937 JUMP JUMPDEST SWAP8 PUSH2 0x7A0 PUSH1 0x40 MLOAD SWAP10 DUP11 PUSH2 0x5BB JUMP JUMPDEST DUP1 DUP10 MSTORE PUSH2 0x937 JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP9 ADD CALLDATACOPY DUP6 ADD ADD JUMPDEST ADD SWAP2 PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x80D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xA SWAP2 SWAP3 PUSH2 0x7B3 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x73746F726167652E626F6E640000000000000000000000000000000000000000 DUP4 MSTORE DUP2 DUP2 MLOAD SWAP2 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x88C JUMPI POP POP DUP1 PUSH2 0x886 SWAP3 PUSH1 0x2C SWAP3 ADD PUSH1 0x0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x5BB JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP3 DUP3 ADD DUP2 ADD MLOAD PUSH1 0x2C DUP8 DUP5 ADD ADD MSTORE DUP6 SWAP4 POP ADD PUSH2 0x841 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x73B JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x734 JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x72A JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x71F JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x712 JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x702 JUMP JUMPDEST PUSH1 0x40 SWAP4 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 SWAP1 DIV SWAP1 POP PUSH1 0xA PUSH2 0x6E7 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x5FC JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x0 DUP4 DUP3 ADD SWAP4 DUP5 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x41F JUMPI JUMP JUMPDEST DUP2 DUP2 SUB SWAP3 SWAP2 PUSH1 0x0 SGT DUP1 ISZERO DUP3 DUP6 SGT AND SWAP2 DUP5 SLT AND OR PUSH2 0x41F JUMPI JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE2 0xC0 BLOCKHASH CREATE2 0xE5 0xE0 DUP11 PUSH3 0x921AEE 0xA8 PUSH5 0x653DB25D4F SWAP3 PUSH11 0x6BE23762FA715BAAE6382E 0xBA PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "244:2169:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1344:20;244:2169;;1344:20;:::i;:::-;1414:31;;;244:2169;;1400:53;;;;:::i;:::-;1486;;;;:::i;:::-;1590:31;;;;244:2169;1576:53;244:2169;;1576:53;:::i;:::-;1689:31;244:2169;1689:31;;244:2169;1675:53;244:2169;;1675:53;:::i;:::-;1743:13;1889:29;244:2169;1889:29;;1738:325;1758:42;;;;;;244:2169;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1802:3;1832:34;;244:2169;1832:34;;;:::i;:::-;244:2169;;;;;;1821:45;;;;:::i;:::-;244:2169;1889:32;;;;:::i;:::-;244:2169;;;;;;1880:41;;;;:::i;:::-;244:2169;1948:34;;;;:::i;:::-;244:2169;;;;;;1935:47;;;;:::i;:::-;244:2169;2018:34;;;;:::i;:::-;244:2169;;;;;;1996:56;;;;:::i;:::-;244:2169;;1743:13;;244:2169;;;;;;;;;;;;;;;601:26;550:20;244:2169;;550:20;:::i;:::-;601:26;244:2169;;667:25;;;;:::i;:::-;727;;;;:::i;:::-;786;;;;:::i;:::-;826:13;244:2169;841:14;;;;;;244:2169;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;857:3::-;1045:12:68;972:29:57;;;;:::i;:::-;244:2169;;;;;;1045:12:68;3686:15;3695:6;244:2169:57;;;3695:6:68;244:2169:57;;;;;;;;;;;;;;;;;;;;1218:9:68;244:2169:57;;;;;;;;;;;;;;;1218:9:68;4483:1;1218:9;244:2169:57;1218:9:68;;;;;;3795:7;3780:22;1218:9;3872:11;1218:9;3795:7;1218:9;;3795:7;1218:9;;;;;;244:2169:57;;;;;;;;;;;;;;;;;;;;;;3862:30:68;3871:21;1218:9;3862:30;;:::i;:::-;244:2169:57;;;;;;;;;;;;;;;;;;;;1218:9:68;3959:4;1218:9;;3959:4;1218:9;;;;;3982;3958:33;1218:9;4061:12;1218:9;4061:4;1218:9;;4061:4;1218:9;;;;;;244:2169:57;4051:27:68;4060:18;1218:9;4051:27;;:::i;:::-;4081:2;244:2169:57;;;;4081:2:68;244:2169:57;;;;;;;;;;;;;;;1218:9:68;4192:2;1218:9;4192:2;1218:9;;;;;;4283:4;4271:16;1218:9;4363:13;1218:9;4283:4;1218:9;;4283:4;1218:9;;;;;;4192:2;4352:31;4362:20;1218:9;4352:31;;:::i;:::-;4444:11;4453:2;1218:9;;4474:10;4483:1;244:2169:57;;;;4483:1:68;244:2169:57;;;;;;;;;;;;;;;1218:9:68;4487:2;1218:9;4487:2;1218:9;;;;;;4474:24;;;:::i;:::-;4564:6;1218:9;;;;;;244:2169:57;1218:9:68;;;;4557:3;1218:9;;4557:3;1218:9;;;;;4557:22;:31;:22;244:2169:57;4557:22:68;;:::i;:::-;:31;:::i;:::-;1016:10:57;;;;;:::i;:::-;244:2169;1040:12;;;;:::i;:::-;244:2169;1066:11;;;;:::i;:::-;244:2169;;826:13;;1218:9:68;1045:12;244:2169:57;1045:12:68;;244:2169:57;1045:12:68;;244:2169:57;1045:12:68;244:2169:57;;;;;;;;;;;;;;;;;:::i;:::-;2246:1;244:2169;;;;;;;;;;;;;;2273:40;244:2169;;;;2333:1;244:2169;;;;;2338:40;244:2169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;244:2169:57;;;;;;;;;2333:1;244:2169;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;244:2169:57;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;244:2169:57;;;;;-1:-1:-1;244:2169:57;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;244:2169:57;;-1:-1:-1;244:2169:57;;;-1:-1:-1;244:2169:57;:::o;2387:241:58:-;2538:22;1430:17:15;-1:-1:-1;29282:17:18;29291:8;29282:17;;;29278:103;;2387:241:58;29398:17:18;;29407:8;29978:7;29398:17;;;29394:103;;2387:241:58;29523:8:18;29514:17;;;29510:103;;2387:241:58;29639:7:18;29630:16;;;29626:100;;2387:241:58;29752:7:18;29743:16;;;29739:100;;2387:241:58;29865:7:18;29856:16;;;29852:100;;2387:241:58;29969:16:18;;29965:66;;2387:241:58;29978:7:18;244:2169:57;1545:94:15;1450:1;244:2169:57;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;1545:94:15;;;1652:247;244:2169:57;1706:111:15;;;;;;;;1045:12:68;1867:10:15;;1863:21;;244:2169:57;29978:7:18;1652:247:15;;;;1863:21;1879:5;;244:2169:57;;;2505:56:58;;244:2169:57;;;;;;;;-1:-1:-1;244:2169:57;;;;;;;;;2505:56:58;244:2169:57;;;;-1:-1:-1;244:2169:57;;;;2505:56:58;;244:2169:57;2505:56:58;;;;;;:::i;:::-;244:2169:57;2495:67:58;;2387:241;:::o;244:2169:57:-;;;;;;;;;;;;;;;;-1:-1:-1;244:2169:57;;;29965:66:18;30015:1;244:2169:57;;;;29965:66:18;;29852:100;29865:7;29936:1;1045:12:68;;244:2169:57;;29852:100:18;;;29739;29752:7;29823:1;1045:12:68;;244:2169:57;;29739:100:18;;;29626;29639:7;29710:1;1045:12:68;;244:2169:57;;29626:100:18;;;29510:103;29523:8;29596:2;1045:12:68;;244:2169:57;;29510:103:18;;;29394;29407:8;29480:2;1045:12:68;;244:2169:57;;29394:103:18;;;29278;29364:2;;-1:-1:-1;29291:8:18;1045:12:68;;;-1:-1:-1;29978:7:18;29278:103;;244:2169:57;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1218:9:68:-;;;;;;;-1:-1:-1;1218:9:68;;;;;;;;;;;;;:::o"
            },
            "methodIdentifiers": {
              "getCouponsDates(uint256)": "a8314de7",
              "getCouponsRates(uint256)": "c89fa570",
              "getSelectors()": "4b503f0b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"}],\"name\":\"getCouponsDates\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"}],\"name\":\"getCouponsRates\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSelectors\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/BondReaderFacet.sol\":\"BondReaderFacet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"]},\"@prb/math/src/UD60x18.sol\":{\"keccak256\":\"0xb98c6f74275914d279e8af6c502c2b1f50d5f6e1ed418d3b0153f5a193206c48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a750edde2955f160806a51083a12185fb04e20efca0e3a7ebd127dc1acc049a9\",\"dweb:/ipfs/QmeAre3mThopoQPB9mSXZq6jck59QZ7JbDFR83urd2SLvp\"]},\"@prb/math/src/sd1x18/Casting.sol\":{\"keccak256\":\"0x5d365f655f01598926c5d4fe5cda277f2cc7736fe38f943c11a32009077ddd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b378bd6039819bc12e5f17dabd9492e1410b3281f9df496cf8210539101a11\",\"dweb:/ipfs/QmcMaE64ZWMg9cFhYxdTuG8nfzeDdNuTRHMMoFXi6tSZGu\"]},\"@prb/math/src/sd1x18/Constants.sol\":{\"keccak256\":\"0xc14cc32061863d83912f9616de86f3c34f1ac58614b7d504c6ce07ee8efdb8e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22483b1282dda6a556b0232f008a5a3296bbfd76b1886e6b72bf351b7c554fab\",\"dweb:/ipfs/QmYX9cYkrFxBbhZNKsb6uUxtrc2chmAj7vuc7UKRPGMwos\"]},\"@prb/math/src/sd1x18/Errors.sol\":{\"keccak256\":\"0xc3c8b1ab3d19889c356c222a3a2186d45dfc1d3a17b9ad88159bb64ee457baa6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84fbe57569246403f778330bd7723018dfcb5f0ec50d7b1d82cc983c94a54bca\",\"dweb:/ipfs/QmWssAAnovc2EVjt58rTnxraE9B1RMivwTvYCYgpnr6oSE\"]},\"@prb/math/src/sd1x18/ValueType.sol\":{\"keccak256\":\"0xaa9dc7b562faf45264390d80e2ea10c5295bb8a4f10d76261a3f9c04363734c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6ca36acd15f5cb47cf124ddec289f84e1011f2d29056159e4570435629a3353\",\"dweb:/ipfs/QmUKdiLmZpAkNCq2TKxrPbQPUhiRFXGfjGSnY1VeHVu4y6\"]},\"@prb/math/src/sd21x18/Casting.sol\":{\"keccak256\":\"0x4a16adddb9ab1f6939dd4567c77205015a11081cb840029b84bbb6fdaf78ee36\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5003b2f4cd2fc1413da36bc63107c6e83a88d29693e8f97b54f300fa78f9c6d2\",\"dweb:/ipfs/QmaNJn91NLrZmeeGqnFQV1FTrLVSW852zHyWTrWJ5pf1pd\"]},\"@prb/math/src/sd21x18/Constants.sol\":{\"keccak256\":\"0x501c2d5cfdea9450422182059c8df1cb6a859901a07bd59631c3fa24edcc79d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4669a65001c92919671fd879d33ce0e5030b602a7ba4d36bd2308128d8d1f396\",\"dweb:/ipfs/QmUC3bJ3qdkCmLMw3WHBcEqvuC4tExT2LXzUhgu5KQ3vi3\"]},\"@prb/math/src/sd21x18/Errors.sol\":{\"keccak256\":\"0xc5422ee47eb139274e538e758fb40177a1ba22c2113ef3b3446102f0150bfe0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1981e052e9e86e1b0e4e55a057a7af4739aedd4ead2d60e3eaa40fb703594ee\",\"dweb:/ipfs/QmPK5qSujnyk1R8ues4RhDMy1tRKKyjQ31YJTviTKq7GML\"]},\"@prb/math/src/sd21x18/ValueType.sol\":{\"keccak256\":\"0x532bba888370bed393464412f4ef3462d654802e71c953ad02d078e3d2701092\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://922a4e8dd813602f72d165aa1dfdf2c29b971a2abe73bebca7cd81a32ee2c880\",\"dweb:/ipfs/QmTBAJnx1r3sZpbQAuTgQtsTtvjZbpDwhCJRzkhzUumbdf\"]},\"@prb/math/src/sd59x18/Casting.sol\":{\"keccak256\":\"0xdf70d8e70c6d6325f3f7eb028c484bc7189ef902f1d4b5b220af2e550bb5fc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0b15bcd36129c5cb163d57a117435afb171182018dd6d1e766a5f49cf1f4b63d\",\"dweb:/ipfs/QmbjzkMBH4FM2rdxGbx9LQ65wVERijNcu7R9C8dQmH3y4n\"]},\"@prb/math/src/sd59x18/Constants.sol\":{\"keccak256\":\"0x9bcb8dd6b3e886d140ad1c32747a4f6d29a492529ceb835be878ae837aa6cc3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4045c633e3618e7e90a768d92415b2f20f781fe129b4f4e26fa88f7dbf9201f\",\"dweb:/ipfs/Qmbet95pizwPno82cJ383wJtgQRSQKESmhVZ1vDrgAu7Si\"]},\"@prb/math/src/sd59x18/Errors.sol\":{\"keccak256\":\"0x0a79c28c85fc8a450b0801ff2e66114eac4ec565819f5d1d8738904658fe33e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e0d4fd3c998019fb8555d9e26c03bec42a8513bdf4185aeac2da3a000abaebf\",\"dweb:/ipfs/QmahFJHXcX4RwPxaQbUf6LVZEk8NSpjCV3Eif7i9iqC6Mk\"]},\"@prb/math/src/sd59x18/Helpers.sol\":{\"keccak256\":\"0x208570f1657cf730cb6c3d81aa14030e0d45cf906cdedea5059369d7df4bb716\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c78ca900edafa9338d4e3649a55ab0c84f76468d8a22fb945ba6d01e70f8fed\",\"dweb:/ipfs/QmeP4hQYfNxcATd1FsasdD4ebyu2vrC9K1N68swxUJzzZD\"]},\"@prb/math/src/sd59x18/Math.sol\":{\"keccak256\":\"0xd8e8b51db9b3e2fa31a60f6b8ce4ea0112c3364442ede5992aa0aa7a2c925c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c56913970e34ee7b142047b21f1856a511cbdc3473b7c50418a8490e19cd462\",\"dweb:/ipfs/QmfG1F9CBDjPYD7NXora9awFfdpvBMY9SCg5pMLCFRv9tD\"]},\"@prb/math/src/sd59x18/ValueType.sol\":{\"keccak256\":\"0x76597ba64d37d66e0178512bc9bbc1a031a7634c45e5d5c6e9da87f46952dc9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36148899ad874814e9292636fb974d2eec61f1bcc0875ec39cf444d70ba40919\",\"dweb:/ipfs/QmadUe4kH2FPcdxvhCKy8yiezCvPWor4VcPzqLYSAaGDDb\"]},\"@prb/math/src/ud21x18/Casting.sol\":{\"keccak256\":\"0x3821aa57604f6e5b7c9c5c5cc97a6d71116e673cf3fee5f76fcd42b4cefded65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a80399c6b38ab45cc10d0a6683d50340cd89d9a085b6d0dcfb81e7c4e5b3ce09\",\"dweb:/ipfs/QmWNW2YD2LMkqrpAtJYeeuHN329Rx7mvfmrjsCo1p6akTL\"]},\"@prb/math/src/ud21x18/Constants.sol\":{\"keccak256\":\"0x0997574a1ced6c43bde6d9c9175edc5ad64cbb920a0969a9db68eea543747601\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c09f03345a6779b002b38ffc3954258accbb2b1d0d5506d42c3bd7f117304f60\",\"dweb:/ipfs/QmTeBXRCE7H2HpqKUNsZN7Nk3rdBnFmbAUFom3E1PJeGuV\"]},\"@prb/math/src/ud21x18/Errors.sol\":{\"keccak256\":\"0x35a1fb789b90f8c90865884d3023deb17fcca5c7146b5ddef823496d835a5415\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0af359d07ba25bdc90de7c05ed6216833932caa75d4a02fcfc51ceeaba5a4e80\",\"dweb:/ipfs/QmavBFw73Xfp1qJiN6P1gk2Dfr8ByWo3dyCPVgDHtko2gq\"]},\"@prb/math/src/ud21x18/ValueType.sol\":{\"keccak256\":\"0x24838b2b1da371b9259d8ee21534a9f0cb5796aba75a4efca2374627952bee25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://897e6b79308651671c7f3c91a0069e778b47356c9ba3f86e238398ab7f2623af\",\"dweb:/ipfs/QmZbLw3tJVRZFQnV9jWQUmF43gna841adSG2TAiwDAifGU\"]},\"@prb/math/src/ud2x18/Casting.sol\":{\"keccak256\":\"0x0f3141ed054e7c29dbe1acb4b88b18eb05d60e998fba6b4e503a6799faa356d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1e2468fc4c458082aaf4aa2e35af9ba3702f207e3c8533dd1e7da11ad605eae\",\"dweb:/ipfs/QmSm7iRH1eo4cJCwcAiiXWRH9Hn1urSS4tMdbaFbFGuTyL\"]},\"@prb/math/src/ud2x18/Constants.sol\":{\"keccak256\":\"0x29b0e050c865899e1fb9022b460a7829cdee248c44c4299f068ba80695eec3fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbaef16b662fac235349bcf97bc980dd0cba15d4e6230caae61224cdac8ea6d9\",\"dweb:/ipfs/QmZQa5XBhi7k3yhtCd8wVpnwW8htfU4sjXxWhxRypMBYkC\"]},\"@prb/math/src/ud2x18/Errors.sol\":{\"keccak256\":\"0x3b27e2a57438cd30d9c130f84aace24d547e5ed58e8689691d7d92ad2db38ddd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841cf9fb45443899c6b659300bbf503c3fd2c1a1e83b7f0e28620eed457f7437\",\"dweb:/ipfs/QmUqg8WscP5yQPw3UMUCWaB9RLU6nryGzseuyhAjNnDc1i\"]},\"@prb/math/src/ud2x18/ValueType.sol\":{\"keccak256\":\"0x975a2e69b48f34a4c0bd80e8a5609ac67b7264c91992c0944f9ebe7b9e3fc9d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d012521c475295d7e70b7d526fcc0911d0f238ea938719d77251bba00c9b41\",\"dweb:/ipfs/QmexEvTQCCBPYRWAYnomZX5M7C2EkXQRAXqEYMNUZfazCs\"]},\"@prb/math/src/ud60x18/Casting.sol\":{\"keccak256\":\"0x0803318ddc98b4ba8fbfe70e5ee08d78387fe6ae00982b9960518085a751d7b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e68a2f780b2e33fa5416eb60f9daa81f014c2591119f4b67bed1217d5530780\",\"dweb:/ipfs/QmZe7JTWvbfKqMnu4sxUwWCtLcCay9hH71VZUpoFCdENcr\"]},\"@prb/math/src/ud60x18/Constants.sol\":{\"keccak256\":\"0x2b80d26153d3fdcfb3a9ca772d9309d31ed1275f5b8b54c3ffb54d3652b37d90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e3a6673a156f635db94dc176baaa7274db8f9bec4461cd1152596253550ee3b\",\"dweb:/ipfs/Qmc9zT4kNSbMYaXcnbxNVqmb3P3m46ieaQxkwxqLwsvRA5\"]},\"@prb/math/src/ud60x18/Conversions.sol\":{\"keccak256\":\"0xd486ecca97abe69acdb28230088f4c7097fbdae5b36c5ae45d5be2faac4c33f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6080870ec6955ff0f5278f9c480b218a68714daf5f2ee42da0276d08d7b82932\",\"dweb:/ipfs/QmQ1SERHdemJgPrt4USwY8j5r63jZ8fQuJAm1knjMEEQEY\"]},\"@prb/math/src/ud60x18/Errors.sol\":{\"keccak256\":\"0xbab6b0e303d32f3a9d9e2fe881f0392b8c59a73051a4d34f21a403b3961b3044\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86a019bcf2510d0691287329dc057479cc0abc48a5e15f245e7f15c03052d2c8\",\"dweb:/ipfs/QmeXe5pbpDHvN5DZ8puXmH2RJ25zDHj55wpiStWtNQPvq6\"]},\"@prb/math/src/ud60x18/Helpers.sol\":{\"keccak256\":\"0xf5faff881391d2c060029499a666cc5f0bea90a213150bb476fae8f02a5df268\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://76105fa22bb1b5f1fa99abf9c4fbc9577a02c7bc204f271754c407f0d75489f5\",\"dweb:/ipfs/QmVNGZSTniDuZus5DdbFubqJXCLtTaZit7YPm4ntjr5Lgr\"]},\"@prb/math/src/ud60x18/Math.sol\":{\"keccak256\":\"0xc4e51dfd9af62938e277e90fa724099f239d33727a35909ed48c292a76faf2fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d731537cbc50b852c21d28625aeb2c329729afc23a7b86ff9d8ee5878f47e9d6\",\"dweb:/ipfs/QmS7Cj4pAdPZcTp7RqYXyxBc9EYX92CT8icfkNigktUsLr\"]},\"@prb/math/src/ud60x18/ValueType.sol\":{\"keccak256\":\"0x1b200baf25d01a8b91b97b42114248636f742b5b7028487ef4daef6621e378a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5708ed017206bda2197654e80bea9f37b3a9993434bb066c903c2865e028f47\",\"dweb:/ipfs/QmTyotZk2J5YvWkNvB2qhXBMgRGWW2UgPqR4JPocrXSr8n\"]},\"contracts/facets/BondReaderFacet.sol\":{\"keccak256\":\"0x39dff8199a41f5cc341127a635c44d4a5c5f0060f5192ff1d800e7efce07f363\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://8abf27f4f2da9af21057c58354a358dda9ad06ba5bfc98066cb970a6ad7c7c3b\",\"dweb:/ipfs/QmVjthRNrcVc1Bp2CKtpWhnnZ3uXT4FBMTfx4rkXrJPpdq\"]},\"contracts/facets/BondStorage.sol\":{\"keccak256\":\"0x309fb35d407d76e4c52f9450ba5ca2a5a33e61f9a6491b0475549b8331063715\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://c3d0d639c7550e1a5ae03a1c8e55af981f7099aef468f23ae2a15772608f83d3\",\"dweb:/ipfs/QmVLf6By5sfY8S1Vz7XXnEVkEJtZSdZvWe5FAY1sTudRKQ\"]},\"contracts/libraries/BokkyPooBahsDateTimeLibrary.sol\":{\"keccak256\":\"0xf4cbf156ed0c40d43ee1bd32de6c025dceefe9679ba54fe98bd2a2c83184a415\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://227ef653e9b0967ab18a6ef9d7ed5c542dde1e6a0f87194d517e9a94ee6a6c1e\",\"dweb:/ipfs/QmbJTB9YDavU7AeBNBJotP28uxe7k4XrabRpWzgvqVde6x\"]}},\"version\":1}"
        }
      },
      "contracts/facets/BondStorage.sol": {
        "BondStorage": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601357603a908160198239f35b600080fdfe600080fdfea26469706673582212201362631b33ce6dec0cd19124456f8fc4aa8f3a172c84c76a6de0d01aeb71a8d964736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x13 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x19 DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT PUSH3 0x631B33 0xCE PUSH14 0xEC0CD19124456F8FC4AA8F3A172C DUP5 0xC7 PUSH11 0x6DE0D01AEB71A8D964736F PUSH13 0x634300081B0033000000000000 ",
              "sourceMap": "136:2494:58:-:0;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "600080fdfea26469706673582212201362631b33ce6dec0cd19124456f8fc4aa8f3a172c84c76a6de0d01aeb71a8d964736f6c634300081b0033",
              "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT PUSH3 0x631B33 0xCE PUSH14 0xEC0CD19124456F8FC4AA8F3A172C DUP5 0xC7 PUSH11 0x6DE0D01AEB71A8D964736F PUSH13 0x634300081B0033000000000000 ",
              "sourceMap": "136:2494:58:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/BondStorage.sol\":\"BondStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"contracts/facets/BondStorage.sol\":{\"keccak256\":\"0x309fb35d407d76e4c52f9450ba5ca2a5a33e61f9a6491b0475549b8331063715\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://c3d0d639c7550e1a5ae03a1c8e55af981f7099aef468f23ae2a15772608f83d3\",\"dweb:/ipfs/QmVLf6By5sfY8S1Vz7XXnEVkEJtZSdZvWe5FAY1sTudRKQ\"]}},\"version\":1}"
        }
      },
      "contracts/facets/ContextFacet.sol": {
        "ContextFacet": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601357603a908160198239f35b600080fdfe600080fdfea2646970667358221220ed60774a8e658768afb4ea14920d504e57925bab9478606873fc3648ca32fd4c64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x13 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x19 DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xED PUSH1 0x77 BLOBBASEFEE DUP15 PUSH6 0x8768AFB4EA14 SWAP3 0xD POP 0x4E JUMPI SWAP3 JUMPDEST 0xAB SWAP5 PUSH25 0x606873FC3648CA32FD4C64736F6C634300081B003300000000 ",
              "sourceMap": "66:266:59:-:0;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "600080fdfea2646970667358221220ed60774a8e658768afb4ea14920d504e57925bab9478606873fc3648ca32fd4c64736f6c634300081b0033",
              "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xED PUSH1 0x77 BLOBBASEFEE DUP15 PUSH6 0x8768AFB4EA14 SWAP3 0xD POP 0x4E JUMPI SWAP3 JUMPDEST 0xAB SWAP5 PUSH25 0x606873FC3648CA32FD4C64736F6C634300081B003300000000 ",
              "sourceMap": "66:266:59:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/ContextFacet.sol\":\"ContextFacet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/facets/ContextFacet.sol\":{\"keccak256\":\"0xa69df7f300440ace22b947b9a427947a1c9ed13a36698000bbd691eb12d866c1\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://6bced063a2115957d7cf61b66443323c1d114ef81e96dde6a404888305ebd47e\",\"dweb:/ipfs/QmRKApAXqTCAMcBor8UMBFnmEJokQtfNA7ef7fn45Cq22e\"]}},\"version\":1}"
        }
      },
      "contracts/facets/CouponFacet.sol": {
        "CouponFacet": {
          "abi": [
            {
              "inputs": [],
              "name": "NotAllClaimsReceivedForNextPayment",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "x",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "y",
                  "type": "uint256"
                }
              ],
              "name": "PRBMath_MulDiv18_Overflow",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "bondId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lineNumber",
                  "type": "uint256"
                }
              ],
              "name": "CouponStatusChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_buyer",
                  "type": "address"
                }
              ],
              "name": "claimCoupon",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSelectors",
              "outputs": [
                {
                  "internalType": "bytes4[]",
                  "name": "",
                  "type": "bytes4[]"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSelectorsOwnership",
              "outputs": [
                {
                  "internalType": "bytes4[]",
                  "name": "",
                  "type": "bytes4[]"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "initializeOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_bondId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_buyer",
                  "type": "address"
                }
              ],
              "name": "withdrawCouponClaim",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608080604052346015576111aa908161001b8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806322e29d591461066e5780634b503f0b146105de5780638c5f36bb146104a95780638da5cb5b14610456578063b410500414610362578063f2fde38b146102275763f97656341461006957600080fd5b346101df5760406003193601126101df576100eb600435602061008a610c13565b9161009481610df2565b9260405194859283927efdd58e000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0381305afa91821561021b576000926101e4575b5081156101df5760209181601861019b93015490670de0b6b3a764000061015861014b8261014061013387601e8801610d25565b90549060031b1c886110a5565b0494601f8501610d25565b90549060031b1c856110a5565b0492601982019061016a818354610d3d565b80925561017c601a8401918254610d3d565b809155601783015480911491826101d5575b50506101a3575b50610d3d565b604051908152f35b601b0160017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905538610195565b149050388061018e565b600080fd5b90916020823d602011610213575b816101ff60209383610cb5565b8101031261021057505190386100ff565b80fd5b3d91506101f2565b6040513d6000823e3d90fd5b346101df5760206003193601126101df57610240610c36565b7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c549073ffffffffffffffffffffffffffffffffffffffff80831633149161028783610d67565b169182156102df576102b97fffffffffffffffffffffffff000000000000000000000000000000000000000092610d67565b16177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c55005b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b346101df5760006003193601126101df57604051610381608082610cb5565b6003815260603660208301377f8da5cb5b000000000000000000000000000000000000000000000000000000006103b782610d4a565b527ff2fde38b000000000000000000000000000000000000000000000000000000006103e282610d57565b5280516002101561042757807f8c5f36bb00000000000000000000000000000000000000000000000000000000606061042393015260405191829182610c59565b0390f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b346101df5760006003193601126101df57602073ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416604051908152f35b346101df5760206003193601126101df576104c2610c36565b73ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c54166105805773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000007f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c55600080f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f776e657220616c7265616479207365740000000000000000000000000000006044820152fd5b346101df5760006003193601126101df57610423604051610600606082610cb5565b6002815260403660208301377ff97656340000000000000000000000000000000000000000000000000000000061063682610d4a565b527f22e29d590000000000000000000000000000000000000000000000000000000061066182610d57565b5260405191829182610c59565b346101df5760406003193601126101df5760043561068a610c13565b9061069481610df2565b91601b83019260ff84541615610be9576040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101849052602081604481305afa90811561021b57600091610bb7575b506018820192670de0b6b3a76400006107316107248654601e8701610d25565b90549060031b1c846110a5565b046005840154908184029184830414841517156109205761075191610d3d565b73ffffffffffffffffffffffffffffffffffffffff602585015460201c169173ffffffffffffffffffffffffffffffffffffffff602686015416926040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152846004820152306024820152602081604481855afa801561021b578491600091610b82575b5010610afe5773ffffffffffffffffffffffffffffffffffffffff93600060649260209560405197889687957f23b872dd000000000000000000000000000000000000000000000000000000008752600487015216602485015260448401525af190811561021b57600091610abf575b5015610a6157601982019081548181106109dd57601a8401908154938385106109595783928386039055828203905514918261094f575b505061088657005b60210181549080548210156104275760005260206000208160051c019060f882549160031b169060ff6001831b921b19161790557f6b427e348fe584275fb02de76d900738365c7d93affd48fb998ebf4fb54787eb60408254938151908152846020820152a160018201809211610920575580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b149050858061087e565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f556e646572666c6f7720646574656374656420696e206e65787420636170697460448201527f616c20616d6f756e7400000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f556e646572666c6f7720646574656374656420696e206e65787420696e74657260448201527f65737420616d6f756e74000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f45524332303a207472616e73666572206661696c6564000000000000000000006044820152fd5b6020813d602011610af6575b81610ad860209383610cb5565b81010312610af25751908115158203610210575086610847565b5080fd5b3d9150610acb565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152fd5b9150506020813d602011610baf575b81610b9e60209383610cb5565b810103126101df578390518b6107d7565b3d9150610b91565b906020823d602011610be1575b81610bd160209383610cb5565b8101031261021057505185610704565b3d9150610bc4565b7f13e45dd70000000000000000000000000000000000000000000000000000000060005260046000fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101df57565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101df57565b602060408183019282815284518094520192019060005b818110610c7d5750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101610c70565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610cf657604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80548210156104275760005260206000200190600090565b9190820180921161092057565b8051156104275760200190565b8051600110156104275760400190565b15610d6e57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60448201527f6374696f6e0000000000000000000000000000000000000000000000000000006064820152fd5b80816000927a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000811015611040575b50806d04ee2d6d415b85acef8100000000600a921015611025575b662386f26fc10000811015611011575b6305f5e100811015611000575b612710811015610ff1575b6064811015610fe3575b1015610fd8575b600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602160018501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610edc610ec68861106b565b97610ed4604051998a610cb5565b80895261106b565b013660208801378501015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a8353048015610f41577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a9192610ee7565b505060405160208101917f73746f726167652e626f6e64000000000000000000000000000000000000000083528181519160005b838110610fc057505080610fba92602c920160008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610cb5565b51902090565b6020828201810151602c878401015285935001610f75565b600190910190610e6f565b606460029104930192610e68565b61271060049104930192610e5e565b6305f5e10060089104930192610e53565b662386f26fc1000060109104930192610e46565b6d04ee2d6d415b85acef810000000060209104930192610e36565b604093507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a610e1b565b67ffffffffffffffff8111610cf657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9190917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8382098382029182808310920391808303921461116357670de0b6b3a7640000821015611131577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106699394670de0b6b3a7640000910990828211900360ee1b910360121c170290565b84907f5173648d0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b5050670de0b6b3a76400009004915056fea2646970667358221220747ff88a9dd30974b4d2001e0ca82e9aabf4623bd8903d0e1985d6efc6617e7f64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0x11AA SWAP1 DUP2 PUSH2 0x1B DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x22E29D59 EQ PUSH2 0x66E JUMPI DUP1 PUSH4 0x4B503F0B EQ PUSH2 0x5DE JUMPI DUP1 PUSH4 0x8C5F36BB EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x456 JUMPI DUP1 PUSH4 0xB4105004 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x227 JUMPI PUSH4 0xF9765634 EQ PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1DF JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DF JUMPI PUSH2 0xEB PUSH1 0x4 CALLDATALOAD PUSH1 0x20 PUSH2 0x8A PUSH2 0xC13 JUMP JUMPDEST SWAP2 PUSH2 0x94 DUP2 PUSH2 0xDF2 JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP3 DUP4 SWAP3 PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 ADDRESS GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 SWAP3 PUSH2 0x1E4 JUMPI JUMPDEST POP DUP2 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x20 SWAP2 DUP2 PUSH1 0x18 PUSH2 0x19B SWAP4 ADD SLOAD SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x158 PUSH2 0x14B DUP3 PUSH2 0x140 PUSH2 0x133 DUP8 PUSH1 0x1E DUP9 ADD PUSH2 0xD25 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR DUP9 PUSH2 0x10A5 JUMP JUMPDEST DIV SWAP5 PUSH1 0x1F DUP6 ADD PUSH2 0xD25 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR DUP6 PUSH2 0x10A5 JUMP JUMPDEST DIV SWAP3 PUSH1 0x19 DUP3 ADD SWAP1 PUSH2 0x16A DUP2 DUP4 SLOAD PUSH2 0xD3D JUMP JUMPDEST DUP1 SWAP3 SSTORE PUSH2 0x17C PUSH1 0x1A DUP5 ADD SWAP2 DUP3 SLOAD PUSH2 0xD3D JUMP JUMPDEST DUP1 SWAP2 SSTORE PUSH1 0x17 DUP4 ADD SLOAD DUP1 SWAP2 EQ SWAP2 DUP3 PUSH2 0x1D5 JUMPI JUMPDEST POP POP PUSH2 0x1A3 JUMPI JUMPDEST POP PUSH2 0xD3D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x1B ADD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE CODESIZE PUSH2 0x195 JUMP JUMPDEST EQ SWAP1 POP CODESIZE DUP1 PUSH2 0x18E JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x213 JUMPI JUMPDEST DUP2 PUSH2 0x1FF PUSH1 0x20 SWAP4 DUP4 PUSH2 0xCB5 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x210 JUMPI POP MLOAD SWAP1 CODESIZE PUSH2 0xFF JUMP JUMPDEST DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1F2 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1DF JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DF JUMPI PUSH2 0x240 PUSH2 0xC36 JUMP JUMPDEST PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND CALLER EQ SWAP2 PUSH2 0x287 DUP4 PUSH2 0xD67 JUMP JUMPDEST AND SWAP2 DUP3 ISZERO PUSH2 0x2DF JUMPI PUSH2 0x2B9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 PUSH2 0xD67 JUMP JUMPDEST AND OR PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SSTORE STOP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4E6577206F776E65722063616E6E6F7420626520746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x1DF JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DF JUMPI PUSH1 0x40 MLOAD PUSH2 0x381 PUSH1 0x80 DUP3 PUSH2 0xCB5 JUMP JUMPDEST PUSH1 0x3 DUP2 MSTORE PUSH1 0x60 CALLDATASIZE PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH32 0x8DA5CB5B00000000000000000000000000000000000000000000000000000000 PUSH2 0x3B7 DUP3 PUSH2 0xD4A JUMP JUMPDEST MSTORE PUSH32 0xF2FDE38B00000000000000000000000000000000000000000000000000000000 PUSH2 0x3E2 DUP3 PUSH2 0xD57 JUMP JUMPDEST MSTORE DUP1 MLOAD PUSH1 0x2 LT ISZERO PUSH2 0x427 JUMPI DUP1 PUSH32 0x8C5F36BB00000000000000000000000000000000000000000000000000000000 PUSH1 0x60 PUSH2 0x423 SWAP4 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC59 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x1DF JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DF JUMPI PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1DF JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DF JUMPI PUSH2 0x4C2 PUSH2 0xC36 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND PUSH2 0x580 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND OR PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SSTORE PUSH1 0x0 DUP1 RETURN JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E657220616C726561647920736574000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x1DF JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DF JUMPI PUSH2 0x423 PUSH1 0x40 MLOAD PUSH2 0x600 PUSH1 0x60 DUP3 PUSH2 0xCB5 JUMP JUMPDEST PUSH1 0x2 DUP2 MSTORE PUSH1 0x40 CALLDATASIZE PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH32 0xF976563400000000000000000000000000000000000000000000000000000000 PUSH2 0x636 DUP3 PUSH2 0xD4A JUMP JUMPDEST MSTORE PUSH32 0x22E29D5900000000000000000000000000000000000000000000000000000000 PUSH2 0x661 DUP3 PUSH2 0xD57 JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC59 JUMP JUMPDEST CALLVALUE PUSH2 0x1DF JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DF JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x68A PUSH2 0xC13 JUMP JUMPDEST SWAP1 PUSH2 0x694 DUP2 PUSH2 0xDF2 JUMP JUMPDEST SWAP2 PUSH1 0x1B DUP4 ADD SWAP3 PUSH1 0xFF DUP5 SLOAD AND ISZERO PUSH2 0xBE9 JUMPI PUSH1 0x40 MLOAD PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x20 DUP2 PUSH1 0x44 DUP2 ADDRESS GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 SWAP2 PUSH2 0xBB7 JUMPI JUMPDEST POP PUSH1 0x18 DUP3 ADD SWAP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x731 PUSH2 0x724 DUP7 SLOAD PUSH1 0x1E DUP8 ADD PUSH2 0xD25 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR DUP5 PUSH2 0x10A5 JUMP JUMPDEST DIV PUSH1 0x5 DUP5 ADD SLOAD SWAP1 DUP2 DUP5 MUL SWAP2 DUP5 DUP4 DIV EQ DUP5 ISZERO OR ISZERO PUSH2 0x920 JUMPI PUSH2 0x751 SWAP2 PUSH2 0xD3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x25 DUP6 ADD SLOAD PUSH1 0x20 SHR AND SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x26 DUP7 ADD SLOAD AND SWAP3 PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP5 PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x44 DUP2 DUP6 GAS STATICCALL DUP1 ISZERO PUSH2 0x21B JUMPI DUP5 SWAP2 PUSH1 0x0 SWAP2 PUSH2 0xB82 JUMPI JUMPDEST POP LT PUSH2 0xAFE JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 PUSH1 0x0 PUSH1 0x64 SWAP3 PUSH1 0x20 SWAP6 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE PUSH1 0x4 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 SWAP2 PUSH2 0xABF JUMPI JUMPDEST POP ISZERO PUSH2 0xA61 JUMPI PUSH1 0x19 DUP3 ADD SWAP1 DUP2 SLOAD DUP2 DUP2 LT PUSH2 0x9DD JUMPI PUSH1 0x1A DUP5 ADD SWAP1 DUP2 SLOAD SWAP4 DUP4 DUP6 LT PUSH2 0x959 JUMPI DUP4 SWAP3 DUP4 DUP7 SUB SWAP1 SSTORE DUP3 DUP3 SUB SWAP1 SSTORE EQ SWAP2 DUP3 PUSH2 0x94F JUMPI JUMPDEST POP POP PUSH2 0x886 JUMPI STOP JUMPDEST PUSH1 0x21 ADD DUP2 SLOAD SWAP1 DUP1 SLOAD DUP3 LT ISZERO PUSH2 0x427 JUMPI PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 DUP2 PUSH1 0x5 SHR ADD SWAP1 PUSH1 0xF8 DUP3 SLOAD SWAP2 PUSH1 0x3 SHL AND SWAP1 PUSH1 0xFF PUSH1 0x1 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 SSTORE PUSH32 0x6B427E348FE584275FB02DE76D900738365C7D93AFFD48FB998EBF4FB54787EB PUSH1 0x40 DUP3 SLOAD SWAP4 DUP2 MLOAD SWAP1 DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE LOG1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x920 JUMPI SSTORE DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE STOP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ SWAP1 POP DUP6 DUP1 PUSH2 0x87E JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E646572666C6F7720646574656374656420696E206E657874206361706974 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C20616D6F756E740000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E646572666C6F7720646574656374656420696E206E65787420696E746572 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x65737420616D6F756E7400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E73666572206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xAF6 JUMPI JUMPDEST DUP2 PUSH2 0xAD8 PUSH1 0x20 SWAP4 DUP4 PUSH2 0xCB5 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0xAF2 JUMPI MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x210 JUMPI POP DUP7 PUSH2 0x847 JUMP JUMPDEST POP DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xACB JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 POP POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xBAF JUMPI JUMPDEST DUP2 PUSH2 0xB9E PUSH1 0x20 SWAP4 DUP4 PUSH2 0xCB5 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1DF JUMPI DUP4 SWAP1 MLOAD DUP12 PUSH2 0x7D7 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xB91 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xBE1 JUMPI JUMPDEST DUP2 PUSH2 0xBD1 PUSH1 0x20 SWAP4 DUP4 PUSH2 0xCB5 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x210 JUMPI POP MLOAD DUP6 PUSH2 0x704 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xBC4 JUMP JUMPDEST PUSH32 0x13E45DD700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1DF JUMPI JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1DF JUMPI JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xC7D JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xC70 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xCF6 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 SLOAD DUP3 LT ISZERO PUSH2 0x427 JUMPI PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 PUSH1 0x0 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x920 JUMPI JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x427 JUMPI PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x427 JUMPI PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xD6E JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920746865206F776E65722063616E2063616C6C20746869732066756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6374696F6E000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST DUP1 DUP2 PUSH1 0x0 SWAP3 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP2 LT ISZERO PUSH2 0x1040 JUMPI JUMPDEST POP DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x1025 JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x1011 JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x1000 JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0xFF1 JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0xFE3 JUMPI JUMPDEST LT ISZERO PUSH2 0xFD8 JUMPI JUMPDEST PUSH1 0xA PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x21 PUSH1 0x1 DUP6 ADD SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0xEDC PUSH2 0xEC6 DUP9 PUSH2 0x106B JUMP JUMPDEST SWAP8 PUSH2 0xED4 PUSH1 0x40 MLOAD SWAP10 DUP11 PUSH2 0xCB5 JUMP JUMPDEST DUP1 DUP10 MSTORE PUSH2 0x106B JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP9 ADD CALLDATACOPY DUP6 ADD ADD JUMPDEST ADD SWAP2 PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0xF41 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xA SWAP2 SWAP3 PUSH2 0xEE7 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x73746F726167652E626F6E640000000000000000000000000000000000000000 DUP4 MSTORE DUP2 DUP2 MLOAD SWAP2 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0xFC0 JUMPI POP POP DUP1 PUSH2 0xFBA SWAP3 PUSH1 0x2C SWAP3 ADD PUSH1 0x0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0xCB5 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP3 DUP3 ADD DUP2 ADD MLOAD PUSH1 0x2C DUP8 DUP5 ADD ADD MSTORE DUP6 SWAP4 POP ADD PUSH2 0xF75 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0xE6F JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0xE68 JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0xE5E JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0xE53 JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0xE46 JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0xE36 JUMP JUMPDEST PUSH1 0x40 SWAP4 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 SWAP1 DIV SWAP1 POP PUSH1 0xA PUSH2 0xE1B JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xCF6 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP3 MULMOD DUP4 DUP3 MUL SWAP2 DUP3 DUP1 DUP4 LT SWAP3 SUB SWAP2 DUP1 DUP4 SUB SWAP3 EQ PUSH2 0x1163 JUMPI PUSH8 0xDE0B6B3A7640000 DUP3 LT ISZERO PUSH2 0x1131 JUMPI PUSH32 0xACCB18165BD6FE31AE1CF318DC5B51EEE0E1BA569B88CD74C1773B91FAC10669 SWAP4 SWAP5 PUSH8 0xDE0B6B3A7640000 SWAP2 MULMOD SWAP1 DUP3 DUP3 GT SWAP1 SUB PUSH1 0xEE SHL SWAP2 SUB PUSH1 0x12 SHR OR MUL SWAP1 JUMP JUMPDEST DUP5 SWAP1 PUSH32 0x5173648D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH21 0x7FF88A9DD30974B4D2001E0CA82E9AABF4623BD890 RETURNDATASIZE 0xE NOT DUP6 0xD6 0xEF 0xC6 PUSH2 0x7E7F PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "380:3289:60:-:0;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "abi_decode_address": {
                  "entryPoint": 3091,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_address_8139": {
                  "entryPoint": 3126,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_encode_address_uint256": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_array_bytes4_dyn": {
                  "entryPoint": 3161,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "array_allocation_size_string": {
                  "entryPoint": 4203,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_uint256": {
                  "entryPoint": 3389,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "finalize_allocation": {
                  "entryPoint": 3253,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_bondStorage": {
                  "entryPoint": 3570,
                  "id": 18599,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_mulDiv18": {
                  "entryPoint": 4261,
                  "id": 7952,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "memory_array_index_access_bytes4_dyn": {
                  "entryPoint": 3415,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "memory_array_index_access_bytes4_dyn_8137": {
                  "entryPoint": 3402,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "require_helper_stringliteral_02c4": {
                  "entryPoint": 3431,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "storage_array_index_access_uint256_dyn": {
                  "entryPoint": 3365,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                }
              },
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436101561001257600080fd5b60003560e01c806322e29d591461066e5780634b503f0b146105de5780638c5f36bb146104a95780638da5cb5b14610456578063b410500414610362578063f2fde38b146102275763f97656341461006957600080fd5b346101df5760406003193601126101df576100eb600435602061008a610c13565b9161009481610df2565b9260405194859283927efdd58e000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0381305afa91821561021b576000926101e4575b5081156101df5760209181601861019b93015490670de0b6b3a764000061015861014b8261014061013387601e8801610d25565b90549060031b1c886110a5565b0494601f8501610d25565b90549060031b1c856110a5565b0492601982019061016a818354610d3d565b80925561017c601a8401918254610d3d565b809155601783015480911491826101d5575b50506101a3575b50610d3d565b604051908152f35b601b0160017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905538610195565b149050388061018e565b600080fd5b90916020823d602011610213575b816101ff60209383610cb5565b8101031261021057505190386100ff565b80fd5b3d91506101f2565b6040513d6000823e3d90fd5b346101df5760206003193601126101df57610240610c36565b7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c549073ffffffffffffffffffffffffffffffffffffffff80831633149161028783610d67565b169182156102df576102b97fffffffffffffffffffffffff000000000000000000000000000000000000000092610d67565b16177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c55005b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b346101df5760006003193601126101df57604051610381608082610cb5565b6003815260603660208301377f8da5cb5b000000000000000000000000000000000000000000000000000000006103b782610d4a565b527ff2fde38b000000000000000000000000000000000000000000000000000000006103e282610d57565b5280516002101561042757807f8c5f36bb00000000000000000000000000000000000000000000000000000000606061042393015260405191829182610c59565b0390f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b346101df5760006003193601126101df57602073ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416604051908152f35b346101df5760206003193601126101df576104c2610c36565b73ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c54166105805773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000007f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c55600080f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f776e657220616c7265616479207365740000000000000000000000000000006044820152fd5b346101df5760006003193601126101df57610423604051610600606082610cb5565b6002815260403660208301377ff97656340000000000000000000000000000000000000000000000000000000061063682610d4a565b527f22e29d590000000000000000000000000000000000000000000000000000000061066182610d57565b5260405191829182610c59565b346101df5760406003193601126101df5760043561068a610c13565b9061069481610df2565b91601b83019260ff84541615610be9576040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101849052602081604481305afa90811561021b57600091610bb7575b506018820192670de0b6b3a76400006107316107248654601e8701610d25565b90549060031b1c846110a5565b046005840154908184029184830414841517156109205761075191610d3d565b73ffffffffffffffffffffffffffffffffffffffff602585015460201c169173ffffffffffffffffffffffffffffffffffffffff602686015416926040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152846004820152306024820152602081604481855afa801561021b578491600091610b82575b5010610afe5773ffffffffffffffffffffffffffffffffffffffff93600060649260209560405197889687957f23b872dd000000000000000000000000000000000000000000000000000000008752600487015216602485015260448401525af190811561021b57600091610abf575b5015610a6157601982019081548181106109dd57601a8401908154938385106109595783928386039055828203905514918261094f575b505061088657005b60210181549080548210156104275760005260206000208160051c019060f882549160031b169060ff6001831b921b19161790557f6b427e348fe584275fb02de76d900738365c7d93affd48fb998ebf4fb54787eb60408254938151908152846020820152a160018201809211610920575580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b149050858061087e565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f556e646572666c6f7720646574656374656420696e206e65787420636170697460448201527f616c20616d6f756e7400000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f556e646572666c6f7720646574656374656420696e206e65787420696e74657260448201527f65737420616d6f756e74000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f45524332303a207472616e73666572206661696c6564000000000000000000006044820152fd5b6020813d602011610af6575b81610ad860209383610cb5565b81010312610af25751908115158203610210575086610847565b5080fd5b3d9150610acb565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152fd5b9150506020813d602011610baf575b81610b9e60209383610cb5565b810103126101df578390518b6107d7565b3d9150610b91565b906020823d602011610be1575b81610bd160209383610cb5565b8101031261021057505185610704565b3d9150610bc4565b7f13e45dd70000000000000000000000000000000000000000000000000000000060005260046000fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101df57565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101df57565b602060408183019282815284518094520192019060005b818110610c7d5750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101610c70565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610cf657604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80548210156104275760005260206000200190600090565b9190820180921161092057565b8051156104275760200190565b8051600110156104275760400190565b15610d6e57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60448201527f6374696f6e0000000000000000000000000000000000000000000000000000006064820152fd5b80816000927a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000811015611040575b50806d04ee2d6d415b85acef8100000000600a921015611025575b662386f26fc10000811015611011575b6305f5e100811015611000575b612710811015610ff1575b6064811015610fe3575b1015610fd8575b600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602160018501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610edc610ec68861106b565b97610ed4604051998a610cb5565b80895261106b565b013660208801378501015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a8353048015610f41577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a9192610ee7565b505060405160208101917f73746f726167652e626f6e64000000000000000000000000000000000000000083528181519160005b838110610fc057505080610fba92602c920160008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610cb5565b51902090565b6020828201810151602c878401015285935001610f75565b600190910190610e6f565b606460029104930192610e68565b61271060049104930192610e5e565b6305f5e10060089104930192610e53565b662386f26fc1000060109104930192610e46565b6d04ee2d6d415b85acef810000000060209104930192610e36565b604093507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a610e1b565b67ffffffffffffffff8111610cf657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9190917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8382098382029182808310920391808303921461116357670de0b6b3a7640000821015611131577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106699394670de0b6b3a7640000910990828211900360ee1b910360121c170290565b84907f5173648d0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b5050670de0b6b3a76400009004915056fea2646970667358221220747ff88a9dd30974b4d2001e0ca82e9aabf4623bd8903d0e1985d6efc6617e7f64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x22E29D59 EQ PUSH2 0x66E JUMPI DUP1 PUSH4 0x4B503F0B EQ PUSH2 0x5DE JUMPI DUP1 PUSH4 0x8C5F36BB EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x456 JUMPI DUP1 PUSH4 0xB4105004 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x227 JUMPI PUSH4 0xF9765634 EQ PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1DF JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DF JUMPI PUSH2 0xEB PUSH1 0x4 CALLDATALOAD PUSH1 0x20 PUSH2 0x8A PUSH2 0xC13 JUMP JUMPDEST SWAP2 PUSH2 0x94 DUP2 PUSH2 0xDF2 JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP3 DUP4 SWAP3 PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 ADDRESS GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 SWAP3 PUSH2 0x1E4 JUMPI JUMPDEST POP DUP2 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x20 SWAP2 DUP2 PUSH1 0x18 PUSH2 0x19B SWAP4 ADD SLOAD SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x158 PUSH2 0x14B DUP3 PUSH2 0x140 PUSH2 0x133 DUP8 PUSH1 0x1E DUP9 ADD PUSH2 0xD25 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR DUP9 PUSH2 0x10A5 JUMP JUMPDEST DIV SWAP5 PUSH1 0x1F DUP6 ADD PUSH2 0xD25 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR DUP6 PUSH2 0x10A5 JUMP JUMPDEST DIV SWAP3 PUSH1 0x19 DUP3 ADD SWAP1 PUSH2 0x16A DUP2 DUP4 SLOAD PUSH2 0xD3D JUMP JUMPDEST DUP1 SWAP3 SSTORE PUSH2 0x17C PUSH1 0x1A DUP5 ADD SWAP2 DUP3 SLOAD PUSH2 0xD3D JUMP JUMPDEST DUP1 SWAP2 SSTORE PUSH1 0x17 DUP4 ADD SLOAD DUP1 SWAP2 EQ SWAP2 DUP3 PUSH2 0x1D5 JUMPI JUMPDEST POP POP PUSH2 0x1A3 JUMPI JUMPDEST POP PUSH2 0xD3D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x1B ADD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE CODESIZE PUSH2 0x195 JUMP JUMPDEST EQ SWAP1 POP CODESIZE DUP1 PUSH2 0x18E JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x213 JUMPI JUMPDEST DUP2 PUSH2 0x1FF PUSH1 0x20 SWAP4 DUP4 PUSH2 0xCB5 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x210 JUMPI POP MLOAD SWAP1 CODESIZE PUSH2 0xFF JUMP JUMPDEST DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1F2 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1DF JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DF JUMPI PUSH2 0x240 PUSH2 0xC36 JUMP JUMPDEST PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND CALLER EQ SWAP2 PUSH2 0x287 DUP4 PUSH2 0xD67 JUMP JUMPDEST AND SWAP2 DUP3 ISZERO PUSH2 0x2DF JUMPI PUSH2 0x2B9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 PUSH2 0xD67 JUMP JUMPDEST AND OR PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SSTORE STOP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4E6577206F776E65722063616E6E6F7420626520746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x1DF JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DF JUMPI PUSH1 0x40 MLOAD PUSH2 0x381 PUSH1 0x80 DUP3 PUSH2 0xCB5 JUMP JUMPDEST PUSH1 0x3 DUP2 MSTORE PUSH1 0x60 CALLDATASIZE PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH32 0x8DA5CB5B00000000000000000000000000000000000000000000000000000000 PUSH2 0x3B7 DUP3 PUSH2 0xD4A JUMP JUMPDEST MSTORE PUSH32 0xF2FDE38B00000000000000000000000000000000000000000000000000000000 PUSH2 0x3E2 DUP3 PUSH2 0xD57 JUMP JUMPDEST MSTORE DUP1 MLOAD PUSH1 0x2 LT ISZERO PUSH2 0x427 JUMPI DUP1 PUSH32 0x8C5F36BB00000000000000000000000000000000000000000000000000000000 PUSH1 0x60 PUSH2 0x423 SWAP4 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC59 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x1DF JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DF JUMPI PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1DF JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DF JUMPI PUSH2 0x4C2 PUSH2 0xC36 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND PUSH2 0x580 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND OR PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SSTORE PUSH1 0x0 DUP1 RETURN JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E657220616C726561647920736574000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x1DF JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DF JUMPI PUSH2 0x423 PUSH1 0x40 MLOAD PUSH2 0x600 PUSH1 0x60 DUP3 PUSH2 0xCB5 JUMP JUMPDEST PUSH1 0x2 DUP2 MSTORE PUSH1 0x40 CALLDATASIZE PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH32 0xF976563400000000000000000000000000000000000000000000000000000000 PUSH2 0x636 DUP3 PUSH2 0xD4A JUMP JUMPDEST MSTORE PUSH32 0x22E29D5900000000000000000000000000000000000000000000000000000000 PUSH2 0x661 DUP3 PUSH2 0xD57 JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC59 JUMP JUMPDEST CALLVALUE PUSH2 0x1DF JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DF JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x68A PUSH2 0xC13 JUMP JUMPDEST SWAP1 PUSH2 0x694 DUP2 PUSH2 0xDF2 JUMP JUMPDEST SWAP2 PUSH1 0x1B DUP4 ADD SWAP3 PUSH1 0xFF DUP5 SLOAD AND ISZERO PUSH2 0xBE9 JUMPI PUSH1 0x40 MLOAD PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x20 DUP2 PUSH1 0x44 DUP2 ADDRESS GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 SWAP2 PUSH2 0xBB7 JUMPI JUMPDEST POP PUSH1 0x18 DUP3 ADD SWAP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x731 PUSH2 0x724 DUP7 SLOAD PUSH1 0x1E DUP8 ADD PUSH2 0xD25 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR DUP5 PUSH2 0x10A5 JUMP JUMPDEST DIV PUSH1 0x5 DUP5 ADD SLOAD SWAP1 DUP2 DUP5 MUL SWAP2 DUP5 DUP4 DIV EQ DUP5 ISZERO OR ISZERO PUSH2 0x920 JUMPI PUSH2 0x751 SWAP2 PUSH2 0xD3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x25 DUP6 ADD SLOAD PUSH1 0x20 SHR AND SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x26 DUP7 ADD SLOAD AND SWAP3 PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP5 PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x44 DUP2 DUP6 GAS STATICCALL DUP1 ISZERO PUSH2 0x21B JUMPI DUP5 SWAP2 PUSH1 0x0 SWAP2 PUSH2 0xB82 JUMPI JUMPDEST POP LT PUSH2 0xAFE JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 PUSH1 0x0 PUSH1 0x64 SWAP3 PUSH1 0x20 SWAP6 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE PUSH1 0x4 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 SWAP2 PUSH2 0xABF JUMPI JUMPDEST POP ISZERO PUSH2 0xA61 JUMPI PUSH1 0x19 DUP3 ADD SWAP1 DUP2 SLOAD DUP2 DUP2 LT PUSH2 0x9DD JUMPI PUSH1 0x1A DUP5 ADD SWAP1 DUP2 SLOAD SWAP4 DUP4 DUP6 LT PUSH2 0x959 JUMPI DUP4 SWAP3 DUP4 DUP7 SUB SWAP1 SSTORE DUP3 DUP3 SUB SWAP1 SSTORE EQ SWAP2 DUP3 PUSH2 0x94F JUMPI JUMPDEST POP POP PUSH2 0x886 JUMPI STOP JUMPDEST PUSH1 0x21 ADD DUP2 SLOAD SWAP1 DUP1 SLOAD DUP3 LT ISZERO PUSH2 0x427 JUMPI PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 DUP2 PUSH1 0x5 SHR ADD SWAP1 PUSH1 0xF8 DUP3 SLOAD SWAP2 PUSH1 0x3 SHL AND SWAP1 PUSH1 0xFF PUSH1 0x1 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 SSTORE PUSH32 0x6B427E348FE584275FB02DE76D900738365C7D93AFFD48FB998EBF4FB54787EB PUSH1 0x40 DUP3 SLOAD SWAP4 DUP2 MLOAD SWAP1 DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE LOG1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x920 JUMPI SSTORE DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE STOP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ SWAP1 POP DUP6 DUP1 PUSH2 0x87E JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E646572666C6F7720646574656374656420696E206E657874206361706974 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C20616D6F756E740000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E646572666C6F7720646574656374656420696E206E65787420696E746572 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x65737420616D6F756E7400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E73666572206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xAF6 JUMPI JUMPDEST DUP2 PUSH2 0xAD8 PUSH1 0x20 SWAP4 DUP4 PUSH2 0xCB5 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0xAF2 JUMPI MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x210 JUMPI POP DUP7 PUSH2 0x847 JUMP JUMPDEST POP DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xACB JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 POP POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xBAF JUMPI JUMPDEST DUP2 PUSH2 0xB9E PUSH1 0x20 SWAP4 DUP4 PUSH2 0xCB5 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1DF JUMPI DUP4 SWAP1 MLOAD DUP12 PUSH2 0x7D7 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xB91 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xBE1 JUMPI JUMPDEST DUP2 PUSH2 0xBD1 PUSH1 0x20 SWAP4 DUP4 PUSH2 0xCB5 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x210 JUMPI POP MLOAD DUP6 PUSH2 0x704 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xBC4 JUMP JUMPDEST PUSH32 0x13E45DD700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1DF JUMPI JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1DF JUMPI JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xC7D JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xC70 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xCF6 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 SLOAD DUP3 LT ISZERO PUSH2 0x427 JUMPI PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 PUSH1 0x0 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x920 JUMPI JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x427 JUMPI PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x427 JUMPI PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xD6E JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920746865206F776E65722063616E2063616C6C20746869732066756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6374696F6E000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST DUP1 DUP2 PUSH1 0x0 SWAP3 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP2 LT ISZERO PUSH2 0x1040 JUMPI JUMPDEST POP DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x1025 JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x1011 JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x1000 JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0xFF1 JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0xFE3 JUMPI JUMPDEST LT ISZERO PUSH2 0xFD8 JUMPI JUMPDEST PUSH1 0xA PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x21 PUSH1 0x1 DUP6 ADD SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0xEDC PUSH2 0xEC6 DUP9 PUSH2 0x106B JUMP JUMPDEST SWAP8 PUSH2 0xED4 PUSH1 0x40 MLOAD SWAP10 DUP11 PUSH2 0xCB5 JUMP JUMPDEST DUP1 DUP10 MSTORE PUSH2 0x106B JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP9 ADD CALLDATACOPY DUP6 ADD ADD JUMPDEST ADD SWAP2 PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0xF41 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xA SWAP2 SWAP3 PUSH2 0xEE7 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x73746F726167652E626F6E640000000000000000000000000000000000000000 DUP4 MSTORE DUP2 DUP2 MLOAD SWAP2 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0xFC0 JUMPI POP POP DUP1 PUSH2 0xFBA SWAP3 PUSH1 0x2C SWAP3 ADD PUSH1 0x0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0xCB5 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP3 DUP3 ADD DUP2 ADD MLOAD PUSH1 0x2C DUP8 DUP5 ADD ADD MSTORE DUP6 SWAP4 POP ADD PUSH2 0xF75 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0xE6F JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0xE68 JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0xE5E JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0xE53 JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0xE46 JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0xE36 JUMP JUMPDEST PUSH1 0x40 SWAP4 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 SWAP1 DIV SWAP1 POP PUSH1 0xA PUSH2 0xE1B JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xCF6 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP3 MULMOD DUP4 DUP3 MUL SWAP2 DUP3 DUP1 DUP4 LT SWAP3 SUB SWAP2 DUP1 DUP4 SUB SWAP3 EQ PUSH2 0x1163 JUMPI PUSH8 0xDE0B6B3A7640000 DUP3 LT ISZERO PUSH2 0x1131 JUMPI PUSH32 0xACCB18165BD6FE31AE1CF318DC5B51EEE0E1BA569B88CD74C1773B91FAC10669 SWAP4 SWAP5 PUSH8 0xDE0B6B3A7640000 SWAP2 MULMOD SWAP1 DUP3 DUP3 GT SWAP1 SUB PUSH1 0xEE SHL SWAP2 SUB PUSH1 0x12 SHR OR MUL SWAP1 JUMP JUMPDEST DUP5 SWAP1 PUSH32 0x5173648D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH21 0x7FF88A9DD30974B4D2001E0CA82E9AABF4623BD890 RETURNDATASIZE 0xE NOT DUP6 0xD6 0xEF 0xC6 PUSH2 0x7E7F PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "380:3289:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;380:3289:60;;;;;779:54;380:3289;;;;;:::i;:::-;727:20;;;;:::i;:::-;380:3289;;;779:54;;;;;380:3289;779:54;;380:3289;779:54;;380:3289;;;;;;;;;;;;;;;;;779:54;;800:4;;779:54;;;;;;;380:3289;779:54;;;380:3289;851:16;;;380:3289;;;987:26;;;1548:30;987:26;;380:3289;957:29;1663:4:46;18999:39:50;1105:59:60;957:29;18999:39:50;957:57:60;:29;;;;:57;:::i;:::-;380:3289;;;;;;18999:39:50;;:::i;:::-;1663:4:46;1105:31:60;;;;:59;:::i;:::-;380:3289;;;;;;18999:39:50;;:::i;:::-;1663:4:46;1177:33:60;;;;380:3289;1177:48;380:3289;;;1177:48;:::i;:::-;380:3289;;;1235:47;:32;;;380:3289;;;1235:47;:::i;:::-;380:3289;;;1346:27;;;380:3289;1310:63;;;:147;;;;380:3289;1293:239;;;;380:3289;1548:30;;:::i;:::-;380:3289;;;;;;1293:239;1482:32;;380:3289;;;;;;;;1293:239;;;1310:147;1393:64;;-1:-1:-1;1310:147:60;;;;380:3289;;;;779:54;;;380:3289;779:54;;380:3289;779:54;;;;;;380:3289;779:54;;;:::i;:::-;;;380:3289;;;;;;779:54;;;;380:3289;;;779:54;;;-1:-1:-1;779:54:60;;;380:3289;;;;;;;;;;;;;;-1:-1:-1;;380:3289:60;;;;;;;:::i;:::-;102:47:63;380:3289:60;;;;;;1129:10:63;:38;1121:88;;;;:::i;:::-;380:3289:60;775:23:63;;;380:3289:60;;1121:88:63;380:3289:60;1121:88:63;;:::i;:::-;380:3289:60;;102:47:63;380:3289:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;380:3289:60;;;;;;;;;;;:::i;:::-;1355:1:63;380:3289:60;;;;;;;;1382:29:63;1367:44;;;:::i;:::-;380:3289:60;1436:41:63;1421:56;;;:::i;:::-;380:3289:60;;;1497:1:63;380:3289:60;;;;;1502:39:63;380:3289:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;380:3289:60;;;;;;;102:47:63;380:3289:60;;;;;;;;;;;;;-1:-1:-1;;380:3289:60;;;;;;;:::i;:::-;;102:47:63;380:3289:60;;;;;;;102:47:63;380:3289:60;;;102:47:63;380:3289:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;380:3289:60;;;;;;;;;;;;:::i;:::-;3508:1;380:3289;;;;;;;;3536:32;3521:47;;;:::i;:::-;380:3289;3593:40;3578:55;;;:::i;:::-;380:3289;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;380:3289:60;;;;;;;;;:::i;:::-;1745:20;;;;:::i;:::-;1780:32;;;;380:3289;;;;;1779:33;1775:107;;380:3289;;;1914:54;;380:3289;;;;1914:54;;380:3289;;;;;;;;;;;1935:4;1914:54;;;;;;;380:3289;1914:54;;;380:3289;2087:26;;;;380:3289;1663:4:46;18999:39:50;2057:57:60;380:3289;;2057:29;;;:57;:::i;:::-;380:3289;;;;;;18999:39:50;;:::i;:::-;1663:4:46;2163:22:60;;;380:3289;;;;;;;;;;;;;;;;2149:53;;;:::i;:::-;380:3289;2245:30;;;380:3289;;;;2287:21;380:3289;2287:21;;;380:3289;;;;;;2239:85;;;380:3289;2239:85;;380:3289;1935:4;380:3289;;;;;2239:85;;;;;;;;;;;;380:3289;2239:85;;;380:3289;2342:31;;380:3289;;;;;2484:94;380:3289;;;;;2484:94;;;;;380:3289;2484:94;;380:3289;2484:94;;380:3289;;;;;;2239:85;380:3289;;;2484:94;;;;;;;380:3289;2484:94;;;380:3289;;;;;2648:33;;;380:3289;;;2648:48;;;380:3289;;2762:32;;;380:3289;;;2762:47;;;;380:3289;;;;;;;;;;;;;;3022:38;:79;;;;380:3289;3018:363;;;;380:3289;3018:363;3117:27;;380:3289;;;;;;;;;;;;;;;;2163:22;380:3289;;;;;;;;;;;;;;;;;;;;;;3215:56;380:3289;;;;;;;;;;;;;;3215:56;380:3289;;;;;;;;;;;;;;;;;;;;;;;;;;3022:79;3064:37;;-1:-1:-1;3022:79:60;;;;380:3289;;;;;;;;;;;;;;;;;;2239:85;380:3289;;;;2484:94;380:3289;;;;;;;;;;;;;;;;;;;;;;2239:85;380:3289;;;;2484:94;380:3289;;;;;2484:94;380:3289;;;;;;;;;;;;;;;;2239:85;380:3289;;;;2484:94;380:3289;2484:94;;380:3289;2484:94;;;;;;380:3289;2484:94;;;:::i;:::-;;;380:3289;;;;;;;;;;;;;2484:94;;;;380:3289;;;;2484:94;;;-1:-1:-1;2484:94:60;;380:3289;;;;;;;;;;;;;;;;;;2239:85;380:3289;;;;;;;;;2239:85;;;;380:3289;2239:85;;380:3289;2239:85;;;;;;380:3289;2239:85;;;:::i;:::-;;;380:3289;;;;;;;2239:85;;;;;;-1:-1:-1;2239:85:60;;1914:54;;380:3289;1914:54;;380:3289;1914:54;;;;;;380:3289;1914:54;;;:::i;:::-;;;380:3289;;;;;;1914:54;;;;;;-1:-1:-1;1914:54:60;;1775:107;1835:36;380:3289;1835:36;380:3289;;1835:36;380:3289;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;380:3289:60;;;;;-1:-1:-1;380:3289:60;;;;;;;;;-1:-1:-1;380:3289:60;;-1:-1:-1;380:3289:60;;;-1:-1:-1;380:3289:60;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;3588:1;380:3289;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;2387:241:58;2538:22;1430:17:15;-1:-1:-1;29282:17:18;29291:8;29282:17;;;29278:103;;2387:241:58;29398:17:18;;29407:8;29978:7;29398:17;;;29394:103;;2387:241:58;29523:8:18;29514:17;;;29510:103;;2387:241:58;29639:7:18;29630:16;;;29626:100;;2387:241:58;29752:7:18;29743:16;;;29739:100;;2387:241:58;29865:7:18;29856:16;;;29852:100;;2387:241:58;29969:16:18;;29965:66;;2387:241:58;29978:7:18;380:3289:60;1545:94:15;1450:1;380:3289:60;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;1545:94:15;;;1652:247;380:3289:60;1706:111:15;;;;;;;;1663:4:46;1867:10:15;;1863:21;;380:3289:60;29978:7:18;1652:247:15;;;;1863:21;1879:5;;380:3289:60;;;2505:56:58;;380:3289:60;;;;;;;;-1:-1:-1;380:3289:60;;;;;;;;;2505:56:58;380:3289:60;;;;-1:-1:-1;380:3289:60;;;;2505:56:58;;380:3289:60;2505:56:58;;;;;;:::i;:::-;380:3289:60;2495:67:58;;2387:241;:::o;380:3289:60:-;;;;;;;;;;;;;;;;-1:-1:-1;380:3289:60;;;29965:66:18;30015:1;380:3289:60;;;;29965:66:18;;29852:100;29865:7;29936:1;1663:4:46;;380:3289:60;;29852:100:18;;;29739;29752:7;29823:1;1663:4:46;;380:3289:60;;29739:100:18;;;29626;29639:7;29710:1;1663:4:46;;380:3289:60;;29626:100:18;;;29510:103;29523:8;29596:2;1663:4:46;;380:3289:60;;29510:103:18;;;29394;29407:8;29480:2;1663:4:46;;380:3289:60;;29394:103:18;;;29278;29364:2;;-1:-1:-1;29291:8:18;1663:4:46;;;-1:-1:-1;29978:7:18;29278:103;;380:3289:60;;;;;;;;;;;;;:::o;19680:819:21:-;;;;19794:150;;;;;;;;;;;;;;;;;;19954:10;;19950:86;;1663:4:46;20046:13:21;;;20042:74;;20145:352;;;1663:4:46;20145:352:21;;;;;;;;;;;;;;;;19680:819;:::o;20042:74::-;20078:31;;;380:3289:60;20078:31:21;;380:3289:60;;;;;20078:31:21;19950:86;-1:-1:-1;;1663:4:46;;;;-1:-1:-1;20000:19:21:o"
            },
            "methodIdentifiers": {
              "claimCoupon(uint256,address)": "f9765634",
              "getSelectors()": "4b503f0b",
              "getSelectorsOwnership()": "b4105004",
              "initializeOwner(address)": "8c5f36bb",
              "owner()": "8da5cb5b",
              "transferOwnership(address)": "f2fde38b",
              "withdrawCouponClaim(uint256,address)": "22e29d59"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NotAllClaimsReceivedForNextPayment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"name\":\"PRBMath_MulDiv18_Overflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lineNumber\",\"type\":\"uint256\"}],\"name\":\"CouponStatusChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"claimCoupon\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSelectors\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSelectorsOwnership\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"initializeOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"withdrawCouponClaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"PRBMath_MulDiv18_Overflow(uint256,uint256)\":[{\"notice\":\"Thrown when the resultant value in {mulDiv18} overflows uint256.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/CouponFacet.sol\":\"CouponFacet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0xf189f9b417fe1931e1ab706838aff1128528694a9fcdb5ff7665197f2ca57d09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ff0143c836c8c9f85d13708733c09e21251395847fccfb518bf3b556726a840\",\"dweb:/ipfs/QmP69sjjrQrhYAsvCSSB69Bx66SiUPdQUqdzMYnf4wANHm\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8\",\"dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"]},\"@prb/math/src/UD60x18.sol\":{\"keccak256\":\"0xb98c6f74275914d279e8af6c502c2b1f50d5f6e1ed418d3b0153f5a193206c48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a750edde2955f160806a51083a12185fb04e20efca0e3a7ebd127dc1acc049a9\",\"dweb:/ipfs/QmeAre3mThopoQPB9mSXZq6jck59QZ7JbDFR83urd2SLvp\"]},\"@prb/math/src/sd1x18/Casting.sol\":{\"keccak256\":\"0x5d365f655f01598926c5d4fe5cda277f2cc7736fe38f943c11a32009077ddd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b378bd6039819bc12e5f17dabd9492e1410b3281f9df496cf8210539101a11\",\"dweb:/ipfs/QmcMaE64ZWMg9cFhYxdTuG8nfzeDdNuTRHMMoFXi6tSZGu\"]},\"@prb/math/src/sd1x18/Constants.sol\":{\"keccak256\":\"0xc14cc32061863d83912f9616de86f3c34f1ac58614b7d504c6ce07ee8efdb8e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22483b1282dda6a556b0232f008a5a3296bbfd76b1886e6b72bf351b7c554fab\",\"dweb:/ipfs/QmYX9cYkrFxBbhZNKsb6uUxtrc2chmAj7vuc7UKRPGMwos\"]},\"@prb/math/src/sd1x18/Errors.sol\":{\"keccak256\":\"0xc3c8b1ab3d19889c356c222a3a2186d45dfc1d3a17b9ad88159bb64ee457baa6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84fbe57569246403f778330bd7723018dfcb5f0ec50d7b1d82cc983c94a54bca\",\"dweb:/ipfs/QmWssAAnovc2EVjt58rTnxraE9B1RMivwTvYCYgpnr6oSE\"]},\"@prb/math/src/sd1x18/ValueType.sol\":{\"keccak256\":\"0xaa9dc7b562faf45264390d80e2ea10c5295bb8a4f10d76261a3f9c04363734c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6ca36acd15f5cb47cf124ddec289f84e1011f2d29056159e4570435629a3353\",\"dweb:/ipfs/QmUKdiLmZpAkNCq2TKxrPbQPUhiRFXGfjGSnY1VeHVu4y6\"]},\"@prb/math/src/sd21x18/Casting.sol\":{\"keccak256\":\"0x4a16adddb9ab1f6939dd4567c77205015a11081cb840029b84bbb6fdaf78ee36\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5003b2f4cd2fc1413da36bc63107c6e83a88d29693e8f97b54f300fa78f9c6d2\",\"dweb:/ipfs/QmaNJn91NLrZmeeGqnFQV1FTrLVSW852zHyWTrWJ5pf1pd\"]},\"@prb/math/src/sd21x18/Constants.sol\":{\"keccak256\":\"0x501c2d5cfdea9450422182059c8df1cb6a859901a07bd59631c3fa24edcc79d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4669a65001c92919671fd879d33ce0e5030b602a7ba4d36bd2308128d8d1f396\",\"dweb:/ipfs/QmUC3bJ3qdkCmLMw3WHBcEqvuC4tExT2LXzUhgu5KQ3vi3\"]},\"@prb/math/src/sd21x18/Errors.sol\":{\"keccak256\":\"0xc5422ee47eb139274e538e758fb40177a1ba22c2113ef3b3446102f0150bfe0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1981e052e9e86e1b0e4e55a057a7af4739aedd4ead2d60e3eaa40fb703594ee\",\"dweb:/ipfs/QmPK5qSujnyk1R8ues4RhDMy1tRKKyjQ31YJTviTKq7GML\"]},\"@prb/math/src/sd21x18/ValueType.sol\":{\"keccak256\":\"0x532bba888370bed393464412f4ef3462d654802e71c953ad02d078e3d2701092\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://922a4e8dd813602f72d165aa1dfdf2c29b971a2abe73bebca7cd81a32ee2c880\",\"dweb:/ipfs/QmTBAJnx1r3sZpbQAuTgQtsTtvjZbpDwhCJRzkhzUumbdf\"]},\"@prb/math/src/sd59x18/Casting.sol\":{\"keccak256\":\"0xdf70d8e70c6d6325f3f7eb028c484bc7189ef902f1d4b5b220af2e550bb5fc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0b15bcd36129c5cb163d57a117435afb171182018dd6d1e766a5f49cf1f4b63d\",\"dweb:/ipfs/QmbjzkMBH4FM2rdxGbx9LQ65wVERijNcu7R9C8dQmH3y4n\"]},\"@prb/math/src/sd59x18/Constants.sol\":{\"keccak256\":\"0x9bcb8dd6b3e886d140ad1c32747a4f6d29a492529ceb835be878ae837aa6cc3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4045c633e3618e7e90a768d92415b2f20f781fe129b4f4e26fa88f7dbf9201f\",\"dweb:/ipfs/Qmbet95pizwPno82cJ383wJtgQRSQKESmhVZ1vDrgAu7Si\"]},\"@prb/math/src/sd59x18/Errors.sol\":{\"keccak256\":\"0x0a79c28c85fc8a450b0801ff2e66114eac4ec565819f5d1d8738904658fe33e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e0d4fd3c998019fb8555d9e26c03bec42a8513bdf4185aeac2da3a000abaebf\",\"dweb:/ipfs/QmahFJHXcX4RwPxaQbUf6LVZEk8NSpjCV3Eif7i9iqC6Mk\"]},\"@prb/math/src/sd59x18/Helpers.sol\":{\"keccak256\":\"0x208570f1657cf730cb6c3d81aa14030e0d45cf906cdedea5059369d7df4bb716\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c78ca900edafa9338d4e3649a55ab0c84f76468d8a22fb945ba6d01e70f8fed\",\"dweb:/ipfs/QmeP4hQYfNxcATd1FsasdD4ebyu2vrC9K1N68swxUJzzZD\"]},\"@prb/math/src/sd59x18/Math.sol\":{\"keccak256\":\"0xd8e8b51db9b3e2fa31a60f6b8ce4ea0112c3364442ede5992aa0aa7a2c925c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c56913970e34ee7b142047b21f1856a511cbdc3473b7c50418a8490e19cd462\",\"dweb:/ipfs/QmfG1F9CBDjPYD7NXora9awFfdpvBMY9SCg5pMLCFRv9tD\"]},\"@prb/math/src/sd59x18/ValueType.sol\":{\"keccak256\":\"0x76597ba64d37d66e0178512bc9bbc1a031a7634c45e5d5c6e9da87f46952dc9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36148899ad874814e9292636fb974d2eec61f1bcc0875ec39cf444d70ba40919\",\"dweb:/ipfs/QmadUe4kH2FPcdxvhCKy8yiezCvPWor4VcPzqLYSAaGDDb\"]},\"@prb/math/src/ud21x18/Casting.sol\":{\"keccak256\":\"0x3821aa57604f6e5b7c9c5c5cc97a6d71116e673cf3fee5f76fcd42b4cefded65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a80399c6b38ab45cc10d0a6683d50340cd89d9a085b6d0dcfb81e7c4e5b3ce09\",\"dweb:/ipfs/QmWNW2YD2LMkqrpAtJYeeuHN329Rx7mvfmrjsCo1p6akTL\"]},\"@prb/math/src/ud21x18/Constants.sol\":{\"keccak256\":\"0x0997574a1ced6c43bde6d9c9175edc5ad64cbb920a0969a9db68eea543747601\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c09f03345a6779b002b38ffc3954258accbb2b1d0d5506d42c3bd7f117304f60\",\"dweb:/ipfs/QmTeBXRCE7H2HpqKUNsZN7Nk3rdBnFmbAUFom3E1PJeGuV\"]},\"@prb/math/src/ud21x18/Errors.sol\":{\"keccak256\":\"0x35a1fb789b90f8c90865884d3023deb17fcca5c7146b5ddef823496d835a5415\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0af359d07ba25bdc90de7c05ed6216833932caa75d4a02fcfc51ceeaba5a4e80\",\"dweb:/ipfs/QmavBFw73Xfp1qJiN6P1gk2Dfr8ByWo3dyCPVgDHtko2gq\"]},\"@prb/math/src/ud21x18/ValueType.sol\":{\"keccak256\":\"0x24838b2b1da371b9259d8ee21534a9f0cb5796aba75a4efca2374627952bee25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://897e6b79308651671c7f3c91a0069e778b47356c9ba3f86e238398ab7f2623af\",\"dweb:/ipfs/QmZbLw3tJVRZFQnV9jWQUmF43gna841adSG2TAiwDAifGU\"]},\"@prb/math/src/ud2x18/Casting.sol\":{\"keccak256\":\"0x0f3141ed054e7c29dbe1acb4b88b18eb05d60e998fba6b4e503a6799faa356d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1e2468fc4c458082aaf4aa2e35af9ba3702f207e3c8533dd1e7da11ad605eae\",\"dweb:/ipfs/QmSm7iRH1eo4cJCwcAiiXWRH9Hn1urSS4tMdbaFbFGuTyL\"]},\"@prb/math/src/ud2x18/Constants.sol\":{\"keccak256\":\"0x29b0e050c865899e1fb9022b460a7829cdee248c44c4299f068ba80695eec3fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbaef16b662fac235349bcf97bc980dd0cba15d4e6230caae61224cdac8ea6d9\",\"dweb:/ipfs/QmZQa5XBhi7k3yhtCd8wVpnwW8htfU4sjXxWhxRypMBYkC\"]},\"@prb/math/src/ud2x18/Errors.sol\":{\"keccak256\":\"0x3b27e2a57438cd30d9c130f84aace24d547e5ed58e8689691d7d92ad2db38ddd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841cf9fb45443899c6b659300bbf503c3fd2c1a1e83b7f0e28620eed457f7437\",\"dweb:/ipfs/QmUqg8WscP5yQPw3UMUCWaB9RLU6nryGzseuyhAjNnDc1i\"]},\"@prb/math/src/ud2x18/ValueType.sol\":{\"keccak256\":\"0x975a2e69b48f34a4c0bd80e8a5609ac67b7264c91992c0944f9ebe7b9e3fc9d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d012521c475295d7e70b7d526fcc0911d0f238ea938719d77251bba00c9b41\",\"dweb:/ipfs/QmexEvTQCCBPYRWAYnomZX5M7C2EkXQRAXqEYMNUZfazCs\"]},\"@prb/math/src/ud60x18/Casting.sol\":{\"keccak256\":\"0x0803318ddc98b4ba8fbfe70e5ee08d78387fe6ae00982b9960518085a751d7b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e68a2f780b2e33fa5416eb60f9daa81f014c2591119f4b67bed1217d5530780\",\"dweb:/ipfs/QmZe7JTWvbfKqMnu4sxUwWCtLcCay9hH71VZUpoFCdENcr\"]},\"@prb/math/src/ud60x18/Constants.sol\":{\"keccak256\":\"0x2b80d26153d3fdcfb3a9ca772d9309d31ed1275f5b8b54c3ffb54d3652b37d90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e3a6673a156f635db94dc176baaa7274db8f9bec4461cd1152596253550ee3b\",\"dweb:/ipfs/Qmc9zT4kNSbMYaXcnbxNVqmb3P3m46ieaQxkwxqLwsvRA5\"]},\"@prb/math/src/ud60x18/Conversions.sol\":{\"keccak256\":\"0xd486ecca97abe69acdb28230088f4c7097fbdae5b36c5ae45d5be2faac4c33f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6080870ec6955ff0f5278f9c480b218a68714daf5f2ee42da0276d08d7b82932\",\"dweb:/ipfs/QmQ1SERHdemJgPrt4USwY8j5r63jZ8fQuJAm1knjMEEQEY\"]},\"@prb/math/src/ud60x18/Errors.sol\":{\"keccak256\":\"0xbab6b0e303d32f3a9d9e2fe881f0392b8c59a73051a4d34f21a403b3961b3044\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86a019bcf2510d0691287329dc057479cc0abc48a5e15f245e7f15c03052d2c8\",\"dweb:/ipfs/QmeXe5pbpDHvN5DZ8puXmH2RJ25zDHj55wpiStWtNQPvq6\"]},\"@prb/math/src/ud60x18/Helpers.sol\":{\"keccak256\":\"0xf5faff881391d2c060029499a666cc5f0bea90a213150bb476fae8f02a5df268\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://76105fa22bb1b5f1fa99abf9c4fbc9577a02c7bc204f271754c407f0d75489f5\",\"dweb:/ipfs/QmVNGZSTniDuZus5DdbFubqJXCLtTaZit7YPm4ntjr5Lgr\"]},\"@prb/math/src/ud60x18/Math.sol\":{\"keccak256\":\"0xc4e51dfd9af62938e277e90fa724099f239d33727a35909ed48c292a76faf2fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d731537cbc50b852c21d28625aeb2c329729afc23a7b86ff9d8ee5878f47e9d6\",\"dweb:/ipfs/QmS7Cj4pAdPZcTp7RqYXyxBc9EYX92CT8icfkNigktUsLr\"]},\"@prb/math/src/ud60x18/ValueType.sol\":{\"keccak256\":\"0x1b200baf25d01a8b91b97b42114248636f742b5b7028487ef4daef6621e378a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5708ed017206bda2197654e80bea9f37b3a9993434bb066c903c2865e028f47\",\"dweb:/ipfs/QmTyotZk2J5YvWkNvB2qhXBMgRGWW2UgPqR4JPocrXSr8n\"]},\"contracts/facets/BondStorage.sol\":{\"keccak256\":\"0x309fb35d407d76e4c52f9450ba5ca2a5a33e61f9a6491b0475549b8331063715\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://c3d0d639c7550e1a5ae03a1c8e55af981f7099aef468f23ae2a15772608f83d3\",\"dweb:/ipfs/QmVLf6By5sfY8S1Vz7XXnEVkEJtZSdZvWe5FAY1sTudRKQ\"]},\"contracts/facets/ContextFacet.sol\":{\"keccak256\":\"0xa69df7f300440ace22b947b9a427947a1c9ed13a36698000bbd691eb12d866c1\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://6bced063a2115957d7cf61b66443323c1d114ef81e96dde6a404888305ebd47e\",\"dweb:/ipfs/QmRKApAXqTCAMcBor8UMBFnmEJokQtfNA7ef7fn45Cq22e\"]},\"contracts/facets/CouponFacet.sol\":{\"keccak256\":\"0x008b87d63c0142ec4b1be29d8d193a3b7d6b4910ff7d3c3ffe2b4343ce394cf6\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://33f71ea51dcedd404d5bb744b2220a4198071b314b878003ee5fc94bc118b23a\",\"dweb:/ipfs/QmVUvF64gWmwa7EfjFGx7DGdpFBvpB6qLHBi9AyW84nWe1\"]},\"contracts/facets/ERC1155Facet.sol\":{\"keccak256\":\"0x318c66c5f522cdac6907acbc1fbf4033be1b8631796d7589b0c1264a24602644\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://bfe8408141ec71d6b7221a9db0c3e0168551e5b23731138a55128d5288d38218\",\"dweb:/ipfs/QmU2JNfnD7hCePchoGiWh3tR2RD2n9sQpDA8PvfYtrgDZD\"]},\"contracts/facets/OwnershipFacet.sol\":{\"keccak256\":\"0x0f4b3ddcebde62df41c3646cdb54b3908d94a624c1d8bad46da4ac21b3f6702f\",\"urls\":[\"bzz-raw://73ae296c47d5ce73d2f568c992cf7c3ac612e92f9d144f5a5b8026a97e717c04\",\"dweb:/ipfs/QmZoBj7ZMd3oUptXw3f9aPJKypN4w7z472C4cgSe8E96Cr\"]}},\"version\":1}"
        }
      },
      "contracts/facets/DiamondLoupeFacet.sol": {
        "DiamondLoupeFacet": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_functionSelector",
                  "type": "bytes4"
                }
              ],
              "name": "facetAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "facetAddress_",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "facetAddresses",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "facetAddresses_",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_facet",
                  "type": "address"
                }
              ],
              "name": "facetFunctionSelectors",
              "outputs": [
                {
                  "internalType": "bytes4[]",
                  "name": "_facetFunctionSelectors",
                  "type": "bytes4[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "facets",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "facetAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes4[]",
                      "name": "functionSelectors",
                      "type": "bytes4[]"
                    }
                  ],
                  "internalType": "struct IDiamondLoupe.Facet[]",
                  "name": "facets_",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSelectors",
              "outputs": [
                {
                  "internalType": "bytes4[]",
                  "name": "",
                  "type": "bytes4[]"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601557610e0f908161001b8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806301ffc9a7146100775780634b503f0b1461007257806352ef6b2c1461006d5780637a0ed62714610068578063adfca15e146100635763cdffacc61461005e57600080fd5b610a4e565b6108e3565b610607565b61033f565b6101a3565b346100e957602060ff6100dd61008c366100ee565b7fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e602052604060002090565b54166040519015158152f35b600080fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60209101126100e9576004357fffffffff00000000000000000000000000000000000000000000000000000000811681036100e95790565b602060408183019282815284518094520192019060005b81811061016b5750505090565b82517fffffffff000000000000000000000000000000000000000000000000000000001684526020938401939092019160010161015e565b346100e95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e9576101dc60c0610aaf565b600581526020810160a03682378151156102ea577f7a0ed6270000000000000000000000000000000000000000000000000000000090528051600110156102ea577fcdffacc60000000000000000000000000000000000000000000000000000000060408201526102e69061027861025382610b89565b7fadfca15e000000000000000000000000000000000000000000000000000000009052565b6102a961028482610b99565b7f52ef6b2c000000000000000000000000000000000000000000000000000000009052565b6102da6102b582610ba9565b7f01ffc9a7000000000000000000000000000000000000000000000000000000009052565b60405191829182610147565b0390f35b610b5a565b602060408183019282815284518094520192019060005b8181106103135750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101610306565b346100e95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e9577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d5461039981610b10565b600080925b8084106103b657818352604051806102e685826102ef565b906104416104276103d66103c987610bda565b90549060031b1c60e01b90565b7fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b600073ffffffffffffffffffffffffffffffffffffffff8216815b8481106104b2575b50506104a8578161049961049e9261047e60019588610bc6565b9073ffffffffffffffffffffffffffffffffffffffff169052565b610c88565b935b01929061039e565b50926001906104a0565b6104f56104dc6104c2838a610bc6565b5173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b82146105035760010161045c565b50505060013880610464565b602081016020825282518091526040820190602060408260051b8501019401916000905b82821061054257505050505090565b9091929395947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087820301825284516020606081604085019373ffffffffffffffffffffffffffffffffffffffff81511686520151936040838201528451809452019201906000905b8082106105cd5750505060208060019296019201920190929195939495610533565b9091926020806001927fffffffff0000000000000000000000000000000000000000000000000000000087511681520194019201906105ab565b346100e95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e9577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d5461066181610cba565b61066a82610b10565b916000906000905b8082106106cc57505060005b81811061069657818352604051806102e6858261050f565b806106b66106b06106a960019488610bc6565b5160ff1690565b60ff1690565b60206106c28387610bc6565b510151520161067e565b90916106da6103c984610bda565b610732610427827fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b60008073ffffffffffffffffffffffffffffffffffffffff83165b85821061080c575b505061080157916107e56107f89261078f600195610773858b610bc6565b519073ffffffffffffffffffffffffffffffffffffffff169052565b61079886610b10565b60206107a4858b610bc6565b5101526107be60206107b6858b610bc6565b510151610bb9565b907fffffffff00000000000000000000000000000000000000000000000000000000169052565b6104996107f28289610bc6565b60019052565b925b0190610672565b5050916001906107fa565b806108436104dc610828858d989c9d9e97969e9b999a9b610bc6565b515173ffffffffffffffffffffffffffffffffffffffff1690565b1461085e576001809a0191929950979692979594939561074d565b505096806108b360ff806108ac6106a9858e6108a78a9f9e9a9c6107be819d9f9e61088e6108da9d602092610bc6565b5101516108a16106b06106a98888610bc6565b90610bc6565b610bc6565b1610610d3d565b6108d26108cb6108c66106a9848d610bc6565b610dc8565b918a610bc6565b9060ff169052565b60013880610755565b346100e95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e95760043573ffffffffffffffffffffffffffffffffffffffff81168091036100e9577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d54600061096082610b10565b9160005b81811061097c57828452604051806102e68682610147565b61098581610bda565b90549060031b1c60e01b73ffffffffffffffffffffffffffffffffffffffff6109f9827fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b54168614610a0b575b50600101610964565b83610a47917fffffffff00000000000000000000000000000000000000000000000000000000610a3e6001959789610bc6565b91169052610c88565b9290610a02565b346100e957602073ffffffffffffffffffffffffffffffffffffffff610a766103d6366100ee565b5416604051908152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff821117610af357604052565b610a80565b67ffffffffffffffff8111610af35760051b60200190565b90610b22610b1d83610af8565b610aaf565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610b508294610af8565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051600210156102ea5760600190565b8051600310156102ea5760800190565b8051600410156102ea5760a00190565b8051156102ea5760200190565b80518210156102ea5760209160051b010190565b907fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d548210156102ea577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d600052600382901c7fc0d727610ea16241eff4447d08bb1b4595f7d2ec4515282437a13b7d0df4b922019160021b601c1690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cb55760010190565b610c59565b90610cc7610b1d83610af8565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610cf58294610af8565b0160005b818110610d0557505050565b60405190604082019180831067ffffffffffffffff841117610af3576020926040526000815260608382015282828601015201610cf9565b15610d4457565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f616d6f756e74206f662066756e6374696f6e2068617320746f206265206c657360448201527f73207468616e20323535000000000000000000000000000000000000000000006064820152fd5b60ff1660ff8114610cb5576001019056fea2646970667358221220e64547815a907a6c8a156394e62faad5b4111130079d43a985a922fd9bb80e0d64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0xE0F SWAP1 DUP2 PUSH2 0x1B DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x4B503F0B EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x52EF6B2C EQ PUSH2 0x6D JUMPI DUP1 PUSH4 0x7A0ED627 EQ PUSH2 0x68 JUMPI DUP1 PUSH4 0xADFCA15E EQ PUSH2 0x63 JUMPI PUSH4 0xCDFFACC6 EQ PUSH2 0x5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA4E JUMP JUMPDEST PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x607 JUMP JUMPDEST PUSH2 0x33F JUMP JUMPDEST PUSH2 0x1A3 JUMP JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH2 0xDD PUSH2 0x8C CALLDATASIZE PUSH2 0xEE JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131E PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC PUSH1 0x20 SWAP2 ADD SLT PUSH2 0xE9 JUMPI PUSH1 0x4 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0xE9 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x16B JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x15E JUMP JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH2 0x1DC PUSH1 0xC0 PUSH2 0xAAF JUMP JUMPDEST PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH1 0xA0 CALLDATASIZE DUP3 CALLDATACOPY DUP2 MLOAD ISZERO PUSH2 0x2EA JUMPI PUSH32 0x7A0ED62700000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x2EA JUMPI PUSH32 0xCDFFACC600000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x2E6 SWAP1 PUSH2 0x278 PUSH2 0x253 DUP3 PUSH2 0xB89 JUMP JUMPDEST PUSH32 0xADFCA15E00000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x2A9 PUSH2 0x284 DUP3 PUSH2 0xB99 JUMP JUMPDEST PUSH32 0x52EF6B2C00000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x2DA PUSH2 0x2B5 DUP3 PUSH2 0xBA9 JUMP JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x147 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xB5A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x313 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x306 JUMP JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD PUSH2 0x399 DUP2 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP3 JUMPDEST DUP1 DUP5 LT PUSH2 0x3B6 JUMPI DUP2 DUP4 MSTORE PUSH1 0x40 MLOAD DUP1 PUSH2 0x2E6 DUP6 DUP3 PUSH2 0x2EF JUMP JUMPDEST SWAP1 PUSH2 0x441 PUSH2 0x427 PUSH2 0x3D6 PUSH2 0x3C9 DUP8 PUSH2 0xBDA JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 JUMPDEST DUP5 DUP2 LT PUSH2 0x4B2 JUMPI JUMPDEST POP POP PUSH2 0x4A8 JUMPI DUP2 PUSH2 0x499 PUSH2 0x49E SWAP3 PUSH2 0x47E PUSH1 0x1 SWAP6 DUP9 PUSH2 0xBC6 JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0xC88 JUMP JUMPDEST SWAP4 JUMPDEST ADD SWAP3 SWAP1 PUSH2 0x39E JUMP JUMPDEST POP SWAP3 PUSH1 0x1 SWAP1 PUSH2 0x4A0 JUMP JUMPDEST PUSH2 0x4F5 PUSH2 0x4DC PUSH2 0x4C2 DUP4 DUP11 PUSH2 0xBC6 JUMP JUMPDEST MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP3 EQ PUSH2 0x503 JUMPI PUSH1 0x1 ADD PUSH2 0x45C JUMP JUMPDEST POP POP POP PUSH1 0x1 CODESIZE DUP1 PUSH2 0x464 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD SWAP1 PUSH1 0x20 PUSH1 0x40 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD SWAP5 ADD SWAP2 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x542 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP6 SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP8 DUP3 SUB ADD DUP3 MSTORE DUP5 MLOAD PUSH1 0x20 PUSH1 0x60 DUP2 PUSH1 0x40 DUP6 ADD SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND DUP7 MSTORE ADD MLOAD SWAP4 PUSH1 0x40 DUP4 DUP3 ADD MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0x5CD JUMPI POP POP POP PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 SWAP7 ADD SWAP3 ADD SWAP3 ADD SWAP1 SWAP3 SWAP2 SWAP6 SWAP4 SWAP5 SWAP6 PUSH2 0x533 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 MLOAD AND DUP2 MSTORE ADD SWAP5 ADD SWAP3 ADD SWAP1 PUSH2 0x5AB JUMP JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD PUSH2 0x661 DUP2 PUSH2 0xCBA JUMP JUMPDEST PUSH2 0x66A DUP3 PUSH2 0xB10 JUMP JUMPDEST SWAP2 PUSH1 0x0 SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0x6CC JUMPI POP POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x696 JUMPI DUP2 DUP4 MSTORE PUSH1 0x40 MLOAD DUP1 PUSH2 0x2E6 DUP6 DUP3 PUSH2 0x50F JUMP JUMPDEST DUP1 PUSH2 0x6B6 PUSH2 0x6B0 PUSH2 0x6A9 PUSH1 0x1 SWAP5 DUP9 PUSH2 0xBC6 JUMP JUMPDEST MLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x6C2 DUP4 DUP8 PUSH2 0xBC6 JUMP JUMPDEST MLOAD ADD MLOAD MSTORE ADD PUSH2 0x67E JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x6DA PUSH2 0x3C9 DUP5 PUSH2 0xBDA JUMP JUMPDEST PUSH2 0x732 PUSH2 0x427 DUP3 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND JUMPDEST DUP6 DUP3 LT PUSH2 0x80C JUMPI JUMPDEST POP POP PUSH2 0x801 JUMPI SWAP2 PUSH2 0x7E5 PUSH2 0x7F8 SWAP3 PUSH2 0x78F PUSH1 0x1 SWAP6 PUSH2 0x773 DUP6 DUP12 PUSH2 0xBC6 JUMP JUMPDEST MLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x798 DUP7 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x7A4 DUP6 DUP12 PUSH2 0xBC6 JUMP JUMPDEST MLOAD ADD MSTORE PUSH2 0x7BE PUSH1 0x20 PUSH2 0x7B6 DUP6 DUP12 PUSH2 0xBC6 JUMP JUMPDEST MLOAD ADD MLOAD PUSH2 0xBB9 JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x499 PUSH2 0x7F2 DUP3 DUP10 PUSH2 0xBC6 JUMP JUMPDEST PUSH1 0x1 SWAP1 MSTORE JUMP JUMPDEST SWAP3 JUMPDEST ADD SWAP1 PUSH2 0x672 JUMP JUMPDEST POP POP SWAP2 PUSH1 0x1 SWAP1 PUSH2 0x7FA JUMP JUMPDEST DUP1 PUSH2 0x843 PUSH2 0x4DC PUSH2 0x828 DUP6 DUP14 SWAP9 SWAP13 SWAP14 SWAP15 SWAP8 SWAP7 SWAP15 SWAP12 SWAP10 SWAP11 SWAP12 PUSH2 0xBC6 JUMP JUMPDEST MLOAD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST EQ PUSH2 0x85E JUMPI PUSH1 0x1 DUP1 SWAP11 ADD SWAP2 SWAP3 SWAP10 POP SWAP8 SWAP7 SWAP3 SWAP8 SWAP6 SWAP5 SWAP4 SWAP6 PUSH2 0x74D JUMP JUMPDEST POP POP SWAP7 DUP1 PUSH2 0x8B3 PUSH1 0xFF DUP1 PUSH2 0x8AC PUSH2 0x6A9 DUP6 DUP15 PUSH2 0x8A7 DUP11 SWAP16 SWAP15 SWAP11 SWAP13 PUSH2 0x7BE DUP2 SWAP14 SWAP16 SWAP15 PUSH2 0x88E PUSH2 0x8DA SWAP14 PUSH1 0x20 SWAP3 PUSH2 0xBC6 JUMP JUMPDEST MLOAD ADD MLOAD PUSH2 0x8A1 PUSH2 0x6B0 PUSH2 0x6A9 DUP9 DUP9 PUSH2 0xBC6 JUMP JUMPDEST SWAP1 PUSH2 0xBC6 JUMP JUMPDEST PUSH2 0xBC6 JUMP JUMPDEST AND LT PUSH2 0xD3D JUMP JUMPDEST PUSH2 0x8D2 PUSH2 0x8CB PUSH2 0x8C6 PUSH2 0x6A9 DUP5 DUP14 PUSH2 0xBC6 JUMP JUMPDEST PUSH2 0xDC8 JUMP JUMPDEST SWAP2 DUP11 PUSH2 0xBC6 JUMP JUMPDEST SWAP1 PUSH1 0xFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x1 CODESIZE DUP1 PUSH2 0x755 JUMP JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 SWAP2 SUB PUSH2 0xE9 JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD PUSH1 0x0 PUSH2 0x960 DUP3 PUSH2 0xB10 JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x97C JUMPI DUP3 DUP5 MSTORE PUSH1 0x40 MLOAD DUP1 PUSH2 0x2E6 DUP7 DUP3 PUSH2 0x147 JUMP JUMPDEST PUSH2 0x985 DUP2 PUSH2 0xBDA JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH1 0xE0 SHL PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x9F9 DUP3 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND DUP7 EQ PUSH2 0xA0B JUMPI JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x964 JUMP JUMPDEST DUP4 PUSH2 0xA47 SWAP2 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xA3E PUSH1 0x1 SWAP6 SWAP8 DUP10 PUSH2 0xBC6 JUMP JUMPDEST SWAP2 AND SWAP1 MSTORE PUSH2 0xC88 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0xA02 JUMP JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0xA76 PUSH2 0x3D6 CALLDATASIZE PUSH2 0xEE JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x40 MLOAD SWAP4 ADD AND DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xAF3 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0xA80 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xAF3 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xB22 PUSH2 0xB1D DUP4 PUSH2 0xAF8 JUMP JUMPDEST PUSH2 0xAAF JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0xB50 DUP3 SWAP5 PUSH2 0xAF8 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x2 LT ISZERO PUSH2 0x2EA JUMPI PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x3 LT ISZERO PUSH2 0x2EA JUMPI PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x4 LT ISZERO PUSH2 0x2EA JUMPI PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2EA JUMPI PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x2EA JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD DUP3 LT ISZERO PUSH2 0x2EA JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D PUSH1 0x0 MSTORE PUSH1 0x3 DUP3 SWAP1 SHR PUSH32 0xC0D727610EA16241EFF4447D08BB1B4595F7D2EC4515282437A13B7D0DF4B922 ADD SWAP2 PUSH1 0x2 SHL PUSH1 0x1C AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0xCB5 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH2 0xC59 JUMP JUMPDEST SWAP1 PUSH2 0xCC7 PUSH2 0xB1D DUP4 PUSH2 0xAF8 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0xCF5 DUP3 SWAP5 PUSH2 0xAF8 JUMP JUMPDEST ADD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xD05 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x40 DUP3 ADD SWAP2 DUP1 DUP4 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT OR PUSH2 0xAF3 JUMPI PUSH1 0x20 SWAP3 PUSH1 0x40 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x60 DUP4 DUP3 ADD MSTORE DUP3 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0xCF9 JUMP JUMPDEST ISZERO PUSH2 0xD44 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616D6F756E74206F662066756E6374696F6E2068617320746F206265206C6573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x73207468616E2032353500000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0xFF AND PUSH1 0xFF DUP2 EQ PUSH2 0xCB5 JUMPI PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 GASLIMIT SELFBALANCE DUP2 GAS SWAP1 PUSH27 0x6C8A156394E62FAAD5B4111130079D43A985A922FD9BB80E0D6473 PUSH16 0x6C634300081B00330000000000000000 ",
              "sourceMap": "629:6992:61:-:0;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "abi_decode_bytes4": {
                  "entryPoint": 238,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_array_address_dyn": {
                  "entryPoint": 751,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_bytes4_dyn": {
                  "entryPoint": 327,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_struct_Facet_dyn": {
                  "entryPoint": 1295,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_array_array_bytes4_dyn": {
                  "entryPoint": 2832,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_array_array_struct_Facet_dyn": {
                  "entryPoint": 3258,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 2735,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_array_bytes4_dyn": {
                  "entryPoint": 2808,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "cleanup_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "cleanup_from_storage_bool": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "external_fun_facetAddress": {
                  "entryPoint": 2638,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "external_fun_facetAddresses": {
                  "entryPoint": 831,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "external_fun_facetFunctionSelectors": {
                  "entryPoint": 2275,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "external_fun_facets": {
                  "entryPoint": 1543,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "external_fun_getSelectors": {
                  "entryPoint": 419,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "extract_from_storage_value_dynamict_bytes4": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_uint256": {
                  "entryPoint": 3208,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_uint8": {
                  "entryPoint": 3528,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mapping_index_access_mapping_bytes4_bool_of_bytes4": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mapping_index_access_mapping_bytes4_bool_of_bytes4_3097": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "memory_array_index_access_bytes4_dyn": {
                  "entryPoint": 3014,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "memory_array_index_access_bytes4_dyn_3103": {
                  "entryPoint": 2953,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "memory_array_index_access_bytes4_dyn_3105": {
                  "entryPoint": 2969,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "memory_array_index_access_bytes4_dyn_3107": {
                  "entryPoint": 2985,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "memory_array_index_access_bytes4_dyn_3113": {
                  "entryPoint": 3001,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 3161,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 2906,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 2688,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "read_from_memoryt_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "read_from_memoryt_uint8": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "read_from_storage_split_offset_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "require_helper_stringliteral_976f": {
                  "entryPoint": 3389,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "storage_array_index_access_bytes4_dyn": {
                  "entryPoint": 3034,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 2
                },
                "write_to_memory_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "write_to_memory_bytes4": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "write_to_memory_bytes4_3102": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "write_to_memory_bytes4_3104": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "write_to_memory_bytes4_3106": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "write_to_memory_bytes4_3108": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "write_to_memory_uint8": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "write_to_memory_uint8_3114": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436101561001257600080fd5b60003560e01c806301ffc9a7146100775780634b503f0b1461007257806352ef6b2c1461006d5780637a0ed62714610068578063adfca15e146100635763cdffacc61461005e57600080fd5b610a4e565b6108e3565b610607565b61033f565b6101a3565b346100e957602060ff6100dd61008c366100ee565b7fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e602052604060002090565b54166040519015158152f35b600080fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60209101126100e9576004357fffffffff00000000000000000000000000000000000000000000000000000000811681036100e95790565b602060408183019282815284518094520192019060005b81811061016b5750505090565b82517fffffffff000000000000000000000000000000000000000000000000000000001684526020938401939092019160010161015e565b346100e95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e9576101dc60c0610aaf565b600581526020810160a03682378151156102ea577f7a0ed6270000000000000000000000000000000000000000000000000000000090528051600110156102ea577fcdffacc60000000000000000000000000000000000000000000000000000000060408201526102e69061027861025382610b89565b7fadfca15e000000000000000000000000000000000000000000000000000000009052565b6102a961028482610b99565b7f52ef6b2c000000000000000000000000000000000000000000000000000000009052565b6102da6102b582610ba9565b7f01ffc9a7000000000000000000000000000000000000000000000000000000009052565b60405191829182610147565b0390f35b610b5a565b602060408183019282815284518094520192019060005b8181106103135750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101610306565b346100e95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e9577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d5461039981610b10565b600080925b8084106103b657818352604051806102e685826102ef565b906104416104276103d66103c987610bda565b90549060031b1c60e01b90565b7fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b600073ffffffffffffffffffffffffffffffffffffffff8216815b8481106104b2575b50506104a8578161049961049e9261047e60019588610bc6565b9073ffffffffffffffffffffffffffffffffffffffff169052565b610c88565b935b01929061039e565b50926001906104a0565b6104f56104dc6104c2838a610bc6565b5173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b82146105035760010161045c565b50505060013880610464565b602081016020825282518091526040820190602060408260051b8501019401916000905b82821061054257505050505090565b9091929395947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087820301825284516020606081604085019373ffffffffffffffffffffffffffffffffffffffff81511686520151936040838201528451809452019201906000905b8082106105cd5750505060208060019296019201920190929195939495610533565b9091926020806001927fffffffff0000000000000000000000000000000000000000000000000000000087511681520194019201906105ab565b346100e95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e9577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d5461066181610cba565b61066a82610b10565b916000906000905b8082106106cc57505060005b81811061069657818352604051806102e6858261050f565b806106b66106b06106a960019488610bc6565b5160ff1690565b60ff1690565b60206106c28387610bc6565b510151520161067e565b90916106da6103c984610bda565b610732610427827fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b60008073ffffffffffffffffffffffffffffffffffffffff83165b85821061080c575b505061080157916107e56107f89261078f600195610773858b610bc6565b519073ffffffffffffffffffffffffffffffffffffffff169052565b61079886610b10565b60206107a4858b610bc6565b5101526107be60206107b6858b610bc6565b510151610bb9565b907fffffffff00000000000000000000000000000000000000000000000000000000169052565b6104996107f28289610bc6565b60019052565b925b0190610672565b5050916001906107fa565b806108436104dc610828858d989c9d9e97969e9b999a9b610bc6565b515173ffffffffffffffffffffffffffffffffffffffff1690565b1461085e576001809a0191929950979692979594939561074d565b505096806108b360ff806108ac6106a9858e6108a78a9f9e9a9c6107be819d9f9e61088e6108da9d602092610bc6565b5101516108a16106b06106a98888610bc6565b90610bc6565b610bc6565b1610610d3d565b6108d26108cb6108c66106a9848d610bc6565b610dc8565b918a610bc6565b9060ff169052565b60013880610755565b346100e95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e95760043573ffffffffffffffffffffffffffffffffffffffff81168091036100e9577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d54600061096082610b10565b9160005b81811061097c57828452604051806102e68682610147565b61098581610bda565b90549060031b1c60e01b73ffffffffffffffffffffffffffffffffffffffff6109f9827fffffffff00000000000000000000000000000000000000000000000000000000166000527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604060002090565b54168614610a0b575b50600101610964565b83610a47917fffffffff00000000000000000000000000000000000000000000000000000000610a3e6001959789610bc6565b91169052610c88565b9290610a02565b346100e957602073ffffffffffffffffffffffffffffffffffffffff610a766103d6366100ee565b5416604051908152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff821117610af357604052565b610a80565b67ffffffffffffffff8111610af35760051b60200190565b90610b22610b1d83610af8565b610aaf565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610b508294610af8565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051600210156102ea5760600190565b8051600310156102ea5760800190565b8051600410156102ea5760a00190565b8051156102ea5760200190565b80518210156102ea5760209160051b010190565b907fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d548210156102ea577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d600052600382901c7fc0d727610ea16241eff4447d08bb1b4595f7d2ec4515282437a13b7d0df4b922019160021b601c1690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cb55760010190565b610c59565b90610cc7610b1d83610af8565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610cf58294610af8565b0160005b818110610d0557505050565b60405190604082019180831067ffffffffffffffff841117610af3576020926040526000815260608382015282828601015201610cf9565b15610d4457565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f616d6f756e74206f662066756e6374696f6e2068617320746f206265206c657360448201527f73207468616e20323535000000000000000000000000000000000000000000006064820152fd5b60ff1660ff8114610cb5576001019056fea2646970667358221220e64547815a907a6c8a156394e62faad5b4111130079d43a985a922fd9bb80e0d64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x4B503F0B EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x52EF6B2C EQ PUSH2 0x6D JUMPI DUP1 PUSH4 0x7A0ED627 EQ PUSH2 0x68 JUMPI DUP1 PUSH4 0xADFCA15E EQ PUSH2 0x63 JUMPI PUSH4 0xCDFFACC6 EQ PUSH2 0x5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA4E JUMP JUMPDEST PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x607 JUMP JUMPDEST PUSH2 0x33F JUMP JUMPDEST PUSH2 0x1A3 JUMP JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH2 0xDD PUSH2 0x8C CALLDATASIZE PUSH2 0xEE JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131E PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC PUSH1 0x20 SWAP2 ADD SLT PUSH2 0xE9 JUMPI PUSH1 0x4 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0xE9 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x16B JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x15E JUMP JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH2 0x1DC PUSH1 0xC0 PUSH2 0xAAF JUMP JUMPDEST PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH1 0xA0 CALLDATASIZE DUP3 CALLDATACOPY DUP2 MLOAD ISZERO PUSH2 0x2EA JUMPI PUSH32 0x7A0ED62700000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x2EA JUMPI PUSH32 0xCDFFACC600000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x2E6 SWAP1 PUSH2 0x278 PUSH2 0x253 DUP3 PUSH2 0xB89 JUMP JUMPDEST PUSH32 0xADFCA15E00000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x2A9 PUSH2 0x284 DUP3 PUSH2 0xB99 JUMP JUMPDEST PUSH32 0x52EF6B2C00000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x2DA PUSH2 0x2B5 DUP3 PUSH2 0xBA9 JUMP JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x147 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xB5A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x313 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x306 JUMP JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD PUSH2 0x399 DUP2 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP3 JUMPDEST DUP1 DUP5 LT PUSH2 0x3B6 JUMPI DUP2 DUP4 MSTORE PUSH1 0x40 MLOAD DUP1 PUSH2 0x2E6 DUP6 DUP3 PUSH2 0x2EF JUMP JUMPDEST SWAP1 PUSH2 0x441 PUSH2 0x427 PUSH2 0x3D6 PUSH2 0x3C9 DUP8 PUSH2 0xBDA JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 JUMPDEST DUP5 DUP2 LT PUSH2 0x4B2 JUMPI JUMPDEST POP POP PUSH2 0x4A8 JUMPI DUP2 PUSH2 0x499 PUSH2 0x49E SWAP3 PUSH2 0x47E PUSH1 0x1 SWAP6 DUP9 PUSH2 0xBC6 JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0xC88 JUMP JUMPDEST SWAP4 JUMPDEST ADD SWAP3 SWAP1 PUSH2 0x39E JUMP JUMPDEST POP SWAP3 PUSH1 0x1 SWAP1 PUSH2 0x4A0 JUMP JUMPDEST PUSH2 0x4F5 PUSH2 0x4DC PUSH2 0x4C2 DUP4 DUP11 PUSH2 0xBC6 JUMP JUMPDEST MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP3 EQ PUSH2 0x503 JUMPI PUSH1 0x1 ADD PUSH2 0x45C JUMP JUMPDEST POP POP POP PUSH1 0x1 CODESIZE DUP1 PUSH2 0x464 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD SWAP1 PUSH1 0x20 PUSH1 0x40 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD SWAP5 ADD SWAP2 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x542 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP6 SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP8 DUP3 SUB ADD DUP3 MSTORE DUP5 MLOAD PUSH1 0x20 PUSH1 0x60 DUP2 PUSH1 0x40 DUP6 ADD SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND DUP7 MSTORE ADD MLOAD SWAP4 PUSH1 0x40 DUP4 DUP3 ADD MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0x5CD JUMPI POP POP POP PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 SWAP7 ADD SWAP3 ADD SWAP3 ADD SWAP1 SWAP3 SWAP2 SWAP6 SWAP4 SWAP5 SWAP6 PUSH2 0x533 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP8 MLOAD AND DUP2 MSTORE ADD SWAP5 ADD SWAP3 ADD SWAP1 PUSH2 0x5AB JUMP JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD PUSH2 0x661 DUP2 PUSH2 0xCBA JUMP JUMPDEST PUSH2 0x66A DUP3 PUSH2 0xB10 JUMP JUMPDEST SWAP2 PUSH1 0x0 SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0x6CC JUMPI POP POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x696 JUMPI DUP2 DUP4 MSTORE PUSH1 0x40 MLOAD DUP1 PUSH2 0x2E6 DUP6 DUP3 PUSH2 0x50F JUMP JUMPDEST DUP1 PUSH2 0x6B6 PUSH2 0x6B0 PUSH2 0x6A9 PUSH1 0x1 SWAP5 DUP9 PUSH2 0xBC6 JUMP JUMPDEST MLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x6C2 DUP4 DUP8 PUSH2 0xBC6 JUMP JUMPDEST MLOAD ADD MLOAD MSTORE ADD PUSH2 0x67E JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x6DA PUSH2 0x3C9 DUP5 PUSH2 0xBDA JUMP JUMPDEST PUSH2 0x732 PUSH2 0x427 DUP3 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND JUMPDEST DUP6 DUP3 LT PUSH2 0x80C JUMPI JUMPDEST POP POP PUSH2 0x801 JUMPI SWAP2 PUSH2 0x7E5 PUSH2 0x7F8 SWAP3 PUSH2 0x78F PUSH1 0x1 SWAP6 PUSH2 0x773 DUP6 DUP12 PUSH2 0xBC6 JUMP JUMPDEST MLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x798 DUP7 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x7A4 DUP6 DUP12 PUSH2 0xBC6 JUMP JUMPDEST MLOAD ADD MSTORE PUSH2 0x7BE PUSH1 0x20 PUSH2 0x7B6 DUP6 DUP12 PUSH2 0xBC6 JUMP JUMPDEST MLOAD ADD MLOAD PUSH2 0xBB9 JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x499 PUSH2 0x7F2 DUP3 DUP10 PUSH2 0xBC6 JUMP JUMPDEST PUSH1 0x1 SWAP1 MSTORE JUMP JUMPDEST SWAP3 JUMPDEST ADD SWAP1 PUSH2 0x672 JUMP JUMPDEST POP POP SWAP2 PUSH1 0x1 SWAP1 PUSH2 0x7FA JUMP JUMPDEST DUP1 PUSH2 0x843 PUSH2 0x4DC PUSH2 0x828 DUP6 DUP14 SWAP9 SWAP13 SWAP14 SWAP15 SWAP8 SWAP7 SWAP15 SWAP12 SWAP10 SWAP11 SWAP12 PUSH2 0xBC6 JUMP JUMPDEST MLOAD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST EQ PUSH2 0x85E JUMPI PUSH1 0x1 DUP1 SWAP11 ADD SWAP2 SWAP3 SWAP10 POP SWAP8 SWAP7 SWAP3 SWAP8 SWAP6 SWAP5 SWAP4 SWAP6 PUSH2 0x74D JUMP JUMPDEST POP POP SWAP7 DUP1 PUSH2 0x8B3 PUSH1 0xFF DUP1 PUSH2 0x8AC PUSH2 0x6A9 DUP6 DUP15 PUSH2 0x8A7 DUP11 SWAP16 SWAP15 SWAP11 SWAP13 PUSH2 0x7BE DUP2 SWAP14 SWAP16 SWAP15 PUSH2 0x88E PUSH2 0x8DA SWAP14 PUSH1 0x20 SWAP3 PUSH2 0xBC6 JUMP JUMPDEST MLOAD ADD MLOAD PUSH2 0x8A1 PUSH2 0x6B0 PUSH2 0x6A9 DUP9 DUP9 PUSH2 0xBC6 JUMP JUMPDEST SWAP1 PUSH2 0xBC6 JUMP JUMPDEST PUSH2 0xBC6 JUMP JUMPDEST AND LT PUSH2 0xD3D JUMP JUMPDEST PUSH2 0x8D2 PUSH2 0x8CB PUSH2 0x8C6 PUSH2 0x6A9 DUP5 DUP14 PUSH2 0xBC6 JUMP JUMPDEST PUSH2 0xDC8 JUMP JUMPDEST SWAP2 DUP11 PUSH2 0xBC6 JUMP JUMPDEST SWAP1 PUSH1 0xFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x1 CODESIZE DUP1 PUSH2 0x755 JUMP JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xE9 JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 SWAP2 SUB PUSH2 0xE9 JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD PUSH1 0x0 PUSH2 0x960 DUP3 PUSH2 0xB10 JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x97C JUMPI DUP3 DUP5 MSTORE PUSH1 0x40 MLOAD DUP1 PUSH2 0x2E6 DUP7 DUP3 PUSH2 0x147 JUMP JUMPDEST PUSH2 0x985 DUP2 PUSH2 0xBDA JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH1 0xE0 SHL PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x9F9 DUP3 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 MSTORE PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND DUP7 EQ PUSH2 0xA0B JUMPI JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x964 JUMP JUMPDEST DUP4 PUSH2 0xA47 SWAP2 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xA3E PUSH1 0x1 SWAP6 SWAP8 DUP10 PUSH2 0xBC6 JUMP JUMPDEST SWAP2 AND SWAP1 MSTORE PUSH2 0xC88 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0xA02 JUMP JUMPDEST CALLVALUE PUSH2 0xE9 JUMPI PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0xA76 PUSH2 0x3D6 CALLDATASIZE PUSH2 0xEE JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x40 MLOAD SWAP4 ADD AND DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xAF3 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0xA80 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xAF3 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xB22 PUSH2 0xB1D DUP4 PUSH2 0xAF8 JUMP JUMPDEST PUSH2 0xAAF JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0xB50 DUP3 SWAP5 PUSH2 0xAF8 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x2 LT ISZERO PUSH2 0x2EA JUMPI PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x3 LT ISZERO PUSH2 0x2EA JUMPI PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x4 LT ISZERO PUSH2 0x2EA JUMPI PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2EA JUMPI PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x2EA JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D SLOAD DUP3 LT ISZERO PUSH2 0x2EA JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131D PUSH1 0x0 MSTORE PUSH1 0x3 DUP3 SWAP1 SHR PUSH32 0xC0D727610EA16241EFF4447D08BB1B4595F7D2EC4515282437A13B7D0DF4B922 ADD SWAP2 PUSH1 0x2 SHL PUSH1 0x1C AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0xCB5 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH2 0xC59 JUMP JUMPDEST SWAP1 PUSH2 0xCC7 PUSH2 0xB1D DUP4 PUSH2 0xAF8 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0xCF5 DUP3 SWAP5 PUSH2 0xAF8 JUMP JUMPDEST ADD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xD05 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x40 DUP3 ADD SWAP2 DUP1 DUP4 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT OR PUSH2 0xAF3 JUMPI PUSH1 0x20 SWAP3 PUSH1 0x40 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x60 DUP4 DUP3 ADD MSTORE DUP3 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0xCF9 JUMP JUMPDEST ISZERO PUSH2 0xD44 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616D6F756E74206F662066756E6374696F6E2068617320746F206265206C6573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x73207468616E2032353500000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0xFF AND PUSH1 0xFF DUP2 EQ PUSH2 0xCB5 JUMPI PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 GASLIMIT SELFBALANCE DUP2 GAS SWAP1 PUSH27 0x6C8A156394E62FAAD5B4111130079D43A985A922FD9BB80E0D6473 PUSH16 0x6C634300081B00330000000000000000 ",
              "sourceMap": "629:6992:61:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;7088:36;629:6992;;;:::i;:::-;;;;;7088:22;629:6992;;;;;;;7088:36;629:6992;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7252:1;629:6992;;;;;;;;;;;;;;7279:33;629:6992;;;;7332:1;629:6992;;;;7337:39;629:6992;;;;;;7386:64;;;;:::i;:::-;7401:49;629:6992;;;7386:64;7460:56;;;;:::i;:::-;7475:41;629:6992;;;7460:56;7526:59;;;;:::i;:::-;7541:44;629:6992;;;7526:59;629:6992;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5100:12;629:6992;5207:28;;;:::i;:::-;629:6992;;5315:900;5343:29;;;;;;6282:67;;;629:6992;;;;6282:67;629:6992;;:::i;5374:15::-;5423:27;5488:57;:44;629:6992;5423:27;;;:::i;:::-;629:6992;;;;;;;;;;;;;;;1669:45:69;629:6992:61;;;;;;;5488:44;629:6992;;;;;5488:57;629:6992;;;;;5716:22;;;;;;5691:232;5996:97;;;;6137:42;;6193:11;6137:42;;5100:12;6137:42;;;:::i;:::-;629:6992;;;;;;6137:42;6193:11;:::i;:::-;5374:15;5320:21;629:6992;5320:21;;;;5996:97;6032:20;;5100:12;6032:20;6070:8;;5740:12;5776:44;5793:27;;;;;:::i;:::-;629:6992;;;;;5793:27;629:6992;;;;5776:44;;;5772:137;;5100:12;629:6992;5696:18;;5772:137;5844:19;;;5100:12;5885:5;;;;629:6992;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1240:12;629:6992;1339:26;;;:::i;:::-;1489;;;:::i;:::-;1559:17;629:6992;1634:21;629:6992;1629:1508;1657:29;;;;;;3151:18;;629:6992;3171:22;;;;;;3546:59;;;629:6992;;;;3546:59;629:6992;;:::i;3195:12::-;3246:29;3223:52;3246:29;;1240:12;3246:29;;;:::i;:::-;629:6992;;;;;3246:29;629:6992;;;;3223:52;2925:36;3317:19;;;;:::i;:::-;;:37;;3415:72;629:6992;3151:18;;1688:15;1737:27;;629:6992;1737:27;;;:::i;629:6992::-;1802:57;:44;;629:6992;;;;1669:45:69;629:6992:61;;;;;;;1802:57;629:6992;2001:18;629:6992;;;2021:22;;;;;;1996:599;2689:97;;;;2864:18;3005:50;3115:11;2864:18;:47;1240:12;2864:18;;;;;:::i;:::-;;629:6992;;;;;;2864:47;2964:27;;;:::i;:::-;2925:36;:18;;;;:::i;:::-;;:36;:66;3005:50;2925:36;3005:18;;;;:::i;:::-;;:36;;:50;:::i;:::-;629:6992;;;;;;3005:50;3069:32;;;;;:::i;:::-;629:6992;;;;3115:11;1688:15;1634:21;629:6992;1634:21;;;2689:97;2725:20;;;1240:12;2725:20;2763:8;;2045:12;2081:19;:49;:32;:19;;;;;;;;;;;;;;;:::i;:::-;;629:6992;;;;;2081:49;;2077:504;;1240:12;2045;;629:6992;2001:18;;;;;;;;;;;;;;2077:504;2154:19;;;;2351:90;629:6992;2154:19;2359:29;;2154:19;;:79;:19;;;;;:79;:19;;;;;2463:31;2154:19;2925:36;2154:19;;:::i;:::-;;:37;;:79;2192:29;;;;;:::i;2154:79::-;;;:::i;:::-;2359:29;:::i;:::-;629:6992;2359:35;2351:90;:::i;:::-;2463:31;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;629:6992;;;;;;2463:31;1240:12;2557:5;;;;629:6992;;;;;;;;;;;;;;;;;;;;;4091:12;629:6992;-1:-1:-1;4176:27:61;;;:::i;:::-;4261:21;-1:-1:-1;4284:29:61;;;;;;4713:78;;;629:6992;;;;4713:78;629:6992;;:::i;4315:15::-;4364:27;;;:::i;:::-;629:6992;;;;;;;;;4429:44;;629:6992;;;;1669:45:69;629:6992:61;;;;;;;4429:44;629:6992;;4504:23;;4500:142;;4315:15;;4091:12;629:6992;4261:21;;4500:142;4547:48;4613:14;4547:48;629:6992;4547:48;4091:12;4547:48;;;;:::i;:::-;629:6992;;;;4613:14;:::i;:::-;4500:142;;;;629:6992;;;;;;6798:53;629:6992;;;:::i;6798:53::-;629:6992;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;7396:1;629:6992;;;;;;;:::o;:::-;;;7470:1;629:6992;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;5100:12;629:6992;;;;;;5100:12;-1:-1:-1;629:6992:61;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;-1:-1:-1;629:6992:61;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;629:6992:61;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o"
            },
            "methodIdentifiers": {
              "facetAddress(bytes4)": "cdffacc6",
              "facetAddresses()": "52ef6b2c",
              "facetFunctionSelectors(address)": "adfca15e",
              "facets()": "7a0ed627",
              "getSelectors()": "4b503f0b",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_functionSelector\",\"type\":\"bytes4\"}],\"name\":\"facetAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"facetAddress_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"facetAddresses\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"facetAddresses_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_facet\",\"type\":\"address\"}],\"name\":\"facetFunctionSelectors\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"_facetFunctionSelectors\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"facets\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct IDiamondLoupe.Facet[]\",\"name\":\"facets_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSelectors\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"facetAddress(bytes4)\":{\"details\":\"If facet is not found return address(0).\",\"params\":{\"_functionSelector\":\"The function selector.\"},\"returns\":{\"facetAddress_\":\"The facet address.\"}},\"facetAddresses()\":{\"returns\":{\"facetAddresses_\":\"facetAddresses_\"}},\"facetFunctionSelectors(address)\":{\"params\":{\"_facet\":\"The facet address.\"},\"returns\":{\"_facetFunctionSelectors\":\"The selectors associated with a facet address.\"}},\"facets()\":{\"returns\":{\"facets_\":\"Facet\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"facetAddress(bytes4)\":{\"notice\":\"Gets the facet address that supports the given selector.\"},\"facetAddresses()\":{\"notice\":\"Get all the facet addresses used by a diamond.\"},\"facetFunctionSelectors(address)\":{\"notice\":\"Gets all the function selectors supported by a specific facet.\"},\"facets()\":{\"notice\":\"Gets all facets and their selectors.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/DiamondLoupeFacet.sol\":\"DiamondLoupeFacet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"contracts/facets/DiamondLoupeFacet.sol\":{\"keccak256\":\"0xc604b1adefa97439cc575aefcd8880e9a1cefb74f63afc79ed84e8d903ea197b\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://35d8f2fe1d2cfcf42895b67adb2175bb57e6d6540de41401b78f79d0c37a1fd8\",\"dweb:/ipfs/QmQ2e3HLSfaygsrc2cEdxLd1GN3sks3vU4DL76qGs2TKtF\"]},\"contracts/interfaces/IDiamond.sol\":{\"keccak256\":\"0xf6ea8172fc4ca7f19387dcab713a7c2d3c7453540ec8ea9bbf8fa29fce272d4b\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://57c74c3e17114c0aa5982815aab8cff5264c00317af1abe3620ee8acaca49ff9\",\"dweb:/ipfs/Qma45nAPXZU1MCDfuEBe1Fub6Qd7oumdyEqonGeqsPHXMQ\"]},\"contracts/interfaces/IDiamondCut.sol\":{\"keccak256\":\"0xe30dd72352453957dbc5d9f6b96369b1630c7abac4c2eb6fd49fc858317f99e3\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://55940b6e5e3ae666f6851b2deac40b10173a2636fcef15dbe7e44b94542e9cfa\",\"dweb:/ipfs/QmeVaPtmffSzEz3x4NgAJVjdjMTosM85JyCcX3eGF1Qpo1\"]},\"contracts/interfaces/IDiamondLoupe.sol\":{\"keccak256\":\"0xe0bf21cd76b595fce14ab95436ed0ad56a3e98715ca1e96bf01cf5658d9a5a82\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://7cc8b98fb3da2c460dce03e7b1b1788d5e6420deaa5b01b03131605fe2823ab1\",\"dweb:/ipfs/QmWLGrK1FDCDQxkh43BQW94U1ruNhnVygAqXxfhsAGPsf3\"]},\"contracts/libraries/LibDiamond.sol\":{\"keccak256\":\"0xe411f7691d0554f8f01260065f249abda18eaa17697b626272c4e0554a2244b1\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://a116a9dcfd5dc8cef470e6c53c69bbaada930ebe9a7373a0a4a6c3924b77d7e8\",\"dweb:/ipfs/QmRxGt99hosAR5wxJpuTeXpyEV6DNb5fnxs76P2L2Bd34Y\"]}},\"version\":1}"
        }
      },
      "contracts/facets/ERC1155Facet.sol": {
        "ERC1155Facet": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "ERC1155InvalidReceiver",
              "type": "error"
            },
            {
              "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": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSelectors",
              "outputs": [
                {
                  "internalType": "bytes4[]",
                  "name": "",
                  "type": "bytes4[]"
                }
              ],
              "stateMutability": "pure",
              "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": [
                {
                  "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": "mint",
              "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": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080806040523460155761178b908161001b8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c908162fdd58e146111795750806301ffc9a7146110d85780632eb2c2d614610cb55780634b503f0b14610a575780634e1273f414610890578063731133e9146106e5578063a22cb465146105a9578063e985e9c514610532578063f242432a1461027d5763f5298aca1461008c57600080fd5b34610278576060600319360112610278576100a561126f565b6044359073ffffffffffffffffffffffffffffffffffffffff1660243581156101f45733821480156101d1575b6100db906114ed565b8060005260006020526040600020826000526020526040600020549280841061014e57600093828552846020526040852084865260205281604086209103905560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4005b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e6365000000000000000000000000000000000000000000000000000000006064820152fd5b50600082815260016020908152604080832033845290915290205460ff166100d2565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b600080fd5b346102785760a06003193601126102785761029661126f565b61029e611292565b906064359060443560843567ffffffffffffffff81116102785773ffffffffffffffffffffffffffffffffffffffff926102df6102fe9236906004016112e6565b9490911693338514801561050f575b6102f7906114ed565b3691611456565b9173ffffffffffffffffffffffffffffffffffffffff851694610322861515611578565b82600052600060205260406000208260005260205260406000205461034986821015611603565b600084815260208181526040808320868452909152808220928890039092558781522080546103799087906114b1565b905585826040518581528760208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a43b6103b657005b61040d60209360405195869485947ff23a6e6100000000000000000000000000000000000000000000000000000000865233600487015260248601526044850152606484015260a0608484015260a48301906116c6565b03816000865af1600091816104de575b50610466575061042b611725565b8051908161046157827f57f447ce0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b602001fd5b7fffffffff000000000000000000000000000000000000000000000000000000007ff23a6e61000000000000000000000000000000000000000000000000000000009116036104b157005b7f57f447ce0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b61050191925060203d602011610508575b6104f98183611348565b81019061168e565b908361041d565b503d6104ef565b50600085815260016020908152604080832033845290915290205460ff166102ee565b346102785760406003193601126102785761054b61126f565b73ffffffffffffffffffffffffffffffffffffffff610568611292565b9116600052600160205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b34610278576040600319360112610278576105c261126f565b602435908115158092036102785773ffffffffffffffffffffffffffffffffffffffff16908133146106615733600052600160205260406000208260005260205260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152fd5b34610278576080600319360112610278576106fe61126f565b6044359060243560643567ffffffffffffffff8111610278576107259036906004016112e6565b73ffffffffffffffffffffffffffffffffffffffff84169491851561080c576107ab91846000526000602052604060002087600052602052604060002061076d8582546114b1565b90558660006040518781528660208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a43691611456565b923b6107b357005b60209161040d60405194859384937ff23a6e61000000000000000000000000000000000000000000000000000000008552336004860152600060248601526044850152606484015260a0608484015260a48301906116c6565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b346102785760406003193601126102785760043567ffffffffffffffff8111610278576108c19036906004016112b5565b60243567ffffffffffffffff8111610278576108e19036906004016112b5565b918281036109d3576108f2816113b8565b926109006040519485611348565b8184527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061092d836113b8565b0136602086013760005b828110610958576040516020808252819061095490820188611314565b0390f35b6109638183866114a1565b35600052600060205260406000209061097d8185896114a1565b359173ffffffffffffffffffffffffffffffffffffffff831683036102785760019260409173ffffffffffffffffffffffffffffffffffffffff60009216825260205220546109cc828861148d565b5201610937565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152fd5b3461027857600060031936011261027857604051610120610a788183611348565b600882527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0602083019101368237815115610c86577efdd58e000000000000000000000000000000000000000000000000000000008152815160011015610c86577f4e1273f4000000000000000000000000000000000000000000000000000000006040830152815160021015610c86577fa22cb465000000000000000000000000000000000000000000000000000000006060830152815160031015610c86577fe985e9c5000000000000000000000000000000000000000000000000000000006080830152815160041015610c86577ff242432a0000000000000000000000000000000000000000000000000000000060a0830152815160051015610c86577f2eb2c2d60000000000000000000000000000000000000000000000000000000060c0830152815160061015610c86577f731133e90000000000000000000000000000000000000000000000000000000060e0830152815160071015610c8657907ff5298aca000000000000000000000000000000000000000000000000000000006101008201526040519182916020830190602084525180915260408301919060005b818110610c4b575050500390f35b82517fffffffff0000000000000000000000000000000000000000000000000000000016845285945060209384019390920191600101610c3d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b346102785760a060031936011261027857610cce61126f565b610cd6611292565b60443567ffffffffffffffff811161027857610cf69036906004016112b5565b929060643567ffffffffffffffff811161027857610d189036906004016112b5565b9490926084359267ffffffffffffffff841161027857610d5173ffffffffffffffffffffffffffffffffffffffff9436906004016112e6565b9490921694338614801561109e575b1561101a57610d77610d7f92610d879536916113d0565b9736916113d0565b923691611456565b938051825103610f965773ffffffffffffffffffffffffffffffffffffffff841694610db4861515611578565b60005b8251811015610e395780610dcd6001928561148d565b51610dd8828761148d565b51908060005260006020526040806000206000908a82526020522054610e0083821015611603565b6000918252602082815260408084208b8552909152808320918490039091558a8252902080549091610e31916114b1565b905501610db7565b50929091938582604051604081527f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb610e756040830188611314565b91808303602082015280610e8a33948c611314565b0390a43b610e9457005b610f0c602093610efa610ee89660405197889687967fbc197c81000000000000000000000000000000000000000000000000000000008852336004890152602488015260a0604488015260a4870190611314565b90600319868303016064870152611314565b906003198483030160848501526116c6565b03816000865af160009181610f75575b50610f2a575061042b611725565b7fffffffff000000000000000000000000000000000000000000000000000000007fbc197c81000000000000000000000000000000000000000000000000000000009116036104b157005b610f8f91925060203d602011610508576104f98183611348565b9083610f1c565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006064820152fd5b50856000526001602052604060002073ffffffffffffffffffffffffffffffffffffffff331660005260205260ff60406000205416610d60565b34610278576020600319360112610278576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361027857807fd9b67a26000000000000000000000000000000000000000000000000000000006020921490811561114f575b506040519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501482611144565b346102785760406003193601126102785761119261126f565b9073ffffffffffffffffffffffffffffffffffffffff8216156111ed5750602435600052600060205273ffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b807f08c379a0000000000000000000000000000000000000000000000000000000006084925260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361027857565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361027857565b9181601f840112156102785782359167ffffffffffffffff8311610278576020808501948460051b01011161027857565b9181601f840112156102785782359167ffffffffffffffff8311610278576020838186019501011161027857565b906020808351928381520192019060005b8181106113325750505090565b8251845260209384019390920191600101611325565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761138957604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff81116113895760051b60200190565b9291906113dc816113b8565b936113ea6040519586611348565b602085838152019160051b810192831161027857905b82821061140c57505050565b8135815260209182019101611400565b67ffffffffffffffff811161138957601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926114628261141c565b916114706040519384611348565b829481845281830111610278578281602093846000960137010152565b8051821015610c865760209160051b010190565b9190811015610c865760051b0190565b919082018092116114be57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b156114f457565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f76656400000000000000000000000000000000000000000000006064820152fd5b1561157f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b1561160a57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e73666572000000000000000000000000000000000000000000006064820152fd5b9081602091031261027857517fffffffff00000000000000000000000000000000000000000000000000000000811681036102785790565b919082519283825260005b8481106117105750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b806020809284010151828286010152016116d1565b3d15611750573d906117368261141c565b916117446040519384611348565b82523d6000602084013e565b60609056fea264697066735822122007e839c673518540da0fbf9648706649928499dd33ed0c20f63772ee48197af764736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0x178B SWAP1 DUP2 PUSH2 0x1B DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH3 0xFDD58E EQ PUSH2 0x1179 JUMPI POP DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x10D8 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0xCB5 JUMPI DUP1 PUSH4 0x4B503F0B EQ PUSH2 0xA57 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x890 JUMPI DUP1 PUSH4 0x731133E9 EQ PUSH2 0x6E5 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x5A9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x27D JUMPI PUSH4 0xF5298ACA EQ PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH2 0xA5 PUSH2 0x126F JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x24 CALLDATALOAD DUP2 ISZERO PUSH2 0x1F4 JUMPI CALLER DUP3 EQ DUP1 ISZERO PUSH2 0x1D1 JUMPI JUMPDEST PUSH2 0xDB SWAP1 PUSH2 0x14ED JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP3 DUP1 DUP5 LT PUSH2 0x14E JUMPI PUSH1 0x0 SWAP4 DUP3 DUP6 MSTORE DUP5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP6 KECCAK256 DUP5 DUP7 MSTORE PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 DUP7 KECCAK256 SWAP2 SUB SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 PUSH1 0x40 CALLER SWAP3 LOG4 STOP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E20616D6F756E7420657863656564732062616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616E636500000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xD2 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E2066726F6D20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH2 0x296 PUSH2 0x126F JUMP JUMPDEST PUSH2 0x29E PUSH2 0x1292 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x278 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 PUSH2 0x2DF PUSH2 0x2FE SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12E6 JUMP JUMPDEST SWAP5 SWAP1 SWAP2 AND SWAP4 CALLER DUP6 EQ DUP1 ISZERO PUSH2 0x50F JUMPI JUMPDEST PUSH2 0x2F7 SWAP1 PUSH2 0x14ED JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x1456 JUMP JUMPDEST SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP5 PUSH2 0x322 DUP7 ISZERO ISZERO PUSH2 0x1578 JUMP JUMPDEST DUP3 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x349 DUP7 DUP3 LT ISZERO PUSH2 0x1603 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 SWAP3 DUP9 SWAP1 SUB SWAP1 SWAP3 SSTORE DUP8 DUP2 MSTORE KECCAK256 DUP1 SLOAD PUSH2 0x379 SWAP1 DUP8 SWAP1 PUSH2 0x14B1 JUMP JUMPDEST SWAP1 SSTORE DUP6 DUP3 PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE DUP8 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 PUSH1 0x40 CALLER SWAP3 LOG4 EXTCODESIZE PUSH2 0x3B6 JUMPI STOP JUMPDEST PUSH2 0x40D PUSH1 0x20 SWAP4 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD MSTORE PUSH1 0xA4 DUP4 ADD SWAP1 PUSH2 0x16C6 JUMP JUMPDEST SUB DUP2 PUSH1 0x0 DUP7 GAS CALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x4DE JUMPI JUMPDEST POP PUSH2 0x466 JUMPI POP PUSH2 0x42B PUSH2 0x1725 JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 PUSH2 0x461 JUMPI DUP3 PUSH32 0x57F447CE00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP2 AND SUB PUSH2 0x4B1 JUMPI STOP JUMPDEST PUSH32 0x57F447CE00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x501 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x508 JUMPI JUMPDEST PUSH2 0x4F9 DUP2 DUP4 PUSH2 0x1348 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x168E JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x41D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4EF JUMP JUMPDEST POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2EE JUMP JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH2 0x54B PUSH2 0x126F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x568 PUSH2 0x1292 JUMP JUMPDEST SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH2 0x5C2 PUSH2 0x126F JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP1 SWAP3 SUB PUSH2 0x278 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 CALLER EQ PUSH2 0x661 JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP2 SLOAD AND PUSH1 0xFF DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 PUSH1 0x20 CALLER SWAP3 LOG3 STOP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH2 0x6FE PUSH2 0x126F JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x278 JUMPI PUSH2 0x725 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12E6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP5 SWAP2 DUP6 ISZERO PUSH2 0x80C JUMPI PUSH2 0x7AB SWAP2 DUP5 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP8 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x76D DUP6 DUP3 SLOAD PUSH2 0x14B1 JUMP JUMPDEST SWAP1 SSTORE DUP7 PUSH1 0x0 PUSH1 0x40 MLOAD DUP8 DUP2 MSTORE DUP7 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 PUSH1 0x40 CALLER SWAP3 LOG4 CALLDATASIZE SWAP2 PUSH2 0x1456 JUMP JUMPDEST SWAP3 EXTCODESIZE PUSH2 0x7B3 JUMPI STOP JUMPDEST PUSH1 0x20 SWAP2 PUSH2 0x40D PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 DUP6 MSTORE CALLER PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD MSTORE PUSH1 0xA4 DUP4 ADD SWAP1 PUSH2 0x16C6 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x278 JUMPI PUSH2 0x8C1 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12B5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x278 JUMPI PUSH2 0x8E1 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12B5 JUMP JUMPDEST SWAP2 DUP3 DUP2 SUB PUSH2 0x9D3 JUMPI PUSH2 0x8F2 DUP2 PUSH2 0x13B8 JUMP JUMPDEST SWAP3 PUSH2 0x900 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x1348 JUMP JUMPDEST DUP2 DUP5 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x92D DUP4 PUSH2 0x13B8 JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP7 ADD CALLDATACOPY PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x958 JUMPI PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 SWAP1 PUSH2 0x954 SWAP1 DUP3 ADD DUP9 PUSH2 0x1314 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x963 DUP2 DUP4 DUP7 PUSH2 0x14A1 JUMP JUMPDEST CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x97D DUP2 DUP6 DUP10 PUSH2 0x14A1 JUMP JUMPDEST CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP4 SUB PUSH2 0x278 JUMPI PUSH1 0x1 SWAP3 PUSH1 0x40 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x0 SWAP3 AND DUP3 MSTORE PUSH1 0x20 MSTORE KECCAK256 SLOAD PUSH2 0x9CC DUP3 DUP9 PUSH2 0x148D JUMP JUMPDEST MSTORE ADD PUSH2 0x937 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH1 0x40 MLOAD PUSH2 0x120 PUSH2 0xA78 DUP2 DUP4 PUSH2 0x1348 JUMP JUMPDEST PUSH1 0x8 DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x20 DUP4 ADD SWAP2 ADD CALLDATASIZE DUP3 CALLDATACOPY DUP2 MLOAD ISZERO PUSH2 0xC86 JUMPI PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0xC86 JUMPI PUSH32 0x4E1273F400000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x2 LT ISZERO PUSH2 0xC86 JUMPI PUSH32 0xA22CB46500000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x3 LT ISZERO PUSH2 0xC86 JUMPI PUSH32 0xE985E9C500000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x4 LT ISZERO PUSH2 0xC86 JUMPI PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x5 LT ISZERO PUSH2 0xC86 JUMPI PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x6 LT ISZERO PUSH2 0xC86 JUMPI PUSH32 0x731133E900000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x7 LT ISZERO PUSH2 0xC86 JUMPI SWAP1 PUSH32 0xF5298ACA00000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 PUSH1 0x20 DUP5 MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xC4B JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xC3D JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH2 0xCCE PUSH2 0x126F JUMP JUMPDEST PUSH2 0xCD6 PUSH2 0x1292 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x278 JUMPI PUSH2 0xCF6 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12B5 JUMP JUMPDEST SWAP3 SWAP1 PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x278 JUMPI PUSH2 0xD18 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12B5 JUMP JUMPDEST SWAP5 SWAP1 SWAP3 PUSH1 0x84 CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x278 JUMPI PUSH2 0xD51 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12E6 JUMP JUMPDEST SWAP5 SWAP1 SWAP3 AND SWAP5 CALLER DUP7 EQ DUP1 ISZERO PUSH2 0x109E JUMPI JUMPDEST ISZERO PUSH2 0x101A JUMPI PUSH2 0xD77 PUSH2 0xD7F SWAP3 PUSH2 0xD87 SWAP6 CALLDATASIZE SWAP2 PUSH2 0x13D0 JUMP JUMPDEST SWAP8 CALLDATASIZE SWAP2 PUSH2 0x13D0 JUMP JUMPDEST SWAP3 CALLDATASIZE SWAP2 PUSH2 0x1456 JUMP JUMPDEST SWAP4 DUP1 MLOAD DUP3 MLOAD SUB PUSH2 0xF96 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP5 PUSH2 0xDB4 DUP7 ISZERO ISZERO PUSH2 0x1578 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xE39 JUMPI DUP1 PUSH2 0xDCD PUSH1 0x1 SWAP3 DUP6 PUSH2 0x148D JUMP JUMPDEST MLOAD PUSH2 0xDD8 DUP3 DUP8 PUSH2 0x148D JUMP JUMPDEST MLOAD SWAP1 DUP1 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 DUP11 DUP3 MSTORE PUSH1 0x20 MSTORE KECCAK256 SLOAD PUSH2 0xE00 DUP4 DUP3 LT ISZERO PUSH2 0x1603 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP12 DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP4 KECCAK256 SWAP2 DUP5 SWAP1 SUB SWAP1 SWAP2 SSTORE DUP11 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH2 0xE31 SWAP2 PUSH2 0x14B1 JUMP JUMPDEST SWAP1 SSTORE ADD PUSH2 0xDB7 JUMP JUMPDEST POP SWAP3 SWAP1 SWAP2 SWAP4 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 MSTORE PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB PUSH2 0xE75 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x1314 JUMP JUMPDEST SWAP2 DUP1 DUP4 SUB PUSH1 0x20 DUP3 ADD MSTORE DUP1 PUSH2 0xE8A CALLER SWAP5 DUP13 PUSH2 0x1314 JUMP JUMPDEST SUB SWAP1 LOG4 EXTCODESIZE PUSH2 0xE94 JUMPI STOP JUMPDEST PUSH2 0xF0C PUSH1 0x20 SWAP4 PUSH2 0xEFA PUSH2 0xEE8 SWAP7 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP7 PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 DUP9 MSTORE CALLER PUSH1 0x4 DUP10 ADD MSTORE PUSH1 0x24 DUP9 ADD MSTORE PUSH1 0xA0 PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0xA4 DUP8 ADD SWAP1 PUSH2 0x1314 JUMP JUMPDEST SWAP1 PUSH1 0x3 NOT DUP7 DUP4 SUB ADD PUSH1 0x64 DUP8 ADD MSTORE PUSH2 0x1314 JUMP JUMPDEST SWAP1 PUSH1 0x3 NOT DUP5 DUP4 SUB ADD PUSH1 0x84 DUP6 ADD MSTORE PUSH2 0x16C6 JUMP JUMPDEST SUB DUP2 PUSH1 0x0 DUP7 GAS CALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0xF75 JUMPI JUMPDEST POP PUSH2 0xF2A JUMPI POP PUSH2 0x42B PUSH2 0x1725 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP2 AND SUB PUSH2 0x4B1 JUMPI STOP JUMPDEST PUSH2 0xF8F SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x508 JUMPI PUSH2 0x4F9 DUP2 DUP4 PUSH2 0x1348 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0xF1C JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E736665722063616C6C6572206973206E6F7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572206E6F7220617070726F7665640000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST POP DUP6 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CALLER AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0xD60 JUMP JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH1 0x4 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x278 JUMPI DUP1 PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 EQ SWAP1 DUP2 ISZERO PUSH2 0x114F JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP2 POP EQ DUP3 PUSH2 0x1144 JUMP JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH2 0x1192 PUSH2 0x126F JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x11ED JUMPI POP PUSH1 0x24 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x84 SWAP3 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2062616C616E636520717565727920666F7220746865207A PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x65726F2061646472657373000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x278 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x278 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x278 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x278 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x278 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x278 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x278 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x278 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP1 DUP4 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1332 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1325 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1389 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1389 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x13DC DUP2 PUSH2 0x13B8 JUMP JUMPDEST SWAP4 PUSH2 0x13EA PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1348 JUMP JUMPDEST PUSH1 0x20 DUP6 DUP4 DUP2 MSTORE ADD SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP3 DUP4 GT PUSH2 0x278 JUMPI SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x140C JUMPI POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1400 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1389 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x1462 DUP3 PUSH2 0x141C JUMP JUMPDEST SWAP2 PUSH2 0x1470 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1348 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x278 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0xC86 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0xC86 JUMPI PUSH1 0x5 SHL ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x14BE JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ISZERO PUSH2 0x14F4 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F74206F776E6572206E6F72 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20617070726F7665640000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ISZERO PUSH2 0x157F JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ISZERO PUSH2 0x160A JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72207472616E7366657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x278 JUMPI MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0x278 JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1710 JUMPI POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x20 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP1 SWAP3 DUP5 ADD ADD MLOAD DUP3 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0x16D1 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1750 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x1736 DUP3 PUSH2 0x141C JUMP JUMPDEST SWAP2 PUSH2 0x1744 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1348 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SMOD 0xE8 CODECOPY 0xC6 PUSH20 0x518540DA0FBF9648706649928499DD33ED0C20F6 CALLDATACOPY PUSH19 0xEE48197AF764736F6C634300081B0033000000 ",
              "sourceMap": "469:8167:62:-:0;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "abi_decode_address": {
                  "entryPoint": 4719,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_address_9888": {
                  "entryPoint": 4754,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_array_uint256_dyn_calldata": {
                  "entryPoint": 4789,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_available_length_array_uint256_dyn": {
                  "entryPoint": 5072,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_available_length_bytes": {
                  "entryPoint": 5206,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_bytes4_fromMemory": {
                  "entryPoint": 5774,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 4838,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_array_uint256_dyn": {
                  "entryPoint": 4884,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_bytes": {
                  "entryPoint": 5830,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "array_allocation_size_array_uint256_dyn": {
                  "entryPoint": 5048,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_bytes": {
                  "entryPoint": 5148,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "calldata_array_index_access_uint256_dyn_calldata": {
                  "entryPoint": 5281,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "checked_add_uint256": {
                  "entryPoint": 5297,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "extract_returndata": {
                  "entryPoint": 5925,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "finalize_allocation": {
                  "entryPoint": 4936,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "memory_array_index_access_bytes4_dyn": {
                  "entryPoint": 5261,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "require_helper_stringliteral_394a": {
                  "entryPoint": 5357,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "require_helper_stringliteral_6faf": {
                  "entryPoint": 5496,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "require_helper_stringliteral_8ac7": {
                  "entryPoint": 5635,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608080604052600436101561001357600080fd5b60003560e01c908162fdd58e146111795750806301ffc9a7146110d85780632eb2c2d614610cb55780634b503f0b14610a575780634e1273f414610890578063731133e9146106e5578063a22cb465146105a9578063e985e9c514610532578063f242432a1461027d5763f5298aca1461008c57600080fd5b34610278576060600319360112610278576100a561126f565b6044359073ffffffffffffffffffffffffffffffffffffffff1660243581156101f45733821480156101d1575b6100db906114ed565b8060005260006020526040600020826000526020526040600020549280841061014e57600093828552846020526040852084865260205281604086209103905560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4005b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e6365000000000000000000000000000000000000000000000000000000006064820152fd5b50600082815260016020908152604080832033845290915290205460ff166100d2565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b600080fd5b346102785760a06003193601126102785761029661126f565b61029e611292565b906064359060443560843567ffffffffffffffff81116102785773ffffffffffffffffffffffffffffffffffffffff926102df6102fe9236906004016112e6565b9490911693338514801561050f575b6102f7906114ed565b3691611456565b9173ffffffffffffffffffffffffffffffffffffffff851694610322861515611578565b82600052600060205260406000208260005260205260406000205461034986821015611603565b600084815260208181526040808320868452909152808220928890039092558781522080546103799087906114b1565b905585826040518581528760208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a43b6103b657005b61040d60209360405195869485947ff23a6e6100000000000000000000000000000000000000000000000000000000865233600487015260248601526044850152606484015260a0608484015260a48301906116c6565b03816000865af1600091816104de575b50610466575061042b611725565b8051908161046157827f57f447ce0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b602001fd5b7fffffffff000000000000000000000000000000000000000000000000000000007ff23a6e61000000000000000000000000000000000000000000000000000000009116036104b157005b7f57f447ce0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b61050191925060203d602011610508575b6104f98183611348565b81019061168e565b908361041d565b503d6104ef565b50600085815260016020908152604080832033845290915290205460ff166102ee565b346102785760406003193601126102785761054b61126f565b73ffffffffffffffffffffffffffffffffffffffff610568611292565b9116600052600160205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b34610278576040600319360112610278576105c261126f565b602435908115158092036102785773ffffffffffffffffffffffffffffffffffffffff16908133146106615733600052600160205260406000208260005260205260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152fd5b34610278576080600319360112610278576106fe61126f565b6044359060243560643567ffffffffffffffff8111610278576107259036906004016112e6565b73ffffffffffffffffffffffffffffffffffffffff84169491851561080c576107ab91846000526000602052604060002087600052602052604060002061076d8582546114b1565b90558660006040518781528660208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a43691611456565b923b6107b357005b60209161040d60405194859384937ff23a6e61000000000000000000000000000000000000000000000000000000008552336004860152600060248601526044850152606484015260a0608484015260a48301906116c6565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b346102785760406003193601126102785760043567ffffffffffffffff8111610278576108c19036906004016112b5565b60243567ffffffffffffffff8111610278576108e19036906004016112b5565b918281036109d3576108f2816113b8565b926109006040519485611348565b8184527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061092d836113b8565b0136602086013760005b828110610958576040516020808252819061095490820188611314565b0390f35b6109638183866114a1565b35600052600060205260406000209061097d8185896114a1565b359173ffffffffffffffffffffffffffffffffffffffff831683036102785760019260409173ffffffffffffffffffffffffffffffffffffffff60009216825260205220546109cc828861148d565b5201610937565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152fd5b3461027857600060031936011261027857604051610120610a788183611348565b600882527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0602083019101368237815115610c86577efdd58e000000000000000000000000000000000000000000000000000000008152815160011015610c86577f4e1273f4000000000000000000000000000000000000000000000000000000006040830152815160021015610c86577fa22cb465000000000000000000000000000000000000000000000000000000006060830152815160031015610c86577fe985e9c5000000000000000000000000000000000000000000000000000000006080830152815160041015610c86577ff242432a0000000000000000000000000000000000000000000000000000000060a0830152815160051015610c86577f2eb2c2d60000000000000000000000000000000000000000000000000000000060c0830152815160061015610c86577f731133e90000000000000000000000000000000000000000000000000000000060e0830152815160071015610c8657907ff5298aca000000000000000000000000000000000000000000000000000000006101008201526040519182916020830190602084525180915260408301919060005b818110610c4b575050500390f35b82517fffffffff0000000000000000000000000000000000000000000000000000000016845285945060209384019390920191600101610c3d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b346102785760a060031936011261027857610cce61126f565b610cd6611292565b60443567ffffffffffffffff811161027857610cf69036906004016112b5565b929060643567ffffffffffffffff811161027857610d189036906004016112b5565b9490926084359267ffffffffffffffff841161027857610d5173ffffffffffffffffffffffffffffffffffffffff9436906004016112e6565b9490921694338614801561109e575b1561101a57610d77610d7f92610d879536916113d0565b9736916113d0565b923691611456565b938051825103610f965773ffffffffffffffffffffffffffffffffffffffff841694610db4861515611578565b60005b8251811015610e395780610dcd6001928561148d565b51610dd8828761148d565b51908060005260006020526040806000206000908a82526020522054610e0083821015611603565b6000918252602082815260408084208b8552909152808320918490039091558a8252902080549091610e31916114b1565b905501610db7565b50929091938582604051604081527f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb610e756040830188611314565b91808303602082015280610e8a33948c611314565b0390a43b610e9457005b610f0c602093610efa610ee89660405197889687967fbc197c81000000000000000000000000000000000000000000000000000000008852336004890152602488015260a0604488015260a4870190611314565b90600319868303016064870152611314565b906003198483030160848501526116c6565b03816000865af160009181610f75575b50610f2a575061042b611725565b7fffffffff000000000000000000000000000000000000000000000000000000007fbc197c81000000000000000000000000000000000000000000000000000000009116036104b157005b610f8f91925060203d602011610508576104f98183611348565b9083610f1c565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006064820152fd5b50856000526001602052604060002073ffffffffffffffffffffffffffffffffffffffff331660005260205260ff60406000205416610d60565b34610278576020600319360112610278576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361027857807fd9b67a26000000000000000000000000000000000000000000000000000000006020921490811561114f575b506040519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501482611144565b346102785760406003193601126102785761119261126f565b9073ffffffffffffffffffffffffffffffffffffffff8216156111ed5750602435600052600060205273ffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b807f08c379a0000000000000000000000000000000000000000000000000000000006084925260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361027857565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361027857565b9181601f840112156102785782359167ffffffffffffffff8311610278576020808501948460051b01011161027857565b9181601f840112156102785782359167ffffffffffffffff8311610278576020838186019501011161027857565b906020808351928381520192019060005b8181106113325750505090565b8251845260209384019390920191600101611325565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761138957604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff81116113895760051b60200190565b9291906113dc816113b8565b936113ea6040519586611348565b602085838152019160051b810192831161027857905b82821061140c57505050565b8135815260209182019101611400565b67ffffffffffffffff811161138957601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926114628261141c565b916114706040519384611348565b829481845281830111610278578281602093846000960137010152565b8051821015610c865760209160051b010190565b9190811015610c865760051b0190565b919082018092116114be57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b156114f457565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f76656400000000000000000000000000000000000000000000006064820152fd5b1561157f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b1561160a57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e73666572000000000000000000000000000000000000000000006064820152fd5b9081602091031261027857517fffffffff00000000000000000000000000000000000000000000000000000000811681036102785790565b919082519283825260005b8481106117105750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b806020809284010151828286010152016116d1565b3d15611750573d906117368261141c565b916117446040519384611348565b82523d6000602084013e565b60609056fea264697066735822122007e839c673518540da0fbf9648706649928499dd33ed0c20f63772ee48197af764736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH3 0xFDD58E EQ PUSH2 0x1179 JUMPI POP DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x10D8 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0xCB5 JUMPI DUP1 PUSH4 0x4B503F0B EQ PUSH2 0xA57 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x890 JUMPI DUP1 PUSH4 0x731133E9 EQ PUSH2 0x6E5 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x5A9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x27D JUMPI PUSH4 0xF5298ACA EQ PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH2 0xA5 PUSH2 0x126F JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x24 CALLDATALOAD DUP2 ISZERO PUSH2 0x1F4 JUMPI CALLER DUP3 EQ DUP1 ISZERO PUSH2 0x1D1 JUMPI JUMPDEST PUSH2 0xDB SWAP1 PUSH2 0x14ED JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP3 DUP1 DUP5 LT PUSH2 0x14E JUMPI PUSH1 0x0 SWAP4 DUP3 DUP6 MSTORE DUP5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP6 KECCAK256 DUP5 DUP7 MSTORE PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 DUP7 KECCAK256 SWAP2 SUB SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 PUSH1 0x40 CALLER SWAP3 LOG4 STOP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E20616D6F756E7420657863656564732062616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616E636500000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xD2 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E2066726F6D20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH2 0x296 PUSH2 0x126F JUMP JUMPDEST PUSH2 0x29E PUSH2 0x1292 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x278 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 PUSH2 0x2DF PUSH2 0x2FE SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12E6 JUMP JUMPDEST SWAP5 SWAP1 SWAP2 AND SWAP4 CALLER DUP6 EQ DUP1 ISZERO PUSH2 0x50F JUMPI JUMPDEST PUSH2 0x2F7 SWAP1 PUSH2 0x14ED JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x1456 JUMP JUMPDEST SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP5 PUSH2 0x322 DUP7 ISZERO ISZERO PUSH2 0x1578 JUMP JUMPDEST DUP3 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x349 DUP7 DUP3 LT ISZERO PUSH2 0x1603 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 SWAP3 DUP9 SWAP1 SUB SWAP1 SWAP3 SSTORE DUP8 DUP2 MSTORE KECCAK256 DUP1 SLOAD PUSH2 0x379 SWAP1 DUP8 SWAP1 PUSH2 0x14B1 JUMP JUMPDEST SWAP1 SSTORE DUP6 DUP3 PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE DUP8 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 PUSH1 0x40 CALLER SWAP3 LOG4 EXTCODESIZE PUSH2 0x3B6 JUMPI STOP JUMPDEST PUSH2 0x40D PUSH1 0x20 SWAP4 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD MSTORE PUSH1 0xA4 DUP4 ADD SWAP1 PUSH2 0x16C6 JUMP JUMPDEST SUB DUP2 PUSH1 0x0 DUP7 GAS CALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x4DE JUMPI JUMPDEST POP PUSH2 0x466 JUMPI POP PUSH2 0x42B PUSH2 0x1725 JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 PUSH2 0x461 JUMPI DUP3 PUSH32 0x57F447CE00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP2 AND SUB PUSH2 0x4B1 JUMPI STOP JUMPDEST PUSH32 0x57F447CE00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x501 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x508 JUMPI JUMPDEST PUSH2 0x4F9 DUP2 DUP4 PUSH2 0x1348 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x168E JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x41D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4EF JUMP JUMPDEST POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2EE JUMP JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH2 0x54B PUSH2 0x126F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x568 PUSH2 0x1292 JUMP JUMPDEST SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH2 0x5C2 PUSH2 0x126F JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP1 SWAP3 SUB PUSH2 0x278 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 CALLER EQ PUSH2 0x661 JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP2 SLOAD AND PUSH1 0xFF DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 PUSH1 0x20 CALLER SWAP3 LOG3 STOP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH2 0x6FE PUSH2 0x126F JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x278 JUMPI PUSH2 0x725 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12E6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP5 SWAP2 DUP6 ISZERO PUSH2 0x80C JUMPI PUSH2 0x7AB SWAP2 DUP5 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP8 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x76D DUP6 DUP3 SLOAD PUSH2 0x14B1 JUMP JUMPDEST SWAP1 SSTORE DUP7 PUSH1 0x0 PUSH1 0x40 MLOAD DUP8 DUP2 MSTORE DUP7 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 PUSH1 0x40 CALLER SWAP3 LOG4 CALLDATASIZE SWAP2 PUSH2 0x1456 JUMP JUMPDEST SWAP3 EXTCODESIZE PUSH2 0x7B3 JUMPI STOP JUMPDEST PUSH1 0x20 SWAP2 PUSH2 0x40D PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 DUP6 MSTORE CALLER PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD MSTORE PUSH1 0xA4 DUP4 ADD SWAP1 PUSH2 0x16C6 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x278 JUMPI PUSH2 0x8C1 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12B5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x278 JUMPI PUSH2 0x8E1 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12B5 JUMP JUMPDEST SWAP2 DUP3 DUP2 SUB PUSH2 0x9D3 JUMPI PUSH2 0x8F2 DUP2 PUSH2 0x13B8 JUMP JUMPDEST SWAP3 PUSH2 0x900 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x1348 JUMP JUMPDEST DUP2 DUP5 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x92D DUP4 PUSH2 0x13B8 JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP7 ADD CALLDATACOPY PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x958 JUMPI PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 SWAP1 PUSH2 0x954 SWAP1 DUP3 ADD DUP9 PUSH2 0x1314 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x963 DUP2 DUP4 DUP7 PUSH2 0x14A1 JUMP JUMPDEST CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x97D DUP2 DUP6 DUP10 PUSH2 0x14A1 JUMP JUMPDEST CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP4 SUB PUSH2 0x278 JUMPI PUSH1 0x1 SWAP3 PUSH1 0x40 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x0 SWAP3 AND DUP3 MSTORE PUSH1 0x20 MSTORE KECCAK256 SLOAD PUSH2 0x9CC DUP3 DUP9 PUSH2 0x148D JUMP JUMPDEST MSTORE ADD PUSH2 0x937 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH1 0x40 MLOAD PUSH2 0x120 PUSH2 0xA78 DUP2 DUP4 PUSH2 0x1348 JUMP JUMPDEST PUSH1 0x8 DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x20 DUP4 ADD SWAP2 ADD CALLDATASIZE DUP3 CALLDATACOPY DUP2 MLOAD ISZERO PUSH2 0xC86 JUMPI PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0xC86 JUMPI PUSH32 0x4E1273F400000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x2 LT ISZERO PUSH2 0xC86 JUMPI PUSH32 0xA22CB46500000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x3 LT ISZERO PUSH2 0xC86 JUMPI PUSH32 0xE985E9C500000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x4 LT ISZERO PUSH2 0xC86 JUMPI PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x5 LT ISZERO PUSH2 0xC86 JUMPI PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x6 LT ISZERO PUSH2 0xC86 JUMPI PUSH32 0x731133E900000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x7 LT ISZERO PUSH2 0xC86 JUMPI SWAP1 PUSH32 0xF5298ACA00000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 PUSH1 0x20 DUP5 MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xC4B JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xC3D JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH2 0xCCE PUSH2 0x126F JUMP JUMPDEST PUSH2 0xCD6 PUSH2 0x1292 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x278 JUMPI PUSH2 0xCF6 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12B5 JUMP JUMPDEST SWAP3 SWAP1 PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x278 JUMPI PUSH2 0xD18 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12B5 JUMP JUMPDEST SWAP5 SWAP1 SWAP3 PUSH1 0x84 CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x278 JUMPI PUSH2 0xD51 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12E6 JUMP JUMPDEST SWAP5 SWAP1 SWAP3 AND SWAP5 CALLER DUP7 EQ DUP1 ISZERO PUSH2 0x109E JUMPI JUMPDEST ISZERO PUSH2 0x101A JUMPI PUSH2 0xD77 PUSH2 0xD7F SWAP3 PUSH2 0xD87 SWAP6 CALLDATASIZE SWAP2 PUSH2 0x13D0 JUMP JUMPDEST SWAP8 CALLDATASIZE SWAP2 PUSH2 0x13D0 JUMP JUMPDEST SWAP3 CALLDATASIZE SWAP2 PUSH2 0x1456 JUMP JUMPDEST SWAP4 DUP1 MLOAD DUP3 MLOAD SUB PUSH2 0xF96 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP5 PUSH2 0xDB4 DUP7 ISZERO ISZERO PUSH2 0x1578 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xE39 JUMPI DUP1 PUSH2 0xDCD PUSH1 0x1 SWAP3 DUP6 PUSH2 0x148D JUMP JUMPDEST MLOAD PUSH2 0xDD8 DUP3 DUP8 PUSH2 0x148D JUMP JUMPDEST MLOAD SWAP1 DUP1 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 DUP11 DUP3 MSTORE PUSH1 0x20 MSTORE KECCAK256 SLOAD PUSH2 0xE00 DUP4 DUP3 LT ISZERO PUSH2 0x1603 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP12 DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP4 KECCAK256 SWAP2 DUP5 SWAP1 SUB SWAP1 SWAP2 SSTORE DUP11 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH2 0xE31 SWAP2 PUSH2 0x14B1 JUMP JUMPDEST SWAP1 SSTORE ADD PUSH2 0xDB7 JUMP JUMPDEST POP SWAP3 SWAP1 SWAP2 SWAP4 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 MSTORE PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB PUSH2 0xE75 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x1314 JUMP JUMPDEST SWAP2 DUP1 DUP4 SUB PUSH1 0x20 DUP3 ADD MSTORE DUP1 PUSH2 0xE8A CALLER SWAP5 DUP13 PUSH2 0x1314 JUMP JUMPDEST SUB SWAP1 LOG4 EXTCODESIZE PUSH2 0xE94 JUMPI STOP JUMPDEST PUSH2 0xF0C PUSH1 0x20 SWAP4 PUSH2 0xEFA PUSH2 0xEE8 SWAP7 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP7 PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 DUP9 MSTORE CALLER PUSH1 0x4 DUP10 ADD MSTORE PUSH1 0x24 DUP9 ADD MSTORE PUSH1 0xA0 PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0xA4 DUP8 ADD SWAP1 PUSH2 0x1314 JUMP JUMPDEST SWAP1 PUSH1 0x3 NOT DUP7 DUP4 SUB ADD PUSH1 0x64 DUP8 ADD MSTORE PUSH2 0x1314 JUMP JUMPDEST SWAP1 PUSH1 0x3 NOT DUP5 DUP4 SUB ADD PUSH1 0x84 DUP6 ADD MSTORE PUSH2 0x16C6 JUMP JUMPDEST SUB DUP2 PUSH1 0x0 DUP7 GAS CALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0xF75 JUMPI JUMPDEST POP PUSH2 0xF2A JUMPI POP PUSH2 0x42B PUSH2 0x1725 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP2 AND SUB PUSH2 0x4B1 JUMPI STOP JUMPDEST PUSH2 0xF8F SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x508 JUMPI PUSH2 0x4F9 DUP2 DUP4 PUSH2 0x1348 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0xF1C JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E736665722063616C6C6572206973206E6F7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572206E6F7220617070726F7665640000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST POP DUP6 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CALLER AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0xD60 JUMP JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH1 0x4 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x278 JUMPI DUP1 PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 EQ SWAP1 DUP2 ISZERO PUSH2 0x114F JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP2 POP EQ DUP3 PUSH2 0x1144 JUMP JUMPDEST CALLVALUE PUSH2 0x278 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x278 JUMPI PUSH2 0x1192 PUSH2 0x126F JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x11ED JUMPI POP PUSH1 0x24 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x84 SWAP3 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2062616C616E636520717565727920666F7220746865207A PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x65726F2061646472657373000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x278 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x278 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x278 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x278 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x278 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x278 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x278 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x278 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP1 DUP4 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1332 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1325 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1389 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1389 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x13DC DUP2 PUSH2 0x13B8 JUMP JUMPDEST SWAP4 PUSH2 0x13EA PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1348 JUMP JUMPDEST PUSH1 0x20 DUP6 DUP4 DUP2 MSTORE ADD SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP3 DUP4 GT PUSH2 0x278 JUMPI SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x140C JUMPI POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1400 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1389 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x1462 DUP3 PUSH2 0x141C JUMP JUMPDEST SWAP2 PUSH2 0x1470 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1348 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x278 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0xC86 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0xC86 JUMPI PUSH1 0x5 SHL ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x14BE JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ISZERO PUSH2 0x14F4 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F74206F776E6572206E6F72 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20617070726F7665640000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ISZERO PUSH2 0x157F JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ISZERO PUSH2 0x160A JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72207472616E7366657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x278 JUMPI MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0x278 JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1710 JUMPI POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x20 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP1 SWAP3 DUP5 ADD ADD MLOAD DUP3 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0x16D1 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1750 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x1736 DUP3 PUSH2 0x141C JUMP JUMPDEST SWAP2 PUSH2 0x1744 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1348 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SMOD 0xE8 CODECOPY 0xC6 PUSH20 0x518540DA0FBF9648706649928499DD33ED0C20F6 CALLDATACOPY PUSH19 0xEE48197AF764736F6C634300081B0033000000 ",
              "sourceMap": "469:8167:62:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;469:8167:62;;;;;;;:::i;:::-;;;;;;;;7560:18;;469:8167;;735:10:11;7649:20:62;;:62;;;;469:8167;7628:138;;;:::i;:::-;469:8167;;;;;;;;;;-1:-1:-1;469:8167:62;;;;-1:-1:-1;469:8167:62;;7836:21;;;;469:8167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8000:58;469:8167;735:10:11;8000:58:62;;469:8167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7649:62;-1:-1:-1;469:8167:62;;;;;;;;;;;;;735:10:11;469:8167:62;;;;;;;;;;7649:62;;469:8167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;469:8167:62;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;735:10:11;;2432:20:62;;:62;;;;469:8167;2411:138;;;:::i;:::-;469:8167;;;:::i;:::-;;;;;3202:16;3194:66;3202:16;;;3194:66;:::i;:::-;469:8167;;;;;;;;;;-1:-1:-1;469:8167:62;;;;-1:-1:-1;469:8167:62;;3363:76;3371:21;;;;3363:76;:::i;:::-;469:8167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3535:27;;469:8167;;3535:27;:::i;:::-;469:8167;;;;;;;;;;;;;;3578:46;469:8167;735:10:11;3578:46:62;;5209:14;5205:766;;469:8167;5205:766;469:8167;;;;;5247:71;;;;;469:8167;5247:71;;735:10:11;469:8167:62;5247:71;;469:8167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5247:71;;469:8167;5247:71;;;469:8167;;5247:71;;;5205:766;-1:-1:-1;5243:718:62;;5552:409;;;:::i;:::-;469:8167;;;5602:18;;;5706:26;;469:8167;5706:26;469:8167;;;;5706:26;5598:349;469:8167;5834:95;;5243:718;469:8167;;;;5367:55;5363:174;;469:8167;5363:174;5492:26;469:8167;5492:26;469:8167;;;;5492:26;5247:71;;;;;469:8167;5247:71;469:8167;5247:71;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;2432:62;-1:-1:-1;469:8167:62;;;;;;;;;;;;;735:10:11;469:8167:62;;;;;;;;;;2432:62;;469:8167;;;;;-1:-1:-1;;469:8167:62;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;2166:18;469:8167;;;;;;2166:37;469:8167;-1:-1:-1;469:8167:62;;;;;;-1:-1:-1;469:8167:62;;;;;;;;;;;;;;;;-1:-1:-1;;469:8167:62;;;;;;;:::i;:::-;;;;;;;;;;;;;;735:10:11;;;4803:17:62;469:8167;;735:10:11;469:8167:62;;4876:18;469:8167;;;;;;-1:-1:-1;469:8167:62;;;;-1:-1:-1;469:8167:62;;;;;;;;;;;;;;;;4937:41;469:8167;735:10:11;4937:41:62;;469:8167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;469:8167:62;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;7178:16;;469:8167;;;;;;;;;;;;;;-1:-1:-1;469:8167:62;;;;-1:-1:-1;469:8167:62;7285:27;469:8167;;;7285:27;:::i;:::-;469:8167;;;;;;;;;;;;;;7327:52;469:8167;735:10:11;7327:52:62;;469:8167;;;:::i;:::-;5209:14;;5205:766;;469:8167;5205:766;469:8167;;;;;5247:71;;;;;469:8167;5247:71;;735:10:11;469:8167:62;5247:71;;469:8167;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;469:8167:62;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;1574:29;;;;469:8167;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1754:19;;;;;;469:8167;;;;;;;;;;;;;;:::i;:::-;;;;1775:3;1823:6;;;;;:::i;:::-;469:8167;;;;;;;;;1831:11;;;;;;:::i;:::-;469:8167;;;;;;;;;;1813:30;469:8167;1813:30;469:8167;-1:-1:-1;469:8167:62;;;;;;;;1794:49;;;;:::i;:::-;469:8167;;1739:13;;469:8167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;469:8167:62;;;;;;;;;;;;:::i;:::-;8186:1;469:8167;;;;;;;;;;;;;;;;;;;;;8256:1;469:8167;;;;;;;;;;;8309:1;469:8167;;;;;;;;;;;8365:1;469:8167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8535:1;469:8167;;;;;;;;;;;8578:1;469:8167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;469:8167:62;;;;;;;;;8256:1;469:8167;;;;;;;;;;;;;;;;;;-1:-1:-1;;469:8167:62;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;735:10:11;;2862:20:62;;:62;;;;469:8167;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;3926:28;469:8167;;;;;4017:16;4009:66;4017:16;;;4009:66;:::i;:::-;469:8167;4164:3;469:8167;;4148:14;;;;;4196:6;;469:8167;4196:6;;;:::i;:::-;469:8167;4233:10;;;;:::i;:::-;469:8167;;;;;;;;;;;;-1:-1:-1;469:8167:62;;;;;;;;4313:76;4321:21;;;;4313:76;:::i;:::-;469:8167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4501:27;;;:::i;:::-;469:8167;;;4133:13;;4148:14;;;;;;469:8167;;;;;;;4554:47;469:8167;;;;;;:::i;:::-;;;;;;;;;735:10:11;469:8167:62;735:10:11;469:8167:62;;;:::i;:::-;4554:47;;;6226:14;6222:790;;469:8167;6222:790;469:8167;;;;;;;;6264:78;;;;;469:8167;6264:78;;735:10:11;469:8167:62;6264:78;;469:8167;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;469:8167:62;;;;;;;;;:::i;:::-;;-1:-1:-1;;469:8167:62;;;;;;;;;:::i;:::-;6264:78;;469:8167;6264:78;;;469:8167;;6264:78;;;6222:790;-1:-1:-1;6260:742:62;;6593:409;;;:::i;6260:742::-;469:8167;;;;6403:60;6399:179;;469:8167;6264:78;;;;;469:8167;6264:78;469:8167;6264:78;;;;;;;:::i;:::-;;;;;469:8167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2862:62;469:8167;;;;2886:18;469:8167;;;;;;735:10:11;469:8167:62;-1:-1:-1;469:8167:62;;;;;-1:-1:-1;469:8167:62;;;2862:62;;469:8167;;;;;-1:-1:-1;;469:8167:62;;;;;;;;;;;;;;;1049:41;1064:26;469:8167;1049:41;;:81;;;;;469:8167;;;;;;;;;;1049:81;844:25:16;829:40;;;1049:81:62;;;469:8167;;;;;-1:-1:-1;;469:8167:62;;;;;;;:::i;:::-;;;;;1250:21;469:8167;;;;;;;;;;;;;;1336:22;469:8167;-1:-1:-1;469:8167:62;;;;;-1:-1:-1;469:8167:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;469:8167:62;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;469:8167:62;;;;;-1:-1:-1;469:8167:62;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;469:8167:62;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;469:8167:62;;;;;;;;;;;-1:-1:-1;469:8167:62;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;469:8167:62;;;;:::o;:::-;;;:::o"
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "burn(address,uint256,uint256)": "f5298aca",
              "getSelectors()": "4b503f0b",
              "isApprovedForAll(address,address)": "e985e9c5",
              "mint(address,uint256,uint256,bytes)": "731133e9",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSelectors\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"pure\",\"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\":[{\"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\":\"mint\",\"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\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}]},\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"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}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the value of tokens of token type `id` owned by `account`.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the zero address.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/ERC1155Facet.sol\":\"ERC1155Facet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0xf189f9b417fe1931e1ab706838aff1128528694a9fcdb5ff7665197f2ca57d09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ff0143c836c8c9f85d13708733c09e21251395847fccfb518bf3b556726a840\",\"dweb:/ipfs/QmP69sjjrQrhYAsvCSSB69Bx66SiUPdQUqdzMYnf4wANHm\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8\",\"dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"contracts/facets/ERC1155Facet.sol\":{\"keccak256\":\"0x318c66c5f522cdac6907acbc1fbf4033be1b8631796d7589b0c1264a24602644\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://bfe8408141ec71d6b7221a9db0c3e0168551e5b23731138a55128d5288d38218\",\"dweb:/ipfs/QmU2JNfnD7hCePchoGiWh3tR2RD2n9sQpDA8PvfYtrgDZD\"]}},\"version\":1}"
        }
      },
      "contracts/facets/OwnershipFacet.sol": {
        "OwnershipFacet": {
          "abi": [
            {
              "inputs": [],
              "name": "getSelectorsOwnership",
              "outputs": [
                {
                  "internalType": "bytes4[]",
                  "name": "",
                  "type": "bytes4[]"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "initializeOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608080604052346015576105ed908161001b8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c9081638c5f36bb146103d6575080638da5cb5b14610365578063b4105004146101be5763f2fde38b1461004b57600080fd5b346101b95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b95760043573ffffffffffffffffffffffffffffffffffffffff81168091036101b9577f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5473ffffffffffffffffffffffffffffffffffffffff81163314906100e08261052c565b8215610136576101107fffffffffffffffffffffffff00000000000000000000000000000000000000009261052c565b16177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c55005b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b600080fd5b346101b95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b9576040516080810167ffffffffffffffff8111828210176103365760405260038152602081016060368237815115610307577f8da5cb5b000000000000000000000000000000000000000000000000000000008152815160011015610307577ff2fde38b00000000000000000000000000000000000000000000000000000000604083015281516002101561030757907f8c5f36bb0000000000000000000000000000000000000000000000000000000060608201526040519182916020830190602084525180915260408301919060005b8181106102cc575050500390f35b82517fffffffff00000000000000000000000000000000000000000000000000000000168452859450602093840193909201916001016102be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b346101b95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b957602073ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416604051908152f35b346101b95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b9576004359073ffffffffffffffffffffffffffffffffffffffff82168092036101b95773ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c54166104d057507fffffffffffffffffffffffff00000000000000000000000000000000000000007f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c55600080f35b807f08c379a0000000000000000000000000000000000000000000000000000000006064925260206004820152601160248201527f4f776e657220616c7265616479207365740000000000000000000000000000006044820152fd5b1561053357565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60448201527f6374696f6e0000000000000000000000000000000000000000000000000000006064820152fdfea264697066735822122066eddd06f11187669d0e38a1dd5cc02ecfb127902c8437b38b7191378b49355b64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0x5ED SWAP1 DUP2 PUSH2 0x1B DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x8C5F36BB EQ PUSH2 0x3D6 JUMPI POP DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x365 JUMPI DUP1 PUSH4 0xB4105004 EQ PUSH2 0x1BE JUMPI PUSH4 0xF2FDE38B EQ PUSH2 0x4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1B9 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1B9 JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 SWAP2 SUB PUSH2 0x1B9 JUMPI PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ SWAP1 PUSH2 0xE0 DUP3 PUSH2 0x52C JUMP JUMPDEST DUP3 ISZERO PUSH2 0x136 JUMPI PUSH2 0x110 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 PUSH2 0x52C JUMP JUMPDEST AND OR PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SSTORE STOP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4E6577206F776E65722063616E6E6F7420626520746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1B9 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1B9 JUMPI PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR PUSH2 0x336 JUMPI PUSH1 0x40 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH1 0x60 CALLDATASIZE DUP3 CALLDATACOPY DUP2 MLOAD ISZERO PUSH2 0x307 JUMPI PUSH32 0x8DA5CB5B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x307 JUMPI PUSH32 0xF2FDE38B00000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x2 LT ISZERO PUSH2 0x307 JUMPI SWAP1 PUSH32 0x8C5F36BB00000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 PUSH1 0x20 DUP5 MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x2CC JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2BE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x1B9 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1B9 JUMPI PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B9 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1B9 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP1 SWAP3 SUB PUSH2 0x1B9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND PUSH2 0x4D0 JUMPI POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND OR PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SSTORE PUSH1 0x0 DUP1 RETURN JUMPDEST DUP1 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 SWAP3 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E657220616C726561647920736574000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST ISZERO PUSH2 0x533 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920746865206F776E65722063616E2063616C6C20746869732066756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6374696F6E000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0xEDDD06F1118766 SWAP14 0xE CODESIZE LOG1 0xDD TLOAD 0xC0 0x2E 0xCF 0xB1 0x27 SWAP1 0x2C DUP5 CALLDATACOPY 0xB3 DUP12 PUSH18 0x91378B49355B64736F6C634300081B003300 ",
              "sourceMap": "26:1550:63:-:0;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "require_helper_stringliteral_02c4": {
                  "entryPoint": 1324,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608080604052600436101561001357600080fd5b60003560e01c9081638c5f36bb146103d6575080638da5cb5b14610365578063b4105004146101be5763f2fde38b1461004b57600080fd5b346101b95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b95760043573ffffffffffffffffffffffffffffffffffffffff81168091036101b9577f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5473ffffffffffffffffffffffffffffffffffffffff81163314906100e08261052c565b8215610136576101107fffffffffffffffffffffffff00000000000000000000000000000000000000009261052c565b16177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c55005b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b600080fd5b346101b95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b9576040516080810167ffffffffffffffff8111828210176103365760405260038152602081016060368237815115610307577f8da5cb5b000000000000000000000000000000000000000000000000000000008152815160011015610307577ff2fde38b00000000000000000000000000000000000000000000000000000000604083015281516002101561030757907f8c5f36bb0000000000000000000000000000000000000000000000000000000060608201526040519182916020830190602084525180915260408301919060005b8181106102cc575050500390f35b82517fffffffff00000000000000000000000000000000000000000000000000000000168452859450602093840193909201916001016102be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b346101b95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b957602073ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416604051908152f35b346101b95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b9576004359073ffffffffffffffffffffffffffffffffffffffff82168092036101b95773ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c54166104d057507fffffffffffffffffffffffff00000000000000000000000000000000000000007f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c55600080f35b807f08c379a0000000000000000000000000000000000000000000000000000000006064925260206004820152601160248201527f4f776e657220616c7265616479207365740000000000000000000000000000006044820152fd5b1561053357565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60448201527f6374696f6e0000000000000000000000000000000000000000000000000000006064820152fdfea264697066735822122066eddd06f11187669d0e38a1dd5cc02ecfb127902c8437b38b7191378b49355b64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x8C5F36BB EQ PUSH2 0x3D6 JUMPI POP DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x365 JUMPI DUP1 PUSH4 0xB4105004 EQ PUSH2 0x1BE JUMPI PUSH4 0xF2FDE38B EQ PUSH2 0x4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1B9 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1B9 JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 SWAP2 SUB PUSH2 0x1B9 JUMPI PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ SWAP1 PUSH2 0xE0 DUP3 PUSH2 0x52C JUMP JUMPDEST DUP3 ISZERO PUSH2 0x136 JUMPI PUSH2 0x110 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 PUSH2 0x52C JUMP JUMPDEST AND OR PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SSTORE STOP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4E6577206F776E65722063616E6E6F7420626520746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1B9 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1B9 JUMPI PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR PUSH2 0x336 JUMPI PUSH1 0x40 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH1 0x60 CALLDATASIZE DUP3 CALLDATACOPY DUP2 MLOAD ISZERO PUSH2 0x307 JUMPI PUSH32 0x8DA5CB5B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x307 JUMPI PUSH32 0xF2FDE38B00000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP4 ADD MSTORE DUP2 MLOAD PUSH1 0x2 LT ISZERO PUSH2 0x307 JUMPI SWAP1 PUSH32 0x8C5F36BB00000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 PUSH1 0x20 DUP5 MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x2CC JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2BE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x1B9 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1B9 JUMPI PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B9 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1B9 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP1 SWAP3 SUB PUSH2 0x1B9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND PUSH2 0x4D0 JUMPI POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SLOAD AND OR PUSH32 0x586D3BF3558E5FFE721C6F44F4451880E303FA89B73BD2C30250F8D38C80D09C SSTORE PUSH1 0x0 DUP1 RETURN JUMPDEST DUP1 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 SWAP3 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E657220616C726561647920736574000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST ISZERO PUSH2 0x533 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920746865206F776E65722063616E2063616C6C20746869732066756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6374696F6E000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0xEDDD06F1118766 SWAP14 0xE CODESIZE LOG1 0xDD TLOAD 0xC0 0x2E 0xCF 0xB1 0x27 SWAP1 0x2C DUP5 CALLDATACOPY 0xB3 DUP12 PUSH18 0x91378B49355B64736F6C634300081B003300 ",
              "sourceMap": "26:1550:63:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;102:47;26:1550;;;;1129:10;:38;1121:88;;;;:::i;:::-;775:23;;26:1550;;1121:88;26:1550;1121:88;;:::i;:::-;26:1550;;102:47;26:1550;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:1;26:1550;;;;;;;;;;;;;;1382:29;26:1550;;;;1431:1;26:1550;;;;1436:41;26:1550;;;;;;1497:1;26:1550;;;;;1502:39;26:1550;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26:1550:63;;;;;;;;;1431:1;26:1550;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;102:47;26:1550;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;102:47;26:1550;;;;;;102:47;26:1550;;;102:47;26:1550;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "getSelectorsOwnership()": "b4105004",
              "initializeOwner(address)": "8c5f36bb",
              "owner()": "8da5cb5b",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getSelectorsOwnership\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"initializeOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/OwnershipFacet.sol\":\"OwnershipFacet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/facets/OwnershipFacet.sol\":{\"keccak256\":\"0x0f4b3ddcebde62df41c3646cdb54b3908d94a624c1d8bad46da4ac21b3f6702f\",\"urls\":[\"bzz-raw://73ae296c47d5ce73d2f568c992cf7c3ac612e92f9d144f5a5b8026a97e717c04\",\"dweb:/ipfs/QmZoBj7ZMd3oUptXw3f9aPJKypN4w7z472C4cgSe8E96Cr\"]}},\"version\":1}"
        }
      },
      "contracts/interfaces/IDiamond.sol": {
        "IDiamond": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "facetAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "enum IDiamond.FacetCutAction",
                      "name": "action",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes4[]",
                      "name": "functionSelectors",
                      "type": "bytes4[]"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct IDiamond.FacetCut[]",
                  "name": "_diamondCut",
                  "type": "tuple[]"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "_init",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "_calldata",
                  "type": "bytes"
                }
              ],
              "name": "DiamondCut",
              "type": "event"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum IDiamond.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"indexed\":false,\"internalType\":\"struct IDiamond.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"DiamondCut\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IDiamond.sol\":\"IDiamond\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IDiamond.sol\":{\"keccak256\":\"0xf6ea8172fc4ca7f19387dcab713a7c2d3c7453540ec8ea9bbf8fa29fce272d4b\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://57c74c3e17114c0aa5982815aab8cff5264c00317af1abe3620ee8acaca49ff9\",\"dweb:/ipfs/Qma45nAPXZU1MCDfuEBe1Fub6Qd7oumdyEqonGeqsPHXMQ\"]}},\"version\":1}"
        }
      },
      "contracts/interfaces/IDiamondCut.sol": {
        "IDiamondCut": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "facetAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "enum IDiamond.FacetCutAction",
                      "name": "action",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes4[]",
                      "name": "functionSelectors",
                      "type": "bytes4[]"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct IDiamond.FacetCut[]",
                  "name": "_diamondCut",
                  "type": "tuple[]"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "_init",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "_calldata",
                  "type": "bytes"
                }
              ],
              "name": "DiamondCut",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "facetAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "enum IDiamond.FacetCutAction",
                      "name": "action",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes4[]",
                      "name": "functionSelectors",
                      "type": "bytes4[]"
                    }
                  ],
                  "internalType": "struct IDiamond.FacetCut[]",
                  "name": "_diamondCut",
                  "type": "tuple[]"
                },
                {
                  "internalType": "address",
                  "name": "_init",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_calldata",
                  "type": "bytes"
                }
              ],
              "name": "diamondCut",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "diamondCut((address,uint8,bytes4[])[],address,bytes)": "1f931c1c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum IDiamond.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"indexed\":false,\"internalType\":\"struct IDiamond.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"DiamondCut\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum IDiamond.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct IDiamond.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"diamondCut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"diamondCut((address,uint8,bytes4[])[],address,bytes)\":{\"params\":{\"_calldata\":\"A function call, including function selector and arguments                  _calldata is executed with delegatecall on _init\",\"_diamondCut\":\"Contains the facet addresses and function selectors\",\"_init\":\"The address of the contract or facet to execute _calldata\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"diamondCut((address,uint8,bytes4[])[],address,bytes)\":{\"notice\":\"Add/replace/remove any number of functions and optionally execute         a function with delegatecall\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IDiamondCut.sol\":\"IDiamondCut\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IDiamond.sol\":{\"keccak256\":\"0xf6ea8172fc4ca7f19387dcab713a7c2d3c7453540ec8ea9bbf8fa29fce272d4b\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://57c74c3e17114c0aa5982815aab8cff5264c00317af1abe3620ee8acaca49ff9\",\"dweb:/ipfs/Qma45nAPXZU1MCDfuEBe1Fub6Qd7oumdyEqonGeqsPHXMQ\"]},\"contracts/interfaces/IDiamondCut.sol\":{\"keccak256\":\"0xe30dd72352453957dbc5d9f6b96369b1630c7abac4c2eb6fd49fc858317f99e3\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://55940b6e5e3ae666f6851b2deac40b10173a2636fcef15dbe7e44b94542e9cfa\",\"dweb:/ipfs/QmeVaPtmffSzEz3x4NgAJVjdjMTosM85JyCcX3eGF1Qpo1\"]}},\"version\":1}"
        }
      },
      "contracts/interfaces/IDiamondLoupe.sol": {
        "IDiamondLoupe": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_functionSelector",
                  "type": "bytes4"
                }
              ],
              "name": "facetAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "facetAddress_",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "facetAddresses",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "facetAddresses_",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_facet",
                  "type": "address"
                }
              ],
              "name": "facetFunctionSelectors",
              "outputs": [
                {
                  "internalType": "bytes4[]",
                  "name": "facetFunctionSelectors_",
                  "type": "bytes4[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "facets",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "facetAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes4[]",
                      "name": "functionSelectors",
                      "type": "bytes4[]"
                    }
                  ],
                  "internalType": "struct IDiamondLoupe.Facet[]",
                  "name": "facets_",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "facetAddress(bytes4)": "cdffacc6",
              "facetAddresses()": "52ef6b2c",
              "facetFunctionSelectors(address)": "adfca15e",
              "facets()": "7a0ed627"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_functionSelector\",\"type\":\"bytes4\"}],\"name\":\"facetAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"facetAddress_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"facetAddresses\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"facetAddresses_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_facet\",\"type\":\"address\"}],\"name\":\"facetFunctionSelectors\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"facetFunctionSelectors_\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"facets\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct IDiamondLoupe.Facet[]\",\"name\":\"facets_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"facetAddress(bytes4)\":{\"details\":\"If facet is not found return address(0).\",\"params\":{\"_functionSelector\":\"The function selector.\"},\"returns\":{\"facetAddress_\":\"The facet address.\"}},\"facetAddresses()\":{\"returns\":{\"facetAddresses_\":\"facetAddresses_\"}},\"facetFunctionSelectors(address)\":{\"params\":{\"_facet\":\"The facet address.\"},\"returns\":{\"facetFunctionSelectors_\":\"facetFunctionSelectors_\"}},\"facets()\":{\"returns\":{\"facets_\":\"Facet\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"facetAddress(bytes4)\":{\"notice\":\"Gets the facet that supports the given selector.\"},\"facetAddresses()\":{\"notice\":\"Get all the facet addresses used by a diamond.\"},\"facetFunctionSelectors(address)\":{\"notice\":\"Gets all the function selectors supported by a specific facet.\"},\"facets()\":{\"notice\":\"Gets all facet addresses and their four byte function selectors.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IDiamondLoupe.sol\":\"IDiamondLoupe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IDiamondLoupe.sol\":{\"keccak256\":\"0xe0bf21cd76b595fce14ab95436ed0ad56a3e98715ca1e96bf01cf5658d9a5a82\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://7cc8b98fb3da2c460dce03e7b1b1788d5e6420deaa5b01b03131605fe2823ab1\",\"dweb:/ipfs/QmWLGrK1FDCDQxkh43BQW94U1ruNhnVygAqXxfhsAGPsf3\"]}},\"version\":1}"
        }
      },
      "contracts/interfaces/IERC173.sol": {
        "IERC173": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "owner_",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"OwnershipTransferred(address,address)\":{\"details\":\"This emits when ownership of a contract changes.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"returns\":{\"owner_\":\"The address of the owner.\"}},\"transferOwnership(address)\":{\"details\":\"Set _newOwner to address(0) to renounce any ownership.\",\"params\":{\"_newOwner\":\"The address of the new owner of the contract\"}}},\"title\":\"ERC-173 Contract Ownership Standard  Note: the ERC-165 identifier for this interface is 0x7f5828d0\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"owner()\":{\"notice\":\"Get the address of the owner\"},\"transferOwnership(address)\":{\"notice\":\"Set the address of the new owner of the contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC173.sol\":\"IERC173\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IERC173.sol\":{\"keccak256\":\"0x6a207bcba157886a636f4c6169a72df722c6d35de27b03024569b37bc9e4327c\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://ff2aeac96062c46468a955a9f4477fabfcff28e6bb86d35a53f1f129e3013e90\",\"dweb:/ipfs/QmRx895oFZrWYWbci3HqBTvYK5rsgypWSxMv7qLnvRb6Kh\"]}},\"version\":1}"
        }
      },
      "contracts/libraries/BokkyPooBahsDateTimeLibrary.sol": {
        "BokkyPooBahsDateTimeLibrary": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220ddc20121492879be19864feb61f7036208fd22da99ccf4379e5e91705845792364736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDD 0xC2 ADD 0x21 BLOBHASH 0x28 PUSH26 0xBE19864FEB61F7036208FD22DA99CCF4379E5E91705845792364 PUSH20 0x6F6C634300081B00330000000000000000000000 ",
              "sourceMap": "959:15107:68:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "600080fdfea2646970667358221220ddc20121492879be19864feb61f7036208fd22da99ccf4379e5e91705845792364736f6c634300081b0033",
              "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDD 0xC2 ADD 0x21 BLOBHASH 0x28 PUSH26 0xBE19864FEB61F7036208FD22DA99CCF4379E5E91705845792364 PUSH20 0x6F6C634300081B00330000000000000000000000 ",
              "sourceMap": "959:15107:68:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/BokkyPooBahsDateTimeLibrary.sol\":\"BokkyPooBahsDateTimeLibrary\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/libraries/BokkyPooBahsDateTimeLibrary.sol\":{\"keccak256\":\"0xf4cbf156ed0c40d43ee1bd32de6c025dceefe9679ba54fe98bd2a2c83184a415\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://227ef653e9b0967ab18a6ef9d7ed5c542dde1e6a0f87194d517e9a94ee6a6c1e\",\"dweb:/ipfs/QmbJTB9YDavU7AeBNBJotP28uxe7k4XrabRpWzgvqVde6x\"]}},\"version\":1}"
        }
      },
      "contracts/libraries/LibDiamond.sol": {
        "LibDiamond": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "facetAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "enum IDiamond.FacetCutAction",
                      "name": "action",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes4[]",
                      "name": "functionSelectors",
                      "type": "bytes4[]"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct IDiamond.FacetCut[]",
                  "name": "_diamondCut",
                  "type": "tuple[]"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "_init",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "_calldata",
                  "type": "bytes"
                }
              ],
              "name": "DiamondCut",
              "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"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122095b3c4e4c3bec913b38cbd17bb3227da5d5fafff8a41556a107cbc5028d4f70264736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP6 0xB3 0xC4 0xE4 0xC3 0xBE 0xC9 SGT 0xB3 DUP13 0xBD OR 0xBB ORIGIN 0x27 0xDA TSTORE PUSH0 0xAF SELFDESTRUCT DUP11 COINBASE SSTORE PUSH11 0x107CBC5028D4F70264736F PUSH13 0x634300081B0033000000000000 ",
              "sourceMap": "1600:7969:69:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "600080fdfea264697066735822122095b3c4e4c3bec913b38cbd17bb3227da5d5fafff8a41556a107cbc5028d4f70264736f6c634300081b0033",
              "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP6 0xB3 0xC4 0xE4 0xC3 0xBE 0xC9 SGT 0xB3 DUP13 0xBD OR 0xBB ORIGIN 0x27 0xDA TSTORE PUSH0 0xAF SELFDESTRUCT DUP11 COINBASE SSTORE PUSH11 0x107CBC5028D4F70264736F PUSH13 0x634300081B0033000000000000 ",
              "sourceMap": "1600:7969:69:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum IDiamond.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"indexed\":false,\"internalType\":\"struct IDiamond.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"DiamondCut\",\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/LibDiamond.sol\":\"LibDiamond\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IDiamond.sol\":{\"keccak256\":\"0xf6ea8172fc4ca7f19387dcab713a7c2d3c7453540ec8ea9bbf8fa29fce272d4b\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://57c74c3e17114c0aa5982815aab8cff5264c00317af1abe3620ee8acaca49ff9\",\"dweb:/ipfs/Qma45nAPXZU1MCDfuEBe1Fub6Qd7oumdyEqonGeqsPHXMQ\"]},\"contracts/interfaces/IDiamondCut.sol\":{\"keccak256\":\"0xe30dd72352453957dbc5d9f6b96369b1630c7abac4c2eb6fd49fc858317f99e3\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://55940b6e5e3ae666f6851b2deac40b10173a2636fcef15dbe7e44b94542e9cfa\",\"dweb:/ipfs/QmeVaPtmffSzEz3x4NgAJVjdjMTosM85JyCcX3eGF1Qpo1\"]},\"contracts/libraries/LibDiamond.sol\":{\"keccak256\":\"0xe411f7691d0554f8f01260065f249abda18eaa17697b626272c4e0554a2244b1\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://a116a9dcfd5dc8cef470e6c53c69bbaada930ebe9a7373a0a4a6c3924b77d7e8\",\"dweb:/ipfs/QmRxGt99hosAR5wxJpuTeXpyEV6DNb5fnxs76P2L2Bd34Y\"]}},\"version\":1}"
        }
      },
      "contracts/libraries/StructBondInit.sol": {
        "BondInitParams": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220320a53cec7a7bae7fc6a44655a767bd13990cd1d43e445831bb42a9cb4c102ec64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN EXP MSTORE8 0xCE 0xC7 0xA7 0xBA 0xE7 0xFC PUSH11 0x44655A767BD13990CD1D43 0xE4 GASLIMIT DUP4 SHL 0xB4 0x2A SWAP13 0xB4 0xC1 MUL 0xEC PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "66:742:70:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "600080fdfea2646970667358221220320a53cec7a7bae7fc6a44655a767bd13990cd1d43e445831bb42a9cb4c102ec64736f6c634300081b0033",
              "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN EXP MSTORE8 0xCE 0xC7 0xA7 0xBA 0xE7 0xFC PUSH11 0x44655A767BD13990CD1D43 0xE4 GASLIMIT DUP4 SHL 0xB4 0x2A SWAP13 0xB4 0xC1 MUL 0xEC PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "66:742:70:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/StructBondInit.sol\":\"BondInitParams\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/libraries/StructBondInit.sol\":{\"keccak256\":\"0x7b76e4a8530dd06e68b69a1ecf133fae57662c77297c092359593190c30bbec5\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://88eae8ee0e2a668c3b529bde8215ac5cd1a9b8a63a31c890b002bc9675f90ef6\",\"dweb:/ipfs/QmTJbJNfyFv2vKqUoXBbNV8vHHhYyfioLVrzKSrL7AqqTx\"]}},\"version\":1}"
        }
      },
      "contracts/libraries/structClaim.sol": {
        "ClaimParams": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122038e2599e2b2286b698d6bd70ea327fe9182fd5acbab33460db7149ac8ad20d1d64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODESIZE 0xE2 MSIZE SWAP15 0x2B 0x22 DUP7 0xB6 SWAP9 0xD6 0xBD PUSH17 0xEA327FE9182FD5ACBAB33460DB7149AC8A 0xD2 0xD SAR PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "66:235:71:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "600080fdfea264697066735822122038e2599e2b2286b698d6bd70ea327fe9182fd5acbab33460db7149ac8ad20d1d64736f6c634300081b0033",
              "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODESIZE 0xE2 MSIZE SWAP15 0x2B 0x22 DUP7 0xB6 SWAP9 0xD6 0xBD PUSH17 0xEA327FE9182FD5ACBAB33460DB7149AC8A 0xD2 0xD SAR PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "66:235:71:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/structClaim.sol\":\"ClaimParams\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/libraries/structClaim.sol\":{\"keccak256\":\"0x57680e8b9e78645b338829929d350053e8480f9cbfde5f8a97aba8676a75e114\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://be5beec2bf2fa6c72e84816673491d1d825b3c51cf36db5971d9d8b02a81461a\",\"dweb:/ipfs/QmbFZj1m7mfCsmiden8wN3nFjhV6NJTstfiS5o5AgYqwjZ\"]}},\"version\":1}"
        }
      },
      "contracts/upgradeInitializers/DiamondInit.sol": {
        "DiamondInit": {
          "abi": [
            {
              "inputs": [],
              "name": "init",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608080604052346015576101a1908161001b8239f35b600080fdfe600436101561000d57600080fd5b60003560e01c63e1c7392a1461002257600080fd5b346101665760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610166577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e6020527f673a26ab9c976db950bbe987aa80c5e387f329563bb0afe093ddccc970489e31805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091821681179092557f9bed265332efc30fa7643cc339edc91cb284a0f6566818a5788922af58c86b5080548216831790557f795db15802e151b19272d3e7b72ebd9d0cedc282cc23a6e937c8c3c90d9e213780548216831790557f7f5828d0000000000000000000000000000000000000000000000000000000006000527fe616bea4664e595328e525b24998219caecea2090de91847473acfb3efaa8aad80549091169091179055005b600080fdfea2646970667358221220a8b378c8f175bf259c318c44232ca151f7a68c430821a494c2a5b2fff362654b64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0x1A1 SWAP1 DUP2 PUSH2 0x1B DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0xD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0xE1C7392A EQ PUSH2 0x22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x166 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x166 JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131E PUSH1 0x20 MSTORE PUSH32 0x673A26AB9C976DB950BBE987AA80C5E387F329563BB0AFE093DDCCC970489E31 DUP1 SLOAD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH32 0x9BED265332EFC30FA7643CC339EDC91CB284A0F6566818A5788922AF58C86B50 DUP1 SLOAD DUP3 AND DUP4 OR SWAP1 SSTORE PUSH32 0x795DB15802E151B19272D3E7B72EBD9D0CEDC282CC23A6E937C8C3C90D9E2137 DUP1 SLOAD DUP3 AND DUP4 OR SWAP1 SSTORE PUSH32 0x7F5828D000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH32 0xE616BEA4664E595328E525B24998219CAECEA2090DE91847473ACFB3EFAA8AAD DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SWAP2 OR SWAP1 SSTORE STOP JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xB3 PUSH25 0xC8F175BF259C318C44232CA151F7A68C430821A494C2A5B2FF RETURN PUSH3 0x654B64 PUSH20 0x6F6C634300081B00330000000000000000000000 ",
              "sourceMap": "957:1001:72:-:0;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "600436101561000d57600080fd5b60003560e01c63e1c7392a1461002257600080fd5b346101665760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610166577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e6020527f673a26ab9c976db950bbe987aa80c5e387f329563bb0afe093ddccc970489e31805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091821681179092557f9bed265332efc30fa7643cc339edc91cb284a0f6566818a5788922af58c86b5080548216831790557f795db15802e151b19272d3e7b72ebd9d0cedc282cc23a6e937c8c3c90d9e213780548216831790557f7f5828d0000000000000000000000000000000000000000000000000000000006000527fe616bea4664e595328e525b24998219caecea2090de91847473acfb3efaa8aad80549091169091179055005b600080fdfea2646970667358221220a8b378c8f175bf259c318c44232ca151f7a68c430821a494c2a5b2fff362654b64736f6c634300081b0033",
              "opcodes": "PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0xD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0xE1C7392A EQ PUSH2 0x22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x166 JUMPI PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x166 JUMPI PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131E PUSH1 0x20 MSTORE PUSH32 0x673A26AB9C976DB950BBE987AA80C5E387F329563BB0AFE093DDCCC970489E31 DUP1 SLOAD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH32 0x9BED265332EFC30FA7643CC339EDC91CB284A0F6566818A5788922AF58C86B50 DUP1 SLOAD DUP3 AND DUP4 OR SWAP1 SSTORE PUSH32 0x795DB15802E151B19272D3E7B72EBD9D0CEDC282CC23A6E937C8C3C90D9E2137 DUP1 SLOAD DUP3 AND DUP4 OR SWAP1 SSTORE PUSH32 0x7F5828D000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH32 0xE616BEA4664E595328E525B24998219CAECEA2090DE91847473ACFB3EFAA8AAD DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SWAP2 OR SWAP1 SSTORE STOP JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xB3 PUSH25 0xC8F175BF259C318C44232CA151F7A68C430821A494C2A5B2FF RETURN PUSH3 0x654B64 PUSH20 0x6F6C634300081B00330000000000000000000000 ",
              "sourceMap": "957:1001:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1236:22;957:1001;;;;;1288:4;957:1001;;;;;;;;;;;;;;;;;;;;;;;;;;;1467:25;-1:-1:-1;957:1001:72;;;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "init()": "e1c7392a"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/upgradeInitializers/DiamondInit.sol\":\"DiamondInit\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"contracts/interfaces/IDiamond.sol\":{\"keccak256\":\"0xf6ea8172fc4ca7f19387dcab713a7c2d3c7453540ec8ea9bbf8fa29fce272d4b\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://57c74c3e17114c0aa5982815aab8cff5264c00317af1abe3620ee8acaca49ff9\",\"dweb:/ipfs/Qma45nAPXZU1MCDfuEBe1Fub6Qd7oumdyEqonGeqsPHXMQ\"]},\"contracts/interfaces/IDiamondCut.sol\":{\"keccak256\":\"0xe30dd72352453957dbc5d9f6b96369b1630c7abac4c2eb6fd49fc858317f99e3\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://55940b6e5e3ae666f6851b2deac40b10173a2636fcef15dbe7e44b94542e9cfa\",\"dweb:/ipfs/QmeVaPtmffSzEz3x4NgAJVjdjMTosM85JyCcX3eGF1Qpo1\"]},\"contracts/interfaces/IDiamondLoupe.sol\":{\"keccak256\":\"0xe0bf21cd76b595fce14ab95436ed0ad56a3e98715ca1e96bf01cf5658d9a5a82\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://7cc8b98fb3da2c460dce03e7b1b1788d5e6420deaa5b01b03131605fe2823ab1\",\"dweb:/ipfs/QmWLGrK1FDCDQxkh43BQW94U1ruNhnVygAqXxfhsAGPsf3\"]},\"contracts/interfaces/IERC173.sol\":{\"keccak256\":\"0x6a207bcba157886a636f4c6169a72df722c6d35de27b03024569b37bc9e4327c\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://ff2aeac96062c46468a955a9f4477fabfcff28e6bb86d35a53f1f129e3013e90\",\"dweb:/ipfs/QmRx895oFZrWYWbci3HqBTvYK5rsgypWSxMv7qLnvRb6Kh\"]},\"contracts/libraries/LibDiamond.sol\":{\"keccak256\":\"0xe411f7691d0554f8f01260065f249abda18eaa17697b626272c4e0554a2244b1\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://a116a9dcfd5dc8cef470e6c53c69bbaada930ebe9a7373a0a4a6c3924b77d7e8\",\"dweb:/ipfs/QmRxGt99hosAR5wxJpuTeXpyEV6DNb5fnxs76P2L2Bd34Y\"]},\"contracts/upgradeInitializers/DiamondInit.sol\":{\"keccak256\":\"0xf76905c86359d18cddc00feeade58afbfc73f59c53426793369855d1caf43199\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://3206657978908752b08bb5127c6f8bf370c515368eb8b4a29d6eae607db6b037\",\"dweb:/ipfs/Qmc324UFHNXZ9J5p6sQjKkP4oGngaxbJKntTAbF79wXygS\"]}},\"version\":1}"
        }
      }
    }
  }
}